لعبة خاصة. الجزء الأول

تنويه


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

أجزاء أخرى من المقالة
الجزء 2
الجزء 3

الفصل 1. أحداث ما قبل التاريخ


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

اعتقدت انني سأتصل بك غدا.

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

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

قبل ذلك ، كان لا يزال هناك حوالي عام. في غضون ذلك ، اعتقدنا أننا كتبنا MMORPGs.

MMORPG بدأنا في الكتابة فجأة بطريقة أو بأخرى. لم أشارك أنا ولا فيودور ميخاليتش ولا ديمون على الإطلاق باحتراف في البرمجة على الإطلاق ، ناهيك عن تطوير الألعاب. عملنا جميعًا في البنك ، وتداول ديمون بالعملات ، وأنا - في الديون ، وشارك فيدور ميخاليتش في دعم التداول. علاوة على ذلك ، عمل ديمون وفيدور ميخاليتش في أحد البنوك ، وأنا في بنك آخر. لكننا كنا لاعبين. أردنا كتابة الألعاب. لقد "انخرطت" في البرمجة من المدرسة ، ذات مرة ، بمساعدة كتاب أندريه لاموت "ألعاب البرمجة لـ Windows" ، كتبت استنساخ Wolfenstein للعبة في C ، كتبت بوضوح من الكتاب ، لكن المترجم الخاص بي لم يكن يعرف كيف يدمج المجمع في كود C ، لذلك ، على عكس نسخة الكتاب ، عمل محركي ببطء شديد. ثم لم أقم بالبرمجة على الإطلاق لفترة طويلة ، حتى مرة واحدة ، في متجر لبيع الكتب ، سقطت عيني على كتاب "برمجة الألعاب ثلاثية الأبعاد لـ Windows" للمؤلف أندريه لاموت.

ديجا فو ، فكرت في الفرنسية. منذ أن عملت في بنك فرنسي ، كان عليّ أحيانًا القيام بذلك.

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

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

#ifndef file_h #define file_h 

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

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

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

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

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

- حسنا. دعونا نفكر في ذلك.
- نهرو أعتقد. لنقم باللعبة. مجرد شيء أبسط ، وليس MMORPG ، وإلا فلن نضيف أي شيء للتقاعد. ولكن يجب أن نطلق سراحه الآن ، قبل أن يغادر القطار.
- حسنا ، أريد أن أكتب في 3D. كيف تلعب 3D على iPhone؟
"انسى الأمر" ، كان فيدور ميخاليتش مثابرًا للغاية. - دعنا لا نكتب 3D. دعونا نفكر في هذا النوع.
- فكر في الأمر. حسنًا ، دعنا نرى ما هو موجود. أضع Ikscode وألقي نظرة. عندما اشتريت جهاز ماك بوك لنفسي ، رأيت أن هناك قرص هاك مجاني على القرص معه. يبدو أن البيئة طبيعية.
- عظيم. ألقيت في روابط البريد الخاصة بك إلى مواقع تحتوي على برامج تعليمية حول البرمجة لـ iPhone. لقد أحببت بشكل خاص بعض راي Wenderlich. الق نظرة.
- جيد.

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

ثم كان أكثر متعة. اتضح اعتيادي

 GLBegin(GL_TRIANGLES); GLVertex3f(…); GLend(); 

لم يعملوا على iPhone. لم يعمل GLTranslatef إلخ. أشياء غبية.

- حسنا. لقد قرأت المصباح من أجل لا شيء ؛ أعرف كيف يعمل ، فكرت. وكتب.

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



كل هذا الوقت كان فيدور ميخاليتش يفكر بشكل مكثف. والحقيقة هي أنه ، في رأيه ، لم يكن للمنبر معنى في الكتابة. كانت بدائية.

قال: "هذا بدائي". - سيكون هذا أكثر خطورة. بالمناسبة ، هل سمعت أنك ستعيد إصدار UFO على جهاز الكمبيوتر الخاص بك؟
- إكس كوم؟
- نعم.
- حان الوقت. كانت لعبة باردة. بالمناسبة ، سيكون مناسبًا تمامًا للواجهة التي تعمل باللمس. هل سيسمحون لها بالخروج على iPhone؟

يعتقد فيدور Mikhalych للحظة.

- هيا.

الآن فكرت.

- دعونا نفعل X-com؟ ليس لدينا حقوق.
- حسنا ، الاستنساخ. ليس X-com نفسه. سيتم إطلاقها على جهاز كمبيوتر ، وسنكون صامتين على iPhone.

كان ذلك مثيرا للاهتمام. كلانا يحب X-com. ثم بدا لي أن إنشاء نسخة من X-com لم يكن صعبًا. أصعب من المنصّة بالطبع ، لكن ليس كثيرًا. لمدة ستة أشهر يجب أن تتكيف. إذا كنت محظوظًا ، فلنبدأ البث المباشر على iPhone قبل ظهور النسخة الجديدة على جهاز الكمبيوتر. سيكون باردا. سيكون ممتعا. والأهم من ذلك ، هذا ليس مشروعًا كبيرًا. إذا قمت بعمل منصة من الصفر في غضون 3 أسابيع ، فإن Ikskoy يبلغ 6 أشهر ، نضرب على الفور في 2 حتى لا نشعر بالاستياء ، المجموع - في السنة. رائع.

