أحب أن أكره إيندي gamedev'a

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



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


  1. الصعوبات التي تنشأ أمامي وتقترب من حلها.
  2. نظرة عامة على التقنيات المستخدمة وأدوات التطوير.
  3. روابط إلى الموارد المستخدمة على الشبكة.

ما لن يحدث أكثر من ذلك:


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

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


البدء والفشل


أظهرت مراجعة مختصرة لأدوات تطوير لعبة ثنائية الأبعاد بدون أي محرك أنه يتعين عليك على الفور اختيار إطار عمل لمعالجة الماوس ولوحة المفاتيح ، فضلاً عن دعم الصوت وعرض الرسومات الأولية. تم اختيار مكتبة SFML. استغرق الأمر حوالي أسبوع للتعرف على بعضنا البعض ، تم رسم شيء ما: الدبابات كانت تسير على طول حقل مستطيل وقتلت بعضها البعض ، وكان من الممكن بناء مصانعهم وما شابه ذلك بروح RTS في أوائل عام 2000. بدا ممل وأراد 3D. كنت أعرف أقل عن 3D من جافا سكريبت حول سلامة النوع. كانت Google أول من أصدر برنامج OpenGl ، والذي عفا عليه الزمن. وكذلك حول التوصيات المتعلقة باستخدام الملف التعريفي الأساسي المزعوم لبرنامج OpenGl. من الذي سأكتبه بطرق عفا عليها الزمن؟ من محاولات عبور Core Profile مع SFML ، اتضح أن SFML لا يدعم ملف التعريف هذا في نفس الوقت باستخدام وحدة الرسومات الخاصة به. لقد كانت ضربة أخلاقية قوية ، حيث تم إنفاق الموارد على تعلم لغة SFML. بالإضافة إلى ذلك ، لم يتم استخلاص جميع قواعد الكود من مكتبة الرسومات.


GLFW والأمل الجديد


كما يوحي اسم القسم ، فإن Core Profile OpenGl و GLFW يتماشيان بشكل جيد. المورد الرئيسي الذي أستخدمه على OpenGl. نعم ، نعم ، بدون VPN ، على الأرجح لن يتم فتحها ، وذلك بفضل المدافعين عن Runet. مساعد . في غضون أسبوع أو أسبوعين ، تطفو العناصر الهندسية البسيطة ذات الزخارف حول الشاشة. سيؤدي التبديل إلى GLFW باستخدام SFML إلى تعليم شخص ما تقييم مبدأ انعكاس التبعية (D في SOLID). نتيجة لذلك ، ولدت



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


  1. إنشاء رسوم متحركة في محرر ، على سبيل المثال ، في Blender.
  2. قم بالتصدير إلى تنسيق يدعم الرسوم المتحركة ، مثل Collada.
  3. استيراد في C ++ ، على سبيل المثال ، مع مكتبة Assimp.
  4. تصميم الطبقات وتنفيذها باستخدام OpenGl.

وهكذا ، تلقت الدبابات برج الدورية.


عندما تفخر بالعمل ، ولكن بالخجل لإظهاره


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


IMG


قليلا من الضباب


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



لحظة الحاجة إلى الخوارزميات


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


الفضاء نحن ...


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



حول مركاتور ، الأرض والسياسة


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


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


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


IMG


وحدات البرمجيات ودورة التنمية


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


  1. السبب الأول هو الكود. بدون دعم للعمارة عاقلة وإعادة بناء المساكن ، سيكون في معظم الأحيان عيب ، ولكن ما هو الفرح في ذلك؟
  2. تركيز غير كاف على واحد. الانخراط في خوارزمية ساعة ، ساعة - نموذج في Blender ، لا أستطيع تحقيق الهدف.
  3. تركيز مفرط. بعد مشاركتك في المحرك والخوارزميات لفترة طويلة ، لا تتغير الصورة ويبدو أنه لا يوجد تقدم.
  4. صعوبة في إتقان الأداة. إن ثراء واجهة Blender أو واجهة برمجة تطبيقات OpenGl تلهم الاحترام ، إن لم يكن الخوف. قد يستغرق الأمر عدة أيام من البداية إلى أول دليل على المفهوم ، والذي يمثل ضربة أخلاقية للغاية.
  5. توقعات كبيرة وعدم الاستعداد للفشل. في بعض الأحيان يكون من الصعب التخلي عن نهج "التصميم والتنفيذ وعدم العودة" لصالح "النموذج الأولي / التنفيذ / تنقيح الواجهات"

كونه بطل TDD ، يجب أن أقول أنني لا أرى إمكانية تطبيقه مع هذه النسبة المئوية للبحث والتطوير. سأكون سعيدا إذا كنت ، أيها القارئ العزيز ، أعطني سبب للشك.


في الوقت الحالي ، برزت مجالات التطوير التالية:


  1. تصميم النماذج في Blender.
  2. تنفيذ الخوارزميات والرياضيات ، على سبيل المثال ، A * أو Perlin Noise.
  3. تطوير جزء "المحرك". من المفهوم ، على سبيل المثال ، أنه مولد التضاريس أو استيراد نموذج من Blender.
  4. تطوير وحدة مسؤولة عن التقديم.
  5. تطوير منطق اللعبة. يتطلب الأمر استخدام المحرك ووحدة العرض.
  6. إعادة بيع ديون.

تتضمن الخطط فصل الوحدات 2-5 على مستوى المكتبة مع واجهة في كل منها. أحد الأسباب المحتملة: تتطلب إضافة وظيفة التحكم في الكاميرا إعادة تجميع متتالية لمقدار كبير من التعليمات البرمجية المصدر.


تدل الممارسة على أنه يتحول إلى عمل منتج إذا ركزت على منطقة واحدة لمدة 5-10 ساعات. أقل - يتم فقد التركيز ، وأكثر - عدم وضوح العين.


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


  1. الاستعداد لتنفيذ أفكار جديدة. رفض القديم.
  2. القدرة على تطوير واجهات.

سلبيات:


  1. قد تتأخر إعادة بيع المباني.
  2. أرى دعمًا غير واقعي لاختبارات الوحدة / الصور الوهمية.
  3. بعض التغلب على الصعوبات في فيم. لماذا فيم إذا كان يضيف سلبيات؟ ثم ما هي إيجابيات بالنسبة لي أكثر.

أن تستمر


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

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


All Articles