افعل ذلك بنفسك فلاش الرسوم المتحركة في Unity3D. الجزء الأول ، غنائي

في هذه السلسلة من المقالات ، سأتحدث عن كيف ولماذا قررنا إنشاء حل خاص بنا لاستيراد الرسوم المتحركة الفلاش إلى الوحدة ، وحول التحسينات والمطبخ الداخلي للمكون الإضافي الناتج. وأيضًا في البرنامج: قصة حول الدواخل في تنسيق فرنك سويسري ، وميزات ملحق محرر Unity وعمومًا عن الرسوم المتحركة بشكل عام. أطلب خفض!




مقدمة


في بداية أي مشروع توجد خيارات الاختيار التكنولوجي للعديد من أجزائه. جزء واحد من هذا القبيل هو نظام الرسوم المتحركة. هناك العديد من المتغيرات التي يعتمد عليها هذا الاختيار. أولاً ، ما هي الرسوم المتحركة التي اعتدت عليها (تستطيع) العمل بها أو ما هي أدوات هذه الرسوم المتحركة التي يسهل عليك العثور عليها. من الواضح أنه ليس من المنطقي اختيار منتج محدد للغاية ، لأنه إذا غادر الموظفون الحاليون لسبب أو لآخر (حافلة مفاجئة؟) ، فسيكون من الصعب للغاية استبدالهم ، فسيتوقف جزء من المشروع ببساطة إلى أجل غير مسمى ، وهو في حالة وجود منتج تجاري يمكن أن تكون مكلفة للغاية. المتغير الثاني هو أكثر تقنية: الاندماج في المحرك الخاص بك. هل هناك أي حلول لطرف ثالث وجودة هذه الحلول ، هل هناك أي قوة وقدرة على إنشاء حلقي الخاص ، وكذلك الإنتاجية والراحة لكل ما سبق. حسنًا ، المتغير الثالث هو إمكانات هذه الأداة ، لأنه إذا كنت ، نزيفًا في الأنف ، تحتاج إلى حركيات معكوسة ، فمن الغريب تمامًا اختيار الرسوم المتحركة غير الهيكلية.


أنواع الرسوم المتحركة 2D


النظر في الخيارات الأكثر شعبية لتنفيذ الرسوم المتحركة في الألعاب. سأتحدث فقط عن الرسوم المتحركة ثنائية الأبعاد والرسوم المتحركة ثلاثية الأبعاد - وهذا موضوع محادثة مختلفة تمامًا ، وأساليب وأدوات. يمكنك تخطي قسم دون خوف إذا كنت بارعًا في هذه الأمور (لن يكون هناك أي كشف ولا أعطال) ، أو إذا كنت تهدف إلى إلقاء نظرة على ميزات الصور المتحركة فقط ، فهي أدناه.


الرسوم المتحركة الإطار


يتم فتح مراجعتنا البسيطة مع أبسط وأقدم أنواع الرسوم المتحركة: الرسوم المتحركة بالإطار. يتم تمثيل كل إطار من هذه الرسوم المتحركة بواسطة صورة منفصلة ، مع تغيير سريع ينشأ فيه وهم بالحركة.


الايجابيات:


تنفيذ أولي ، عادة في أي محرك. أي تعقيد وأسلوب للرسوم المتحركة ، على الأقل وضع وإدراج فيلم في إطارات (من الناحية النظرية ، بالطبع). أي أدوات: يمكن لأي شيء تقريبًا أن يمنحك سلسلة من الإطارات التي ، إذا لزم الأمر ، يمكن لصقها في أطلس نسيج واحد.


سلبيات:


الطرح الرئيسي هو ، بطبيعة الحال ، حجم هذه الأشياء في الذاكرة. بطبيعة الحال ، هناك كل أنواع الحيل مثل قطع الإطارات في الكتل وإعادة الاستخدام اللاحقة للكتل المكررة ، وتحميل الإطارات في الخلفية من القرص والتحرير الموضح بالفعل ، وغيرها. لكن هذه الحيل لها عيوبها. يؤدي تشريح البلوك - الملائم فقط للفن بكسل وتحميل الخلفية - إلى إنشاء حمل إضافي على القرص ، ويشغل مساحة كبيرة على هذا القرص نفسه ، ويزداد حجم لعبتك ، بالإضافة إلى مقدار البيانات التي تم تنزيلها لبدء أو التحديث.


