الآن سوف أخبركم كيف تبدو عملية تطوير Unity في شركة gamedev صغيرة وكيف يمكننا تحسينها وأتمتة. لا يزال ، 2020 في الفناء ، يكفي القيادة باستخدام الماوس ...
حول الماوس ، هذه ليست مزحة. حتى وقت قريب ، كانت عملية اختبار الألعاب وتطويرها معنا تبدو مثل هذا:
الروبوت
- المطورين كتابة التعليمات البرمجية
- الذهاب نسخة أندرويد
- التحميلات إلى مجلد مشترك على Google Drive
- يقوم المختبر بتنزيل أحدث إصدار
- اختبارات ويلقي المهام في Redmine
- غوتو: الخطوة 1
إصدار iOS أصعب قليلاً:
دائرة الرقابة الداخلية
- المطورين كتابة التعليمات البرمجية
- الذهاب إلى مشروع Xcode
- يضيف البرنامج النصي Postbuild التعريب و SDK والمزيد إليه
- مشروع مترجم
- المؤرشفة
- تصديرها إلى ملف IPA (كل هذا لم يتم بسرعة كبيرة ، هاها)
- بعد ذلك ، يمكنك تحميل IPA إلى المجلد المشترك على Google Drive
- أو قم بالتحميل إلى TestFlight ، حيث يمكنك الانتظار بضعة أيام
- اختبار التنزيلات أحدث IPA
- يربط الجهاز ، يثبت التطبيق
- اختبارات ويلقي المهام في Redmine
- غوتو: الخطوة 1
هنا هذا الحزن. وإذا كانت بالنسبة لنظام Android ، فإن العملية لا تزال مقبولة إلى حد ما (لا) ، ثم لنظام التشغيل iOS - كل شيء طويل جدًا وغير مريح وخاطئ. بالإضافة إلى ذلك ، يتم إجراء معظم العمليات يدويًا بواسطة المطور (هنا حول الماوس) ويستغرق الوقت الذي يستغرقه التطوير في انتظار التجميع وتصدير مشروع Xcode وما إلى ذلك. من الضروري أيضًا مراعاة أن الجميع في نفس المكتب ، أي يمكنك الخروج لطرح / قول شيء قبل بدء هذه العملية الجهنمية بأكملها.
ولكن ، بشكل عام ، فإنه يعمل بطريقة أو بأخرى وإطلاق ألعاب :)
وهنا في الآونة الأخيرة ، مع تقديم
Leopotam ، وهو محب آخر
لبناء الدراجات وتحسين كل شيء ، قررت أتمتة هذه العملية. والنتيجة هي برنامج نصي BASH يمكنه:
- قم بتنزيل أحدث التغييرات من مستودع GIT
- تشغيل الاختبارات
- Build APK for Android ، في التطوير والإصدار
- بناء مشروع لنظام التشغيل iOS Xcode ، في تطوير وإصدار
- تجميعه
- الأرشيف والتصدير IPA
- توليد بيان واضح لذلك
- إنشاء صفحات HTML لتثبيت
- تحميل كل هذا إلى الخادم باستخدام sshpass
- ضع كل السجلات في مجلد منفصل
- إرسال إشعار برقية
وكل هذا في لمسة زر واحدة. بدون بدء الوحدة و Xcode. بطريقة أو بأخرى أكثر متعة ، هاه؟

الآن ، عند اكتمال التجميع ، يتلقى الاختبار إخطارًا في Telegram مع وجود رابطين لإصدارات Android و iOS. يبقى أن تمر من خلالهم وتثبيت التطبيق مباشرة من الجهاز. كما أنه يعمل تحت نظام التشغيل iOS ، ويتم إنشاء بيان خاص لهذا الغرض.
بشكل عام ، هذه هي تجربتي الأولى في برمجة BASH ، لذلك لا أعرف كيف هي ، في Feng Shui أم لا ، لكنها تعمل بشكل صحيح. في أي حال ، سيتم تحديث البرنامج النصي وتعديله لتلبية احتياجات المشاريع. فيما يلي بعض النقاط الرئيسية حول ما يجري القيام به:
كيفية البدء في بناء مشروع الوحدة لمنصة محددة
يصف
الدليل جميع الوسائط التي يمكن استخدامها للبناء. قم بتشغيل الإصدار APK:
$UNITY -batchmode -quit -projectPath "$PATH" -executeMethod Game.BuildActions.AndroidDevelopment -buildTarget android -logFile "$LOGS_PATH/android_development.log"
هنا
-buildTarget فقط يعين النظام الأساسي ، - و
executeMethod يستدعي وظيفة في مشروع Unity ، الذي يبدأ
الإنشاء بمعلمات معينة ، يبدو مثل هذا:
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); }
هنا يمكنك تعيين المعلمات الخاصة بك للبناء ، الحالة ، إلخ. يتم إرجاع النتيجة إلى البرنامج النصي BASH.
كيفية ترجمة وتصدير مشروع Xcode
بعد أن أصدرت Unity مشروع Xcode بنجاح ، يجب تجميعه وحفظه وتصديره إلى ملف IPA ، ويتم ذلك على النحو التالي:
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
options.plist هنا هو بيان خاص يشير إلى طريقة التصدير ، TeamID وأكثر من ذلك. يمكن الاطلاع على جميع المعلمات المتاحة عن طريق الأمر:
xcodebuild -help
مع كل هذه العمليات ، يتم تحديد
Unity-iPhone.xcodeproj القياسية
التي تنشئها Unity. إذا كان لديك
xcworkspace ، فأنت بحاجة إلى التحقق من توفره واستخدامه.
كيفية إرسال رسالة إلى Telegram من برنامج نصي BASH
تحتاج إلى العثور على
botFather بوت ،
وكتابته / بدء ، أو / newbot ، وملء الحقول وتلقي رسالة مع رمز مميز ورابط إلى الوثائق. لإرسال رسالة باستخدام الروبوت ، تحتاج إلى تشغيل الأمر التالي:
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
هنا
CHAT_ID هو معرف الدردشة حيث يمكن إرسال الرسائل. على سبيل المثال ، يمكنك إضافة الروبوت إلى المجموعة التي يجلس فيها المختبرون ، ومنحه حق قراءة الرسائل. بعد ذلك نفذ:
https://api.telegram.org/bot[BOT_TOKEN]/getUpdates
واحصل على هوية المجموعة والأعضاء الذين كتبوا شيئًا ما. بعد ذلك ، أشر إلى معرف المجموعة أو العضو المحدد الذي سترسل إليه. كيفية العثور على وتكوين إرسال عبر وكيل ، وأعتقد أنها ليست مشكلة.
وظائف أخرى ، وقوالب بيان التصحيح و HTML باستخدام
sed وتحميل الملفات الضرورية إلى الخادم باستخدام
sshpass .
المعلمات التي يمكن تغييرها بسرعة:
عرض ومصدر
بالطبع ، كل هذا يمكن القيام به من خلال نفس Gitlab CI / CD ، هناك بالفعل نصوص جاهزة لهذا الغرض ، تشغيل العدائين ، البناء والاختبار. باختصار ، استخدم البنية التحتية والآليات الجاهزة. لكنك بحاجة إلى الانتقال إليها وتكوينها أيضًا. ربما سنأتي إلى هذا ، في حين أنه أفضل بكثير مما كان عليه. علاوة على ذلك ، تم كتابة البرنامج النصي بأكمله بسرعة كافية.
جميع الأتمتة في عام 2020! الروبوتات حقن ، وليس رجل.