تعد
Dwarf Fortress إحدى أفضل الطرق لاستخدام معالجات قوية للترفيه ، وهي لعبة يتكون العالم بأسره من أحرف ASCII ، والتي ستأكل بكل سرور شريحة غيغا بايت من الذاكرة وجزء كبير من وقت المعالج.
ولكن على عكس بعض الألعاب الأخرى ، في حالة
DF ، تشعر اللاعب أنها بحاجة إلى كل ما تحتاج إليه. تخلق حساباتها التفصيلية عالما كاملا مع المباني والمدن والتجار والأنهار والبراكين والوحوش ، وبالطبع التماثيل. إذا خلق شخص واحد كل هذا ، فسيكون هذا إنجازًا رائعًا ؛
Dwarf Fortress هو برنامج يقوم بإنشاء كل هذه الكائنات بمفرده.
وافق مؤلف اللعبة ، تارن آدمز ، على الإجابة على أسئلتنا حول خليقته ، والتي ، على الرغم من وجود العديد من المقلدات ، لا تزال لعبة فريدة من نوعها تمامًا.
Gamasutra: سمعنا أن Dwarf Fortress تخرج على Steam و itch.io في نسخة مدفوعة مع واجهة مبسطة. يقولون أن هذا يرجع إلى تكاليف العلاج القادمة. هل من الصعب على مطور مستقل أن يظل واقفًا على قدميه؟آدامز: نعم ، عليك بذل الكثير من الجهد حتى لا تترك العمل ، ويضطر جميع المطورين تقريبًا إلى ابتكار طرق مبتكرة لتكون قادرًا على دفع الإيجار والاحتياجات الأساسية الأخرى. وأحيانًا تصطدم بمشاكل لا يمكنك التعامل معها. لقد كنا محظوظين حتى الآن ، لكن يتعين علينا التغيير بمرور الوقت: إنهاء العمل والحصول على وظيفة جديدة ، والتحول إلى Patreon ، والآن على Steam with itch ، أو رسم رسومات بالقلم الرصاص ، وهي بعيدة جدًا عن إنشاء ألعاب فيديو.
كيف تبدو أعمال بناء التعليمات البرمجية اليومية الخاصة بـ Dwarf Fortress ؟ ما اللغات التي تستخدمها؟ ما المكتبات؟ ما IDEs إذا كنت تستخدمها؟ ما الكمبيوتر الذي تقوم بتطوير اللعبة عليه؟أعمل على كمبيوتر محمول عادي وغير ملحوظ من Toshiba مع Windows 10. أكتب رمزًا على مزيج C / C ++ الرهيب في مجتمع MSVC. بالنسبة للإصدار القديم ، أستخدم OpenGL ، والإصدار الرئيسي الذي أستخدمه SDL ، وللصوت الذي أستخدمه FMod. لا أستخدم أي شيء آخر على Windows ، باستثناء جزء من رؤوس MSVC (وما قبله) ، والذي كنت أستخدمه منذ عقود. لا أدري تمامًا ما يحدث في إصدارات Linux / Mac لأنني لا أطورها بشكل منتظم.
كانت قلعة الأقزام قيد التطوير منذ ما يقرب من 17 عامًا ، ويجب أن تكون قاعدة الكود قد وصلت إلى أبعاد هائلة. على الجهاز الخاص بي ، يتطلب إنشاء عالم بالإعدادات القياسية أكثر من 1.2 غيغابايت من ذاكرة الوصول العشوائي. المشكلة في مثل هذه المشاريع الضخمة هي أنها تصبح كبيرة جدًا ولا تتناسب تمامًا مع الدماغ. ما هي الاستراتيجيات التي تستخدمها لإبقاء المشروع واضحًا ومفهومًا للعمل؟لدي نظام تسمية صارم ، ولا أحفظ الأسماء الطويلة من المتغيرات والوظائف ، بحيث يمكن قراءة كل شيء حتى بعد بضع سنوات. بشكل عام ، أحاول أن أعتني بالمستقبل بنفسي. كل تعليقاتي في الكود موجهة إلى هذا. أنا بنشاط استخدام وظيفة "العثور على الملفات". ولكن هناك حالات عندما يتعين علي مرة أخرى اكتشاف ما يحدث ، على سبيل المثال ، عند توسيع النظام القديم أو إصلاح الخلل ؛ في هذه الحالة ، قد يستغرق الأمر ساعة أو أكثر للبحث. هذا يسمح لي بترك تعليقات إضافية مفيدة لم أفكر فيها في البداية.
أتذكر أن Threetoe (شريك Tarn في تطوير اللعبة) يكتب القصص ، ثم تحاول إنشاء محرك ألعاب يمكن أن يحدث فيه. لا يزال يبدو لي أن هذه طريقة ملهمة للعمل. هل كانت القصص التي رفضتها معقدة جدًا ولا يمكن تنفيذها؟ هل حدث أن تكررت مؤامرة أحدهم بالكامل في اللعبة؟ها ، أعتقد ، بطريقة ما ، كلها معقدة للغاية. دوافع الشخصية وتحديد الأهداف وما إلى ذلك استمر في التأخر عن كيفية حدوثها في القصص. ومع ذلك ، لا تزال هذه عملية مفيدة ، لأن هناك دائمًا عناصر أخف لتوليد التاريخ ؛ بالإضافة إلى ذلك ، يمكننا التعامل مع الميكانيكا الأساسية للشخصيات ، حتى لو لم نتمكن من الوصول إليها.
تقول ويكيبيديا أن رقم إصدار اللعبة (الآن .44) يدل على مدى بعيدًا عن الاكتمال (أي 44٪). ما ينتظر حصن القزم في المستقبل؟ هل لديك أي شذوذ حول ما سيحدث؟ ما هي الجوانب الجادة التي تركتها لتنفيذها؟لقد أنهيت الإصدار مع الأشرار ، الذي سيتم إصداره في الأشهر القليلة المقبلة. يجب أن يكون فضوليا جدا. ثم سنقوم بتنفيذ الرسومات وزيادة قابلية استخدام اللعبة للإصدارات على Steam / حكة. ثم سنقوم بتحسين عملية الحصار ونقوم ببعض الأعمال ، ثم ننتقل إلى Big Wait. هذا هو أكبر إعادة الهيكلة والتوسع في تاريخ
DF . سيتيح لنا إنشاء أساطير حول الإنشاء وإنشاء أنظمة إجرائية بالكامل للسحر ، بالإضافة إلى فتح العديد من النوافذ لعرض أجزاء مختلفة من العالم ، إلخ. ستكون هذه إضافة رائعة. ثم سيكون هناك الافراج عن الممتلكات / القوانين / الجمارك. بعد ذلك ، لم يتم تحديد الطلب بعد ، لكننا سنعمل على الاقتصاد والسفن والمكونات الهامة الأخرى التي لم تتوفر بعد. لا يزال يتعين علينا القيام بالكثير! لم نذهب حتى منتصف الطريق إلى الإصدار 1.0. لكن الإصدار 1.0 ، لن ينتهي تطوير اللعبة في الواقع ... ربما ، بحلول وقت صدوره ، لن يكون لدينا الكثير من الوقت المتبقي.
في الألعاب ، يوجد توازن بين الحبكة والمحاكاة ، وبين قصة مكتوبة مسبقًا في معظم الألعاب ، وخلق عالم عميق مع مجموعة من القواعد التي تسمح للعديد من القصص المختلفة بالظهور. أود أن أقول إن قلعة الأقزام هي واحدة من أخطر الحجج لصالح المحاكاة. هل الشخصيات في مرحلة توليد العالم أو أثناء اللعبة تفعل شيئًا يفاجئك؟ يمكنك إعطاء أي أمثلة مثيرة للاهتمام / جذاب؟نعم ، هذا يحدث في كل وقت! هذا يرجع جزئيًا إلى حقيقة أنه عند اللعب ، من الصعب أن تضع كل القواعد في الاعتبار. ومع ذلك ، فإن جميع قصصي التي لا تنسى هي أخطاء ، لأنني نادراً ما أتيحت لي الفرصة للعب اللعبة لفترة طويلة بما فيه الكفاية ، لذلك من وجهة نظر اللعبة التي تحدث بشكل مستقل ، فإنها ليست ذات أهمية كبيرة (حتى لو كانت مفاجأة لي). قصص جيدة يمكن العثور عليها في المنتديات ، اللافتات ، وهلم جرا.
الحد الفاصل بين الجزئي والكلي: لماذا جعلته هكذا ، بين ما يمكن أن تفعله التماثيل بأنفسها وما الذي يطلبه اللاعب من القلاع؟هذا توازن صعب ، وليس من السهل الحفاظ عليه دائمًا ، ولكن المفهوم في الوقت الحالي هو أن اللاعب هو "المتحدث الرسمي لإرادة القلعة" ، والأقزام يعرضون استقلالية ، والتي يجب أن تكون موجودة خارج واجباتهم الرسمية. هذا يسمح لهم بأن يكونوا ممثلين في قصصهم الخاصة ، والتي هي المصدر الرئيسي للسرد الناشئ (الناشئ). في الوقت نفسه ، يجب أن يكون اللاعب قادرًا على التحكم في التدفق الرئيسي لجزءه من اللعبة (في الواقع ، هذا ليس بالأمر الحاسم ، ولكن في الغالب يكون أكثر إثارة للاهتمام من مراقبة المحاكاة).
يمكن أن يتعارض هذان الهدفان ، وهذا غالبًا ما يكون بسبب استمرار اللاعب في الاستمتاع باللعبة - على سبيل المثال ، إذا كانت ذراع الطوارئ بحاجة إلى خفض فعليًا ، فيمكن لنظام أولويات المهمة عملياً أن يقوم الجنوم بالقيام بذلك ، بشكل مستقل أو لا ، وفقًا للاعتماد على ما إذا كان يجب أن "يعرف" عن ذلك أم لا. في الماضي ، واجهنا مشاكل في إضافة الكثير من البيروقراطية عندما كان لدينا ، على سبيل المثال ، قزم مسؤول في تقديم المعدات. لكن هذا النظام كان بطيئًا جدًا ، وعرضة للخلل واللاعبين المشوشين. من المهم للغاية التفكير في الكيفية التي يمكن أن تضيف بها كل ميكانيكا لعبة فردية قصصًا محتملة ، ولم يلعب مسؤولو الدور تقريبًا أي دور في ذلك.
ما هي الخطوات التي يتخذها البرنامج لبناء العالم؟انها تخصص الذاكرة للبطاقة. ثم تختار القطب الذي ستحصل عليه (على سبيل المثال ، الشمال والجنوب) (أو تأخذ في الاعتبار المعلمات التي تم تمريرها من قبل اللاعب). تعيّن مجموعة بذور رقم عشوائي القيم الأساسية لحقول الخريطة (الارتفاع ، هطول الأمطار ، درجة الحرارة ، الصرف ، النشاط البركاني ، الحياة البرية) لشبكة ذات حجم متغير ، مع الأخذ في الاعتبار المعلمات المختلفة (المحيطات ، أحجام الجزيرة ، التباين الآخر) ، ثم يملأها البرنامج بشكل كسري. يعتمد التغير في درجة الحرارة على القطبين ، ويقوم البرنامج بتحديد نقاط لأعلى القمم. تقوم هنا بالمرور الأول لمعرفة كيفية تنفيذ العملية ، وتحاول تغيير الارتفاعات بحيث تتناسب الخريطة مع المعلمات المطلوبة. في هذه المرحلة ، إذا لم يكن بالإمكان تصحيح العالم ، فسيتم التخلص منه ، ويبدأ كل شيء من جديد.
ثم يتم تعيين أول حقل مشتق - الغطاء النباتي - اعتمادًا على الطول وكمية الهطول ودرجة الحرارة ، إلخ. يتحقق البرنامج مما إذا كانت المناطق الأحيائية تتوافق مع الفواصل الزمنية المحددة في المعلمات. في هذه المرحلة ، يتم تنعيم ارتفاعات المستوى المتوسط لإنشاء مزيد من المساحات ، ويتم وضع البراكين وفقًا لمجال النشاط البركاني.
ثم ننتقل إلى مرحلة التآكل والنهر. يتم تجفيف المحيطات الصغيرة ، ويعثر البرنامج على حواف المنحدرات الجبلية التي يمكن من خلالها تشغيل أنهار الاختبار. بالإضافة إلى ذلك ، لديها كاميرا على أحدهم حتى يتمكن اللاعب من متابعة العملية. تتدفق الكثير من الأنهار المزيفة من هذه النقاط ، فتكسر القنوات ، إذا لم تجد طريقًا إلى البحر. أحيانًا ما يتم تسطيح المرتفعات العالية جدًا بحيث لا تتحول الخريطة بأكملها إلى وديان. من الناحية المثالية ، سيكون من الضروري استخدام أنواع المواد المعدنية لهذا الغرض ، لكن حتى الآن لا نستخدمها. تزرع البحيرات في عدة نقاط في الأنهار.
يتم إعادة ارتفاعات المرتفعات مرة أخرى من الجبال إلى البحر ، ويتم إجراء تعديلات محلية على القمم والبراكين. بعد الانتهاء من إنشاء المرتفعات ، يقوم البرنامج بإجراء تعديلات على كمية الهطول على أساس ظلال المطر والهطول في المناطق الجبلية. بناءً على الارتفاع والهطول ، وكذلك التأثير المقيد للغابات ، تتم إعادة ضبط درجات الحرارة ، وبعد ذلك يستخدم البرنامج القيم الجديدة لتحديد مستوى الغطاء النباتي أخيرًا. يتم تعيين قيم الملوحة للمحيط والبلاط المجاورة لها.
بعد أن قررنا كل هذا ، يمكننا الآن العثور على حدود المناطق النهائية من المناطق الأحيائية لمنحهم أسماء وشخصيات. هنا نضيف أيضًا طبقات جيولوجية وتحت الأرض ، رغم أنه ، كما ذكر أعلاه ، كان ينبغي إضافة المعلومات الجيولوجية مسبقًا. بعد ذلك ، يتم تنفيذ عملية التحقق النهائية للامتثال للمعايير للتأكد من أننا لا ننحرف بشكل كبير عما يريده اللاعب. بعد الانتهاء من ذلك ، يقوم البرنامج بإنشاء المجموعات الأولية لعالم الحيوانات لكل منطقة وتعيين متغيرات الطقس.
القصة نفسها تبدأ من هذه اللحظة. ثم تقع الحضارات والكهوف. من الصعب إلى حد ما شرح ما سيحدث بعد ذلك ، لكن الفكرة الأساسية هي أن لعبة استراتيجية ضخمة يتم محاكاتها من دون لاعبين يتمتعون بقواعد تحركات تعسفية إلى حد ما وضعف الذكاء الاصطناعي (ولكن مع الآلاف من العملاء) ، استنادًا إلى التاريخ المكتوب. يعد الجيل الإجرائي من القصص باستخدام تسجيل المحاكاة طريقة فعالة تمامًا ، ولكن له أيضًا عيوبه. هذا قدر كبير من العمل ، من الضروري إجراء ما بعد المعالجة والدراسة من أجل العثور على نقاط جيدة تريد التأكيد عليها ، وإذا كانت الديناميات والآليات غير كافية ، فقد تكون النتيجة مملة.
أكثر ما يعجبني في لعبة DF هو أن اللعبة لا تحتوي على أي نظام نقاط ضرب صريح ، وكل ما يتعلق بقوة الشخصية وتلفها جزء من نموذج معقد لأجزاء الجسم. ما هي مزايا مثل هذا النظام؟ إذا قرر شخص ما إنشاء شيء مماثل ، فما هي العقبات التي يمكن أن يتوقعوها؟يخلق هذا النموذج لحظات مؤامرة أكثر تفصيلاً وعواقب طويلة المدى ويوفر اتصالاً أكبر بالنظام. من السهل أن نذهب بعيدًا جدًا ، وقد قطعنا شوطًا كبيرًا في بعض الأماكن ، على الأقل في المرحلة الحالية - لا يتم استخدام بعض خصائص المواد في أي مكان آخر. بالإضافة إلى ذلك ، هناك طرق لتخفيف النظام ، يمكن رؤية أمثلة على ذلك في الألعاب التي يوجد فيها ، على سبيل المثال ، مجموعة شائعة من نقاط سرعة / طاقة / سرعة الغالق ، لكن الجروح المحددة تنشأ إما نتيجة إصابات حرجة ، أو كنتيجة للوصول إلى الصفر أو بالقرب من قيم الصفر في التجمع. يعتمد اختيار النظام الصحيح على اللعبة. نحن نسعى جاهدين لاستخدام الأرقام بأقل قدر ممكن ، لأن الأرقام لا تتناسب بشكل جيد مع القصص.
كيف تبدو حلقة اللعبة الرئيسية؟خذ على سبيل المثال وضع جنوم. يبدأ بالتحقق من الإعلانات وقراءة الحفظ التلقائي ، إلخ. معظم ما تبقى من الدورة لا يحدث في كل قياس. على سبيل المثال ، بعد كل مائة ساعة ، يتحقق البرنامج من المهام المعينة و "الحالة المزاجية الغريبة". تتحرك الجيوش حول خريطة العالم. بعد كل مائة ساعة ، يعالج البرنامج المهام المعطاة للأقزام. هذا نوع من المزادات غير المرئية التي يتم استخدامها لإدارة الأولويات المتضاربة المختلفة. كل عشرة علامات تغير الفصول ، والتي تؤثر على الطقس والخريطة (محليا وحول العالم) ، وكذلك التحقق من تطور عناصر المؤامرة (الدبلوماسيين والحصار ، وما إلى ذلك) والتحقق من أن الحصن لا يزال على قيد الحياة.
ثم يأخذ البرنامج ما يتم في كل إجراء. نقل السوائل وغيرها من المعلومات عن تجانبات الخريطة (ومع ذلك ، هناك العديد من التحسينات بحيث لا يتم تحديد كل تجانب بالضرورة في كل حركة ؛ بالإضافة إلى ذلك ، هناك علامات تتيح لك تخطي مناطق كاملة من الخريطة إذا لم يحدث شيء فيها). يتم تحديث حركة الحيوانات المفترسة ومعالجتها. "أحداث" أخرى على الخريطة ، على سبيل المثال ، حرائق نشطة.
إذا تم ضبط العلم ، فإن التماثيل المصابة / العطشى / الجائعة التي لا يمكنها الاعتناء بأنفسها تتلقى تحديثًا. التماثيل الميتة "التفكير" في طقوس الدفن الخاصة بهم بحيث يمكن تعيين هذه المهام للآخرين. الكائنات المغلقة في الخلايا والسلاسل تحديث دوري أفكارهم والمواقف.
ثم ، إذا عبرت المخلوقات حواف الخريطة ، فسيتم إزالتها منها.
كل خمسين يقيس المعلومات من جميع الحانات والمعابد والمكتبات ، وما إلى ذلك ، اعتمادا على تدابير أخرى ، يتم تحديث. الإمدادات ، التي تعتمد أيضًا على التدابير الأخرى ، تعمل بالمثل. وبالمثل ، إنشاء المهام للتخزين. على الرغم من حقيقة أن هذه العملية تستكمل بتحسينات متعددة ، إلا أنها لا تزال بطيئة للغاية ، وفي مرحلة معينة ، يمكن أن تسبب أكثر من 50 ألف حجر مشاكل.
كل ألف قياسات ، يتم بالفعل حذف الكائنات المحددة للحذف من اللعبة ، ويتم تحرير الذاكرة المخصصة لها. يحدث هذا في كثير من الأحيان مع الكائنات ، مرة واحدة كل خمسين قياسًا ، وكذلك التحقق من استخدام المباني (معظمها عبارة عن تحديثات للآبار وبعض الأعلام الأخرى التي تحتاج إلى التحقق كثيرًا.)
بعد ذلك ، نقوم بإجراء تحديث آخر يعمل بكل المقاييس. تتم إزالة قذائف أطلقت من سلاح. يتم تحديث الإجراءات (من الرقص والتدريب على فنون القتال إلى رواية القصص) حسب الحاجة. يتخذ الأقزام وغيرهم من المخلوقات القرارات ويقومون بأعمالهم الفورية (الانتقال إلى بلاط مجاور ، والعمل في ورشة عمل ، وما إلى ذلك) - يتم تنفيذ الجزء الرئيسي من الذكاء الاصطناعي (باستثناء اختيار المهام) هنا.
كل مائة التدابير يفسد البنود. يتم تنفيذ كل قياس لنمو الغطاء النباتي (على الرغم من وجود العديد من التبعيات والأعلام.) إذا لزم الأمر ، يتم تحديث حالة المباني في كل قياس ويتم نقل العربات. تقدم على طرق النقل. يتم تحديث درجة الحرارة (هناك العديد من أعلام التحسين هنا ، ولكن حتى الآن لا تزال هذه العملية بطيئة إلى حد ما.)
أخيرًا ، يتم تحديث الكاميرا بعد المخلوق الذي يشاهده اللاعب.
تستخدم Dwarf Fortress خريطة تجانب قائمة على الشبكة لتمثيل العالم ، وهي طريقة بسيطة وفعالة لتمثيلها. لقد لاحظت أن هناك العديد من الطرق لرسم البلاط ، وهذا يعتمد على ما يقوم به المخلوق أو كيف يشعر ، وكيف العديد من العناصر الموجودة على البلاط ، ما إذا كان هناك أي شيء فوقه ، ما إذا كان البلاط يتدفق المياه أو دفن تحت الحجر. عندما تقرر DF كيفية عرض البلاط ، ماذا تفعل؟ كيف قمت بتحسين هذه العملية؟هذا مجرد رمز (بايت) مع عدد قليل من وحدات البايت الأخرى ، وبالتالي فإن النظام ليس باهظًا على الإطلاق ، ويمكننا ببساطة استبدال الحل المحدد قبل عرضه على الشاشة ، وعدم محاولة حل كل شيء في نفس الوقت ، وبالنسبة لمعظم البلاط ، لا يزال هناك رمز أرض / جدار واحد يكفي. يتم تشغيل البرنامج من الأسفل إلى الأعلى ، بمعنى ما ، باستخدام "الارتفاع" (الكائنات أعلى الكائنات ، الكائنات فوق الأرض) ، وتغيير القرار من وقت لآخر. ومع ذلك ، على الرغم من وجود العديد من الأعلام والمصفوفات المساعدة ، يمكن عمل الكثير. هناك مجموعة صغيرة من الوحدات الممكنة التي يمكن عرضها في كل بلاطة ، بحيث يمكن للبرنامج تنفيذ الرسوم المتحركة بالإطار الذي يسمح لك برؤية كل عنصر على البلاط ، حتى عندما يتم إيقاف اللعبة مؤقتًا.