المجموع:


مناسبة فقط لصغر حجم وعدد الرسوم المتحركة للإطارات ، وهي مثالية لفن البيكسل وأسلوب ألعاب retro la la.


فيديو رسوم متحركة


كما apotheosis من الجنون من الرسوم المتحركة بالإطار ، تظهر الرسوم المتحركة الفيديو. ونعم ، يتم استخدامه وحتى في بعض الأحيان إلى المكان. قمنا بتطبيق هذا للألعاب في النوع " وجوه خفية " للرسوم المتحركة الكبيرة والمعقدة ، وكذلك للمشاهد المقطوعة بلمسة من الواقعية. بمساعدة برامج الترميز مثل theora و vp8 ، يمكنك تنفيذ رسوم متحركة للفيديو مقبولة (وحتى مع قناة ألفا ) بنفسك.


الإيجابيات هنا ، بالطبع ، هي أنه يمكنك في مثل هذه الرسوم المتحركة إظهار كل ما يرغب به قلبك ، من مشاهد موجهة بمشاركة ممثلين حقيقيين ، إلى معارك ثلاثية الأبعاد. العيوب هي الحمل البري على وحدة المعالجة المركزية عند فك تشفير هذا ، وبالطبع جودة الصورة. يمكنك العثور على حل وسط بين الجودة والأداء في حالات محدودة للغاية ومحددة ، كما هو الحال في الألعاب المذكورة أعلاه للعنصر المخفي ، على سبيل المثال.


بشكل عام ، إنها ليست مناسبة للجميع وبعيدة عن الجميع ، أو بالأحرى أبدًا ، إذا لم نفكر في مشاهد مقطوعة - حيث هو المكان المناسب لمثل هذه "الرسوم المتحركة". لا يمكن أن يتفاخر التنفيذ الجيد لمثل هذه الرسوم المتحركة بالبساطة ، فهناك الكثير من الفروق الدقيقة والحيل ، سواء من حيث جودة صورة المخرجات أو الأحمال المستلمة على المعالج المركزي. نظرًا للخصوصية ، هناك عدد قليل من التطبيقات الجاهزة ، فهي لا تختلف في الجودة أيضًا ، أو أنها تكلف الكثير من المال (مرحبًا ، Bink_Video ) ، والكثير منهم يكتبون تطبيقاتهم الخاصة.


الرسوم المتحركة الهيكل العظمي


لذلك وصلنا إلى الأنواع الشعبية والحديثة للرسوم المتحركة ثنائية الأبعاد. تلتقط الرسوم المتحركة الهيكلية أكثر فأكثر قلوب وعقول المطورين في مجال 2d ، لتصبح الرسوم المتحركة القياسية للألعاب. إنه لأمر مضحك أنه جاء على نطاق واسع في 2d مؤخرًا نسبيًا ، على عكس الأبعاد الثلاثية ، حيث ظهر خلال وقت King Peas ، عندما كتب الآباء Half-Life . جوهر الرسوم المتحركة الهيكل العظمي ، الغريب ، هو في الهيكل العظمي ، الذي يخلق الرسوم المتحركة من العظام متصلة مع بعضها البعض عن طريق هيكل شجرة. تعلق الشظايا على العظام في شكل صور منفصلة. يتم تعيين الهيكل بأكمله في الحركة من خلال تشريد وتناوب العظام بالنسبة لبعضها البعض. تتبع عمليات النزوح وتناوب العظام في الهيكل العظمي الجدول الزمني العام للرسوم المتحركة.


المزايا واضحة: لا نحتاج إلى تخزين كل إطار من الرسوم المتحركة في صورة صور منفصلة ، فقط الأجزاء (أذرع وأرجل الشخصية ، على سبيل المثال) ، والتي سنقوم بتحريك عظام الهيكل العظمي. هناك تطبيقات ممتازة لهذا النوع من الرسوم المتحركة مع أوقات تشغيل للأنظمة الأساسية والمحركات ، بسعر معقول للاستخدام أو حتى مجاني: Spine ، Spriter ، Anima2D ، DragonBones وغيرها. بفضل الهيكل العظمي وميزاته ، يمكن تحقيق سلاسة هائلة من الرسوم المتحركة عن طريق الاستيفاء من مواضع عظامها ، بالإضافة إلى مزج التحولات من الرسوم المتحركة إلى الرسوم المتحركة وحتى مزج اثنين من الرسوم المتحركة المختلفة: التصوير على المدى ، وإطلاق النار أثناء التسلل ، وما إلى ذلك. لن أدرج كل إمكانيات الرسوم المتحركة الهيكلية ، فهناك الكثير منها وهي رائعة جدًا. من الأفضل أن أقدم رابطًا حيث يتم عرضها بوضوح مع الصور والأوصاف على موقع Spine على الويب .


