Sekarang saya akan memberi tahu Anda seperti apa proses pengembangan Unity di perusahaan kecil gamedev dan bagaimana kami meningkatkan dan mengotomasinya. Namun, 2020 ada di halaman, itu sudah cukup untuk mengemudi dengan mouse ...
Tentang mouse, ini bukan lelucon. Sampai saat ini, proses pengujian dan pengembangan game bersama kami terlihat seperti ini:
Android
- Pengembang menulis kode
- Akan Versi Android
- Unggah ke folder bersama di Google Drive
- Penguji mengunduh versi terbaru
- Menguji dan melempar tugas di Redmine
- Goto: Langkah 1
Versi iOS sedikit lebih rumit:
iOS
- Pengembang menulis kode
- Pergi ke proyek Xcode
- Script postbuild menambahkan lokalisasi, SDK, dan lainnya
- Proyek yang disusun
- Diarsipkan
- Diekspor ke file IPA (semua ini tidak dilakukan dengan sangat cepat, haha)
- Setelah itu, Anda dapat mengunggah IPA ke folder bersama di Google Drive
- Atau unggah ke TestFlight, tempat Anda bisa menunggu beberapa hari
- Penguji mengunduh IPA terbaru
- Menghubungkan perangkat, menginstal aplikasi
- Menguji dan melempar tugas di Redmine
- Goto: Langkah 1
Di sini ada kesedihan. Dan jika untuk Android, prosesnya masih bisa diterima (tidak), maka untuk iOS - semuanya sangat panjang, tidak nyaman dan salah. Selain itu, sebagian besar operasi dilakukan secara manual oleh pengembang (di sini tentang mouse) dan waktu yang mungkin dihabiskan untuk pengembangan diperlukan untuk menunggu kompilasi, ekspor proyek Xcode, dan sebagainya. Juga perlu untuk mempertimbangkan bahwa setiap orang di kantor yang sama, yaitu Anda bisa datang untuk bertanya / mengatakan sesuatu sebelum memulai seluruh proses neraka ini.
Tapi, secara umum, entah bagaimana itu berfungsi dan merilis game :)
Dan di sini baru-baru ini, dengan pengajuan
Leopotam , pencinta
konstruksi sepeda dan optimalisasi segalanya, saya memutuskan untuk mengotomatiskan proses ini. Hasilnya adalah skrip BASH yang dapat:
- Unduh perubahan terbaru dari repositori GIT
- Jalankan tes
- Bangun APK untuk Android, dalam pengembangan dan rilis
- Bangun proyek untuk iOS Xcode, dalam pengembangan dan rilis
- Kompilasi
- Arsipkan dan ekspor IPA
- Buat manifes untuk itu
- Hasilkan halaman HTML untuk diinstal
- Unggah semua ini ke server menggunakan sshpass
- Masukkan semua log dalam folder terpisah
- Kirim pemberitahuan telegram
Dan semua ini dengan satu sentuhan tombol. Tanpa memulai Persatuan dan Xcode. Entah bagaimana lebih menyenangkan, ya?