الفصل 2. بداية العصر


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

ولكن الأهم من ذلك أنني كتبت المحرك على OpenGL كما أردت.

كان من الصعب في البداية. لقد تعلمت معظم الوقت الكتابة في الهدف- C و OpenGL. أصغر - كتب اللعبة نفسها. ولكن مع مرور الوقت ، اشتركت ، وبعد حوالي شهر ، تم تشغيل وحوش متحركة من Quake 2 في جهاز محاكاة iPhone بعد إصبعي عبر حقل محكم مربع (لم تكن نماذجنا جاهزة بعد). قام Fedor Mikhalych بتخصيص القصة للعبة:

- سيكون هناك مستقبل ، ولكن ليس بعيدًا. تهيمن الشركات على العالم. والهجمات هنا وهناك ، فجأة ، العالم كله في الهجمات.
أجبت "الهجمات الإرهابية سيئة".
- حسنا ، بالطبع هذه هي النقطة. وسوف تقاتل معهم.
أجبت: "القتال جيد". - لكن ممل. هذا ليس لك أن تطلق النار على Elies.
- إذن ماذا. نستطيع وعلى إيلين. كما نريد ، سنفعلها ، هذه هي لعبتنا.
- لا يمكننا فعل ذلك بواسطة Elien ، سيكون X-com. وللناس هذا ليس مثيرًا للاهتمام.
"هيا الحيوانات" ، فيودور ميخاليتش لم يستسلم. كان عليه فقط أن يحرق شخص ما.
أجبت: "أشفق على الحيوانات".
- حسنا ، هيا على الحيوانات البشعة.
- أو ربما يكونون جيدين في الروح؟
- هنا ، تعتقد بشكل صحيح. ولكن ماذا لو كانت هذه الحيوانات اللطيفة في الروح شريرة؟
- اعني؟ - أنا حقا لم أفهم ذلك الحين.
- حسنا ، خذ غرينبيس. يحمي ، على سبيل المثال ، طيور البطريق ، من الانقراض.

فوجئت قليلا:

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

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



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

يساء فهمه.

لقد أطلقت البناء في المحاكي - إنه يعمل.

بناء نفسه على تعطل جهاز حقيقي.

حان الوقت للانتقال إلى المصحح.

بالفعل في ذلك الوقت ، كان كل شيء جيدًا نسبيًا مع رمز التصحيح في ikskod. لقد أطلقت المحلل وبدأت في النظر في التطبيق.

- بطريقة ما يختفي الكثير من الذاكرة ، انظر Fedor Mikhalych. لدينا 20 نزوة في حقل مربع وقد أكلت بالفعل 150 ميجا بايت ... 200 ... 250 ... 300 ... سقطت. - اعتقدت. - دعونا نحسب. نحن نصنع الكلمة. تبلغ مساحتها 128 × 128 مربعاً. لكل منها 4 قمم ، هذه 16 ألف قمة. يتكون كل منها من 3 إحداثيات وإحداثيتين نسيجيتين ، هذه كلها عوامات. المجموع 82 ألف عائم. وكل تعويم هو 4 بايت. المجموع 320 كيلو بايت. قليلا ، هاه؟
ووافق فيدور ميخاليتش على ذلك بقوله "ليس كثيرًا".
- بعد ذلك ، نشحن موادك مع Dimon. لدينا الآن 20 منهم. كل لون 512x512 و 32 بت. إجمالي 1 ميغا بايت لكل مادة ، 20 ميغا بايت خارج. قليلا ، هاه؟
ووافق فيدور ميخاليتش على ذلك بقوله "ليس كثيرًا".
- بعد ذلك ، نقوم بتحميل نماذج من جنودنا. سأقوم بشحنها 20 قطعة. كل من ألفي مضلع ، لكل منهما 3 رؤوس ، لكل منها 5 عوامات ، لكل منها 4 بايت. الإجمالي ... 2.35 ميغابايت. غبي؟
ووافق فيدور ميخاليتش على ذلك بقوله "ليس كثيرًا".
"على الرغم من عدم القيام بذلك." يحتوي كل نموذج على 95 إطارًا. مجموع 220 ميغا بايت.
"نعم ،" وافق فيدور ميخاليتش ، "والقوام عليهم". 1024x1024 32 بت. إجمالي 80 ميغابايت. فقط 300 ميجا بايت. وهذا مجرد حقل مسطح و 20 نزوة. وفي اللعبة سيكون هناك المزيد من الأعداء على المستوى. وجميع أنواع الأشياء. في المحاكي ، لا توجد قيود على مقدار الذاكرة. وفي الايفون 512 ميجابايت. النظام يحتل جزء ، عليك التباهي.

لقد دمرت. بهذه الوتيرة ، من أجل تحميل المستوى ، سيتعين عليك انتظار إصدار iPhone مع ذاكرة 5-10 GB. لكن كيف؟ كيف فعل كارماك الزلزال ؟؟؟

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


All Articles