يبدو وكأنه رصاصة فضية ، ولكن لا. كان هناك بعض السلبيات. قم بإجراء حجز على الفور للعديد من المشاريع والرسوم المتحركة - قد لا تكون هذه العيوب موجودة. إذا كانت الرسوم المتحركة الهيكلية تناسبك - إنها رائعة ، استخدمها ، فهي جميلة وحديثة.


دعنا نعود إلى السلبيات. هناك مرحلة إضافية في إنشاء الرسوم المتحركة وهي rig (أو تزوير ، مثل العديد من المصطلحات في صناعتنا ، كان سكانها ينالون الجنسية الروسية). خلق هيكل عظمي جدا وتجليد العظام إلى شظايا. إذا كان الكائن يحتوي على رسم متحرك واحد ، وليس عدة رسوم ، مثل ، على سبيل المثال ، طابع اللعبة في النوع " Platformer " ، فستكون المرحلة غير ضرورية تمامًا. ليست كل الرسوم المتحركة متحركة بشكل مريح مع العظام. هناك العديد من الرسوم المتحركة التي تظهر فيها العظام في طريقها وبدونها تصبح أكثر ملاءمة وأسرع ، سواء من حيث الإبداع أو من حيث أداء اللعبة. عنصر منفصل سوف أخرج المتخصصين في السوق. يتزايد عددهم بسبب شعبية الرسوم المتحركة الهيكلية ، ولكن لا يزال من الصعب العثور عليهم في فريقك. يؤثر أيضًا انتشار الأدوات والأدوات ، حيث يتم استخدام شخص ما واستخدامه لشخص آخر ، من الضروري إعادة التدريب أثناء التنقل ، مما يخلق صعوبات إضافية في العثور على الموظفين وتدريبهم.


الجدول الزمني الرسوم المتحركة


أخذت هذا النوع من الرسوم المتحركة إلى النهاية ، ليس لأنه أفضل من أي شخص آخر ، ولكن لأن هذه هي بالضبط نفس رسوم الفلاش حول الدواخل التي سنناقشها في الجزء الفني من المقال. Flash ليس الممثل الوحيد لهذا النوع من الرسوم المتحركة ، ولكنه بالتأكيد قائدهم ، لذلك سيتم وصف كل شيء فيما يتعلق به. تتكون الرسوم المتحركة للخط الزمني من الأجزاء التي يتم تحريكها في طبقات منفصلة على خط زمني. تقريبا نفس الشيء الذي رأيناه في الرسوم المتحركة الهيكلية ، ولكن من دون هيكل عظمي. وفقًا للإطارات الرئيسية في المخطط الزمني ، يمكننا نقل وتناوب واستبدال ورسم شظايا جديدة في هذه الإطارات ، وبطبيعة الحال ، استيفاء الواصلة ، والتوسيع والتدوير بينها. أي أننا لا ننقل العظام التي تحتوي على الشظايا المرفقة ، ولكن الشظايا نفسها. بالطبع ، فإننا نفقد العديد من الفرص التي تتيحها لنا الرسوم المتحركة الهيكلية ، ولكن ليس الجميع بحاجة إليها. في المقابل ، نكتسب الآخرين ، مثل:


  • القدرة على رسم وإدراج شظايا جديدة في منتصف الرسوم المتحركة.
  • لا تلاعب ، لا عظام تتداخل في بعض الأحيان فقط ؛
  • يعد Adobe Flash (أصبح الآن Adobe Animate ) أداة الرسوم المتحركة الأقدم والأكثر إثباتًا منذ سنوات ، حيث يمتلك عدد كبير جدًا من رسامي الرسوم المتحركة ، بطريقة أو بأخرى ؛
  • القدرة على استخدام الرسوم المتحركة القديمة عند ترجمة مشاريع الفلاش إلى الوحدة ، بما في ذلك الرسوم المتحركة المصنوعة في الرسومات المتجهة ، وليس فقط في الصور النقطية .