Sekarang, ketika perakitan selesai, tester menerima pemberitahuan di Telegram dengan dua tautan ke versi Android dan iOS. Masih harus melalui mereka dan menginstal aplikasi langsung dari perangkat. Ini juga berfungsi di iOS, dan manifes khusus dihasilkan untuk ini.
Sebenarnya, ini adalah pengalaman pertama saya dalam pemrograman BASH, jadi saya tidak tahu bagaimana itu, dalam Feng Shui atau tidak, tetapi itu berfungsi dengan baik. Bagaimanapun, skrip akan diperbarui dan dimodifikasi untuk memenuhi kebutuhan proyek. Berikut adalah beberapa poin penting tentang apa yang sedang dilakukan:
Cara mulai membangun proyek Persatuan untuk platform tertentu
Manual menjelaskan semua argumen yang dapat digunakan untuk membangun. Jalankan build APK:
$UNITY -batchmode -quit -projectPath "$PATH" -executeMethod Game.BuildActions.AndroidDevelopment -buildTarget android -logFile "$LOGS_PATH/android_development.log"
Di sini
-buildTarget hanya mengatur platform, dan -
executeMethod memanggil fungsi dalam proyek Unity, yang memulai build dengan parameter yang diberikan, tampilannya seperti ini:
static void AndroidDevelopment () { PlayerSettings.SetScriptingBackend (BuildTargetGroup.Android, ScriptingImplementation.IL2CPP); PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.Android, "DEV"); EditorUserBuildSettings.SwitchActiveBuildTarget (BuildTargetGroup.Android, BuildTarget.Android); EditorUserBuildSettings.development = true; EditorUserBuildSettings.androidETC2Fallback = AndroidETC2Fallback.Quality32Bit; BuildReport report = BuildPipeline.BuildPlayer (GetScenes (), ANDROID_DEVELOPMENT_FILE, BuildTarget.Android, BuildOptions.None); int code = (report.summary.result == BuildResult.Succeeded) ? 0 : 1; EditorApplication.Exit (code); }
Di sini Anda dapat mengatur parameter Anda sendiri untuk bangunan, kondisi, dll. Hasilnya dikembalikan ke skrip BASH.
Cara mengompilasi dan mengekspor proyek Xcode
Setelah Unity berhasil mengeluarkan proyek Xcode, ia harus dikompilasi, diarsipkan, dan diekspor ke file IPA, ini dilakukan seperti ini:
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -quiet > "$LOGS_PATH/ios_build_release.log" 2>&1
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -scheme "Unity-iPhone" archive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -quiet > "$LOGS_PATH/ios_archive_release.log" 2>&1
xcodebuild -exportArchive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -exportOptionsPlist "$IOS_RELEASE/options.plist" -exportPath $IOS_RELEASE -allowProvisioningUpdates -quiet > "$LOGS_PATH/ios_export_release.log" 2>&1
Di sini
options.plist adalah manifes khusus yang menunjukkan metode ekspor, TeamID, dan lainnya. Semua parameter yang tersedia dapat dilihat oleh perintah:
xcodebuild -help
Dengan semua operasi ini,
Unity-iPhone.xcodeproj standar yang dihasilkan Unity ditentukan. Jika Anda memiliki
xcworkspace , maka Anda perlu memeriksa ketersediaan dan penggunaannya.
Cara mengirim pesan ke Telegram dari skrip BASH
Anda perlu menemukan bot
BotFather , menulis / mulai, atau / newbot, mengisi kolom dan menerima pesan dengan token dan tautan ke dokumentasi. Untuk mengirim pesan menggunakan bot, Anda harus menjalankan perintah berikut:
curl $BOT_PROXY https://api.telegram.org/bot$BOT_TOKEN/sendMessage -m 60 -s -X POST -d chat_id=$CHAT_ID -d text="$1" > "$LOGS_PATH/bot.log" 2>&1
Di sini
CHAT_ID adalah pengenal obrolan tempat mengirim pesan. Misalnya, Anda dapat menambahkan bot ke grup tempat penguji duduk, berikan hak untuk membaca pesan. Setelah itu jalankan:
https://api.telegram.org/bot[BOT_TOKEN]/getUpdates
Dan dapatkan ID grup dan anggota yang menulis sesuatu. Setelah itu, tunjukkan ID grup atau anggota tertentu kepada siapa akan dikirim. Cara menemukan dan mengkonfigurasi pengiriman melalui proxy, saya pikir tidak masalah.
Fungsi lainnya, templat templat manifes dan HTML menggunakan
sed dan unggah file yang diperlukan ke server menggunakan
sshpass .
Parameter yang dapat diubah dengan cepat:
Demo dan sumber
Tentu saja, semua ini bisa dilakukan melalui Gitlab CI / CD yang sama, sudah ada skrip yang sudah jadi untuk ini, jalankan runner, build dan test. Singkatnya, gunakan infrastruktur dan mekanisme yang sudah jadi. Tetapi Anda harus pindah ke sana dan juga mengkonfigurasinya. Mungkin kita akan membahas ini, sementara itu jauh lebih baik daripada sebelumnya. Apalagi seluruh naskah ditulis cukup cepat.
Semua otomatisasi pada tahun 2020! Robot menyuntikkan, bukan pria.