سؤال

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

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

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

هذا gamedev.net بت يظهر gamasutra حل غير كافية ، ولكن يصف طريقة مختلفة حقا لا إصلاح بلدي التعاونية بولدر-دفع سبيل المثال.معظم الأشياء الأخرى لقد وجدت محددة الرماة.أنا أحب أن أرى شيئا موجهة نحو المزيد من الألعاب التي تلعب مثل SNES زيلدا, ولكن مع القليل من الفيزياء / الزخم المعنية.

  • ملاحظة:أنا لا أسأل عن محاكاة الفيزياء هنا مكتبات أخرى قد غطت.فقط استراتيجيات صنع الألعاب على نحو سلس و رد الفعل على الرغم من استتار شبكة الاتصال.
هل كانت مفيدة؟

المحلول

تحقق من كيفية صمام يفعل ذلك في المصدر المحرك: http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

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

نصائح أخرى

أجد هذه الشبكة الفيزياء بلوق وظيفة قبل غلين فيدلر ، وحتى أكثر من ذلك الرد/المناقشة أدناه, رهيبة.انها طويلة جدا ، ولكن حين ورث.

في ملخص

الخادم لا يمكن مواكبة مؤكدا المحاكاة كلما العميل المدخلات الواردة في الحديث لعبة محاكاة الفيزياء (أيالمركبات أو ديناميكا الجسم المتماسك).ولذلك الخادم طلبات جميع العملاء الكمون+غضب (الوقت) قبل الملقم بحيث كل incomming الحزم تأتي في JIT قبل خادم يحتاج لهم.

كما انه يعطي الخطوط العريضة في كيفية التعامل مع نوع ملكية كنت طالبا.الشرائح أظهر في GDC هي رهيبة!

على الغش

السيد فيدلر نفسه (وغيرها) الدولة أن هذه الخوارزمية يعاني من عدم الغش جدا واقية.هذا ليس صحيحا.هذه الخوارزمية لا يقل من السهل أو من الصعب استغلال التقليدية العميل/الخادم التنبؤ (انظر المادة المتعلقة التقليدية العميل/الخادم التنبؤ في @CD سانشيز' الجواب).

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

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

إذا كنت مجرد جعل أصغر لعبة إيندي, قد تكون لعبت من قبل بعض بضعة آلاف من اللاعبين, لا تهتم تنفيذ أي مكافحة الغش خوارزميات حتى 1) تحتاج لهم ؛ أو 2) قاعدة المستخدمين ينمو.

قمنا بتنفيذ متعددة لعبة الثعبان على أساس إلزامي الملقم البعيد اللاعبين التي تجعل التنبؤات.كل 150ms (في معظم الحالات) الخادم يرسل رسالة تحتوي على جميع الحركات الموحدة أرسلت من قبل كل لاعب عن بعد.إذا كان العميل البعيد الحركات تصل متأخرة إلى الخادم ، وهو يتجاهل عليها.العميل سيتم إعادتها آخر حركة.

تحقق من الشبكات مواضيع التعليم في XNA الخالق موقع النادي على الانترنت.بل تتعمق في المواضيع مثل هندسة الشبكات (الند للند أو client/server), شبكة التنبؤ, و عدد قليل من الأشياء الأخرى (في سياق XNA بالطبع).هذا قد تساعدك على العثور على الأجوبة التي تبحث عنها.

http://creators.xna.com/education/catalog/?contenttype=0&devarea=19&sort=1

قد تتمكن من محاولة فرض الكمون إلى كل ما تبذلونه من العملاء اعتمادا على متوسط الكمون في المنطقة.بهذه الطريقة يمكن للعميل محاولة العمل حول قضايا الكمون و سوف تشعر مماثلة لمعظم اللاعبين.

أنا بالطبع لا يوحي بأن قوة 500ms تأخير على الجميع ، ولكن الناس مع 50ms يمكن أن يكون على ما يرام مع 150 (إضافية 100ms المضافة) من أجل اللعب تبدو أكثر سلاسة.

باختصار ؛ إذا كان لديك 3 لاعبين:

  • جون:30ms
  • بول:150ms
  • ايمي:80ms

بعد الحسابات بدلا من إرسال البيانات إلى العملاء في جميع في نفس الوقت, يمكنك حساب عن الكمون والبدء في إرسال " بول " و "إيمي" من قبل يوحنا ، على سبيل المثال.

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

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