هل فلاش ميت؟ كلاعب في المتصفحات - بالتأكيد ، كأداة للرسوم المتحركة - على قيد الحياة وبصحة جيدة ، لا توجد بدائل وليس من المتوقع. سلبيات؟ بالطبع ناقص الرئيسي هو أن هذا ليس الرسوم المتحركة الهيكل العظمي ، هاه. نحن محرومون من فرصة مزج الرسوم المتحركة مع بعضهم البعض ، وليس لدينا حركات عكسية وقدرات مماثلة متأصلة في الهيكل العظمي فقط. ولكن لدينا جداول زمنية متداخلة في بعضها البعض ، وكذلك أقنعة خطوط المسح والناقلات! جميع الرسوم المتحركة الحب الأقنعة! تجدر الإشارة هنا إلى أنه في Spine ، ظهرت قدرات القطع مؤخرًا ، ولكن حتى الآن فقط هندسية ومحدودة للغاية مقارنة بأقنعة الفلاش.


ملخص نوع الرسوم المتحركة


بطبيعة الحال ، لم أذكر كل أنواع الرسوم المتحركة ، فقط الصور الرئيسية. على سبيل المثال ، تُركت الرسوم المتحركة الإجرائية المزعومة ، عندما يتم تشغيل الكائنات أو شظاياها فقط عن طريق الكود ، لكن لا يمكن تباينها مع الآخرين ، ولم أكن أرغب حقًا في تضخيم المقالة ، فمن الأفضل رؤية شيء أكثر تخصصًا في الرسوم المتحركة لاستكمال الصورة.


لتلخيص. لا توجد رصاصة فضية ، كما هو الحال دائمًا وفي كل شيء تقريبًا. تحتاج إلى اختيار المشروع والمهام والأشخاص. بعد كل شيء ، لا أحد يقيد أي شخص من استخدام نوع واحد من الرسوم المتحركة. في كل مكان ، هناك مشاريع تستخدم فيها جميع أنواع الرسوم المتحركة في نفس الوقت والجميع سعداء. قص المشاهد - الفيديو ، الشخصيات - الهيكل العظمي ، المشهد - الجدول الزمني ، رحلات بواعث أنظمة الجسيمات - الإجرائية ، الجزيئات نفسها في أنظمتها - إطار تلو الآخر. نحن نأخذ الأفضل من كل نوع.


عذاب الاختيار وقرار الكتابة الخاصة بك


حسنًا ، لأسباب موضوعية ، قررنا أننا نحتاج إلى رسوم متحركة فلاشية لمشروعنا. السؤال الذي يطرح نفسه حول دمجهم في المحرك. بعد تجربة العديد من خيارات المكونات الإضافية ، استقرنا على خيار يناسبنا بقدراته ، وكان حياً ودعماً ، وكان لدينا أيضًا سعر غير كامل تمامًا للحصول على ترخيص inter-license ، ولكن يمكنك تحمل منتج جيد. لن أذكر أي أسماء عن قصد ، حتى لا أقوم بأي إعلان أو إعلان معارض لأي شخص.


مع هذا البرنامج المساعد ، عشنا لمدة عام تقريبًا من التطوير ، تم خلالها توضيح التفاصيل ، والتي لم نتمكن من استخدامها أكثر. وهي نوعية دمجها في الوحدة. كل هذا أدى إلى أخطاء خطيرة وبصراحة لا يمكن أن يقال إنها سهلة وسريعة وبدون قتال تم إصلاحه من جانب المطورين ، وأداء فظيع على الأجهزة المستهدفة ، وما زال لدينا مستوى iPad 2 . حدث هذا بسبب الاندماج الأمي في محرك معين ، والجهل في تفاصيله والمخاطر ، كنا أكثر من راض عن الاحتمالات ، لكن أكواد المصدر ، حتى في أمر شخصي ، رفضت فتح ، وقررت أن يكتب قرارنا.


