العب خالق كل شيء

مقدمة


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


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

الفرق الرئيسي من الألعاب الموجودة - في النموذج لا يوجد حد محدد مسبقًا بواسطة البرنامج النصي.


العالم النموذجي


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


الشكل 1


لحفظ استهلاك الذاكرة ، يتم تخزين كميات المادة عند كل نقطة في نوع الطفو ، مما يعطي 7 بتات مهمة. بالنسبة للنموذج ، تم تعيين 100 ألف وحدة في كل نقطة من الماء ، و 20 ألف من ثاني أكسيد الكربون ، و 10 وحدات من الهيدروجين (أي أقل بعشرة آلاف مرة من الماء) ، وصفر الأكسجين والميثان. مثال على ما يبدو عليه وصف المواد المقدمة في النموذج:


<Element name="CarbonDioxide" color="yellow" volatility="0.12" visibility="true"> <rect left="0" top="0" right="max" bottom="max" amount="20000"/> </Element> <Element name="Oxygen" color="green" volatility="0.12" visibility="false"> <rect left="0" top="0" right="max" bottom="max" amount="0"/> </Element> ... 

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


 <Reaction name="CO2+4H2=CH4+2H2O" geothermalEnergy="0.00001" solarEnergy="0"> <LeftReagent name="CarbonDioxide" amount="1"/> <LeftReagent name="Hydrogen" amount="4"/> <RightReagent name="Methane" amount="1"/> <RightReagent name="Water" amount="2"/> </Reaction> 

تم زرع أول الكائنات الحية الدقيقة LUCA مع هذا التفاعل داخل أحد الينابيع الحرارية الأرضية.


 <section name="Organisms"> <item name="LUCA" author="DEMI" x="300" y="30" reaction="CO2+4H2=CH4+2H2O"/> </section> 

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


الشكل 2


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


الشكل 3


الاختيار


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


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


الشكل 4


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


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


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


الشكل 5


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


الشكل 6


يحتوي ملف Snapshoot2017.rar على ملف قابل للتنفيذ تم تجميعه لنظام التشغيل Windows وملفات دعم له. لا يلزم التثبيت ، ولا يترك أي آثار لعمله - لبدء تشغيله ، فقط قم بفك ضغطه ثم حذفه. لتغيير الإعدادات الافتراضية - يمكن فتح ملف ThemeAero / template.demi في محرر نصوص بسيط. عناصر التحكم موصوفة في القسم المناسب من ويكي المشروع.


خطط أخرى


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


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


الخلاصة


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


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


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


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


ملاحظة: النموذج مفتوح المصدر تحت GNU GPL الإصدار 3 ، 29 يونيو 2007 ومتاح للتنزيل لأي شخص يريد تجربة أو إنشاء شوكات. تم تجميعها مع مكتبة ClanLib عبر الأنظمة الأساسية على MS VS2015. الملف الثنائي لنظام التشغيل Windows موجود في الأرشيف - لا يتم تثبيته على الإطلاق ، ولكن يبدأ ببساطة بعد تفريغه. أفترض أن تجميع منصات أخرى لن يسبب مشاكل. يمكن تحرير Template.xml في محرر نصوص مناسب ، توجد بعض الوثائق على جيثب في قسم ويكي.

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


All Articles