سؤال

سأبدأ برمجة الألعاب مرة أخرى.منذ 10 سنوات كنت أصنع ألعابًا باستخدام qbasic ولم أقم بأي برمجة ألعاب منذ ذلك الحين، لذا فأنا صدئ تمامًا.لقد كنت أقوم بالبرمجة طوال الوقت، فأنا الآن مطور ويب/DBA/admin.لدي عدة أسئلة، لكني سأقتصر على سؤال واحد في كل مشاركة.

اللعبة التي أعمل عليها ستكون عالمًا كبيرًا وكبيرًا جدًا.سيكون مثل إلى حد ما المتفجرات من مخلفات الحرب, ، ولكنه عالم أكبر ويشبه إلى حد كبير لعبة "RPG".

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

هل لدى أي شخص أي نصائح حول كيفية القيام بذلك أو أفكار لطرق تخزين أخرى؟

وهذه هي متطلبات لعبتي:

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

المحلول

لا تعبث بقواعد البيانات العلائقية إلا إذا كنت مجبرًا على استخدامها بسبب عوامل خارجية.

انظر إلى بايثون pickle, الرف.

الرف سريع ومقاييس جيدة.إنه يلغي التحويل الفوضوي بين تمثيل بايثون وغير بايثون.


يحرر.

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

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

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

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

نصائح أخرى

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

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top