حصلت على بعض التجارب الناجحة في كتابة ملحقات Unity وكان لدي خبرة قليلة في تحويل رسوم فلاش المتحركة إلى تنسيقاتي. هذا الأخير كان منذ فترة طويلة ، ولكن تم استدعاء شيء. في نفس المكان ، تقرر أن يكتب كل شيء كمشروع منزلي ، حتى لا يعتمد على المشروع أو على الشركة التي أعمل بها ، ولكي أكون أمينًا ، أردت أيضًا أن يكون لدي منتج خاص بي. لذلك ، مسلحًا بمواصفات 250 فرنك سويسري بتنسيق ، دخلت المعركة.


خيارات التصدير


بادئ ذي بدء ، يجدر مناقشة خيارات تصدير الرسوم المتحركة من محرر الفلاش. هناك العديد منهم ، بطبيعة الحال مع إيجابيات وسلبيات. دعنا نذهب من خلال أهمها.


تنسيق .xfl


في محرر فلاش الرسوم المتحركة ، من الممكن حفظ مصدر الرسوم المتحركة بتنسيق .xfl غير مضغوط بدلاً من تنسيق .fla المغلق ، والذي يتم تقديمه افتراضيًا. التنسيق بسيط للغاية ولكنه غير موثق. يتكون من عدة دلائل متداخلة ومجموعة من ملفات .xml ، حيث يتم وصف جميع حالات القصاصات المخزنة في الداخل. تنسيق الوصف بسيط وواضح ، فيما يلي مثال:


static_clip.xml


<DOMSymbolItem name="static_clip" itemID="5c719f28-00000051" lastModified="1550950184"> <timeline> <DOMTimeline name="static_clip"> <layers> <DOMLayer name="Layer_1" color="#00FFFF" current="true" isSelected="true"> <frames> <DOMFrame index="0" keyMode="9728"> <elements> <DOMBitmapInstance selected="true" libraryItemName="bitmap.png"/> </elements> </DOMFrame> </frames> </DOMLayer> </layers> </DOMTimeline> </timeline> </DOMSymbolItem> 
رابط للمصدر

هنا لدينا مقطع ثابت static_clip مع طبقة واحدة Layer_1 وإطار واحد ، حيث توجد صورة نقطية باسم bitmap.png .

movie_clip.xml


 <DOMSymbolItem name="movie_clip" itemID="5c719f30-00000053" lastModified="1550950713"> <timeline> <DOMTimeline name="movie_clip"> <layers> <DOMLayer name="Layer_1" color="#00FFFF" current="true" isSelected="true"> <frames> <DOMFrame index="0" duration="4" tweenType="motion" motionTweenSnap="true" keyMode="22017"> <elements> <DOMSymbolInstance libraryItemName="static_clip"> <matrix> <Matrix tx="-50" ty="-50"/> </matrix> <transformationPoint> <Point x="28.5" y="27.5"/> </transformationPoint> </DOMSymbolInstance> </elements> </DOMFrame> <DOMFrame index="4" tweenType="motion" motionTweenSnap="true" keyMode="22017"> <elements> <DOMSymbolInstance libraryItemName="static_clip" centerPoint3DX="128.5" centerPoint3DY="127.5"> <matrix> <Matrix tx="100" ty="100"/> </matrix> <transformationPoint> <Point x="28.5" y="27.5"/> </transformationPoint> </DOMSymbolInstance> </elements> </DOMFrame> </frames> </DOMLayer> </layers> </DOMTimeline> </timeline> </DOMSymbolItem> 
رابط للمصدر

نحن هنا نصف مقطع الرسوم المتحركة movie_clip ، الذي يحتوي على إطارين أساسيين مع الفهارس 0 و 4 ، على التوالي. تحتوي الإطارات على مقطع ثابت static_clip عند الإحداثيات (-50;-50) و (100;100) . بين الإطارات هناك حركة tween (الرسوم المتحركة الإجرائية ، في حالتنا هي مجرد نقل ، دون تحجيم وتدوير) ، على التوالي ، يمكن الحصول على موضع مقطع ثابت بين الإطارات الرئيسية عن طريق الاستيفاء الخطي للإحداثيات من هذه الإطارات.

وبطبيعة الحال ، سيكون كل شيء في صورة رسوم متحركة حقيقية ، مهم ... أكثر تعقيدًا وأكثر حجمًا ، لكن يمكنك تحديد كل ذلك دون توثيق. يبدو أنه هنا هو السعادة. وأنا أعرف العديد من المشاريع والشركات التي نجحت في هذا الطريق بنجاح ، ولكن مع بعض القيود والصعوبات. هذه الصعوبات هي ذبابة في مرهم .xfl ، وهي:


  1. التوينز (المراهقون ، سكانها ينالون الجنسية الروسية قدر الإمكان) مختلفون للغاية ، كلاهما بسيطان: مع الاستيفاء الخطي ، والأكثر تعقيدًا: مع الوظائف والرسوم البيانية المعرفة من قبل المستخدم لهذا الاستيفاء ، وتحويل رسومات المتجهات على التوائم ، مع قواعدها الخاصة فقط للماكروميديا ​​والأدوبي ؛
  2. الرسومات المتجهات ، مثل كل الرسوم المتحركة باستثناء الرسومات النقطية ، موصوفة في شكل نص ، على سبيل المثال . وفقًا لذلك ، من الضروري أن تكتب أداة التنقيط الخاصة بك ، والتي ، نظرًا لتعقيدات وميزات المتجه في الفلاش ، غير ممكنة في الممارسة ؛
  3. قواعد لعب الرسوم المتحركة ، بما في ذلك الرسوم المتداخلة ، تحتاج إلى التفكير بنفسك من نقطة الصفر ، وليس هناك وثائق لها ومتى يجب أن يظهر الإطار ، وما الذي يجب تعديله في أي مواقف ، وما يجب تركه دون الاستيفاء - يبقى تحديدها بالتجارب الطويلة ، ومحاولة تغطية جميع الحالات المحتملة في يعمل الاختبار ، وهو تمرين غير تافه للغاية لحل عام ، وليس حلًا خاصًا.

ليست كل هذه الصعوبات في هذا النهج ، لكنها كافية لفهم أن الحل العام مناسب فقط مع تحفظات قوية. ذات مرة ، سلكت هذا المسار في أحد المشاريع التي شاركت فيها. كانت هناك مشاهد مقطوعة للفلاش ، مع التوائم الكلاسيكية (بدون قواعد الاستيفاء المخصصة والوظائف الخاصة لهذا الاستيفاء) ، رسومات نقطية فقط وبدون ميزات متقدمة أخرى يوفرها محرر الفلاش. تمت كتابة الحل الخاص بسرعة وكفاءة ، ولكن كان يجب أن تكون الرسوم المتحركة محدودة للغاية بحيث لا يستخدمون أي شيء أكثر أو أقل تعقيدًا. النهج له الحق في الحياة ، وهناك العديد من المكتبات بدرجات متفاوتة من الإهمال ، بناءً على ذلك ، ولكن ، كما قلت ، مع الكثير من التحفظات والقيود.


مخطوطات. jsfl


خيار آخر ، شبه عمل ، هو الحصول على معلومات حول الرسوم المتحركة الخاصة بنا. تتيح لك البرامج النصية jsfl توسيع محرر الفلاش ، والتفاعل مع بيئته ، وتغيير الرسوم المتحركة ، وبالطبع الحصول على جميع المعلومات اللازمة حول الجداول الزمنية والطبقات والمقاطع والإطارات فيها. ويستخدمه أيضًا الرسوم المتحركة لأتمتة العديد من الإجراءات ، لكن هذه قصة من كتاب مجاور. بشكل عام ، يتم منح النهج جميع مساوئ النهج السابق ، لذلك أنا لا أتطرق إلى ذلك ، يمكنني فقط أن أقول أنه يمكنك تفريغ الرسوم المتحركة بالكامل لدينا في شكل ، على سبيل المثال ، الرسوم المتحركة بالإطار ، وهذه ليست طريقة Jedi حقيقي (ولكن ، بطبيعة الحال ، يحدث في بعض المشاريع). سنعود إلى هذه النصوص في النهج الذي اخترته: لتنقيط الرسومات المتجهة وتحسين الرسوم المتحركة المقسمة إلى صفحات.


تطبيق الهواء


ولكن هذا النهج يعمل بالفعل بالفعل ويمكن استخدامه كما ينبغي. لم أختره ، ولكن كمرجع سأقدم هذا الخيار. جوهر النهج هو أننا نقوم بإنشاء تطبيق AIR على الفلاش نفسه ، أو على جماليات ، على Haxe ، على سبيل المثال ، والتي سوف تحصل على جميع المعلومات من الرسوم المتحركة التي تم تجميعها بالفعل في تنسيق فرنك سويسري. نحن نلعب الرسوم المتحركة كل على حدة داخل تطبيقنا ، ونحصل على جميع معلومات الإطار ونحفظه بالتنسيق الذي نحتاجه لوقت التشغيل لدينا. هنا يتم حل جميع المشاكل المذكورة أعلاه:


  • لا حاجة إلى تنقيط رسومات المتجهات ، فسوف يقوم وقت تشغيل الفلاش بعمل ذلك من أجلنا ، يبقى فقط للحصول على هذه المعلومات وحفظ النتيجة النقطية لشظايا المتجهات ؛
  • لا حاجة إلى الخروج بقواعد اللعب والتعامل مع الاستيفاء المزدوج المخصص ، يعرف مشغل الفلاش الموجود داخل تطبيق AIR بالضبط كيفية القيام بذلك وسنفعل كل شيء تقريبًا لنا ؛

على سبيل المكافأة ، نحصل على فرصة استخدام البرامج النصية للإطارات في الرسوم المتحركة (جميع أنواع play() ، gotoAndPlay() وغيرها من gotoAndPlay() ، وبعض الرسوم المتحركة يحبونهم كثيرًا). الجانب السلبي هو عدم القدرة على تصدير الرسوم المتحركة التي يتم حلقاتها إلى الفلاش نفسه ، ولكن هذا لا يهم ، حيث يمكنك بالفعل تكرارها في وقت التشغيل ، واطلب من الرسوم المتحركة إعداد كل شيء لذلك.


تجدر الإشارة إلى أنني متأكد من أن كل شيء سيكون أكثر تعقيدًا مما يبدو في الوصف الخاص بي ، حيث إنني شخصياً لم أذهب إلى هناك ، لذلك لا يمكنني إخبارك بالتفاصيل. دع أولئك الذين اجتازوا هذا المسار يشاركونهم تجاربهم ، بكل سرور نقرأ عن أفراحهم ومحنتهم!


لاعب فلاش الخاصة


ربما هذا هو الخيار الأكثر صدقًا وواضحًا وواضحًا للجميع ، ولكن أيضًا الخيار الأكثر صعوبة. في النهاية ، هذا ما يفعله مشغل الفلاش الحقيقي ، والذي لدى معظمنا في متصفحنا المفضل كإضافة إليه. ممثلون مشهورون لهذا النوع: gameswf و ، نمت من سابقتها ، على شكل . كلاهما مات الآن. ومن المثير للاهتمام أنه تم استخدامها بشكل أساسي لتنفيذ واجهة المستخدم الرسومية في العديد من المشاريع ، بما في ذلك AAA . لكننا مهتمون بالهيكل الداخلي ، وليس التطبيقات المحددة للمكتبات الميتة.


أي مشغل فلاش يحترم نفسه لديه الأشياء التالية على الأقل:


  • محلل شكل فرنك سويسري.
  • مكافحة ناقلات الرسومات.
  • تنفيذ جهاز افتراضي لتشغيل أكشن أكشن
  • تنفيذ مكتبة قياسية لرمز المستخدم ؛

يصرخ كل من هذه النقاط حول ما إذا كان من الممكن تنفيذه ، فسيتعين عليك تغيير أكثر من فريق لهذه المهمة وتبادل عدة سنوات من التطوير إلى الحد الأدنى من الإصدار. حتى تنفيذ جزء صغير ، يكفي لتشغيل شيء ما ، سيستغرق الكثير من الوقت ، وسوف تتضاعف هذه الصعوبات الإضافية ، في شكل أجزاء كثيرة غير موثقة من كل هذا الخط ، بالفعل.


نعم ، الشبكة مليئة بمحاولات تنفيذ كل جزء من هذه الأجزاء ، بدرجات متفاوتة من الإهمال والتفاقم. لكن ليس من الممكن حتى أخذ هذه التطورات كأساس ، إلا أن الأمر سيستغرق سنوات لالتقاط الأخطاء من هناك ، وكتابة اختبارات الوحدات غير المكتوبة قبل إدراك أنه لن يكون من الممكن تحقيق كل شيء بشكل كامل. أولئك الذين حاولوا استكمال gameswf بالقدرات اللازمة يفهمون ما أتحدث عنه. يتعين على مشغل الفلاش الصادق أيضًا تنقيط رسومات المتجهات بشكل غير مسبق ، ولكن في وقت التشغيل ، مما سيؤثر على مثل هذا الأداء الذي لا يمكن لكل مشروع البقاء عليه. أغتنم هذه الفرصة للتعبير عن تحياتي للناجين الذين استخدموا scaleform على الأجهزة المحمولة. بشكل عام ، الطريقة الأكثر قاتمة واليأس ، وليس خيارنا.


نحن الجمع بين النهج


إذن جاء أخيرًا إلى خياري. بعد أن درست الطرق الممكنة ، تم وضع مجموعة مثيرة للاهتمام بالنسبة لي. بسيطة نسبيا للتنفيذ ، مجدية لشخص واحد في الحجم وفي نفس الوقت وظيفية بما يكفي لتغطية احتياجات معظم الرسوم المتحركة ثنائية الأبعاد.


أولاً ، سوف نستخدم الرسوم المتحركة التي تم تجميعها في فرنك سويسري حتى لا نتوصل إلى خيارات تشغيل متعددة وتقريباً لا نخمن أبدًا كيف يعمل مشغل الفلاش من الداخل ، نظرًا لأننا لا نستطيع تغطية جميع الحالات المحتملة ، لكننا نحاول كتابة حل عام. أيضا ، يتخلص محرر الفلاش من جميع التوائم التي استخدمت في الرسوم المتحركة ، وهو يمثل بذكاء ، في فرنك سويسري مترجم ، المواضع العارية للشظايا.


ثانيا ، نحن نحظر استخدام البرامج النصية في الرسوم المتحركة. نعم ، هذا مطلب صعب ومحزن للغاية ، لكن ليس لدي فريق من المبرمجين لتطبيق آلة افتراضية صادقة ومكتبة معيارية كان علي أن أكتبها عمياء تقريبًا. هنا ، بالطبع ، ناقص منهجي مرئي مقابل النهج الذي تم فيه استخدام تطبيق AIR ، حيث أنه في المرحلة الأخيرة يمكن استخدام بعض البرامج النصية لتشغيل الرسوم المتحركة الداخلية. من ناحية أخرى ، لا تتداخل مع إنشاء رسوم متحركة جيدة. لنقل المعلومات المخصصة من الرسوم المتحركة إلى اللعبة ، يمكنك استخدام ما يسمى frame labels ، والتي ستكون مرئية من التعليمات البرمجية ، وكذلك تعليق الأحداث المخصصة على إطارات محددة في شكل وظائف رد الاتصال التي تستخدم بالفعل وقت التشغيل.


ثالثًا ، نتخلص من كتابة رسومات الخطوط المتجهات الخاصة بنا ، لعدم القدرة على كتابة واحدة للحالة العامة ، لتغطية جميع خيارات وقدرات المتجه في الفلاش. بدلاً من ذلك ، سنقوم بتنقيط الرسومات إلى (!) تجميع باستخدام برنامج نصي jsfl. في الوقت نفسه ، بمساعدة هذا البرنامج النصي ، سنقوم بتحسين رسومات المتجهات الخاصة بنا من خلال دمج القصاصات الثابتة في صورة واحدة ، أو تقليل أو زيادة الصور النقطية الناتجة لاحتياجاتنا: الجودة و / أو الأداء. هنا يجدر أيضًا تذكر الخيارات المختلفة لجودة / دقة الفن للأجهزة ذات الكثافة المختلفة للبكسل على الشاشة (على سبيل المثال ، HD و SD art).


ختام الجزء الغنائي


بهذا يختتم الجزء الأول من المقال. في الجزء الثاني ، ستكون هناك تفاصيل حول التنفيذ الفني ومقاطع من الرموز والصور (!) والتحسينات والحيل والحيل. قريباً على شاشاتك ، لا تفوت! في النهاية ، سأقدم بعض الروابط المثيرة التي تحتوي على معلومات حول استخدام الرسوم المتحركة فلاش من الزملاء ، لحسن الحظ من ZeptoLab و Playrix .

Source: https://habr.com/ru/post/ar443524/


All Articles