تخطي إلى المحتوى الرئيسي

العملاء والخوادم

يتم تقسيم ألعاب THNK دائمًا إلى جزأين: الخادم والعميل. إنها طرق مختلفة يمكن THNK تشغيل لعبتك بها:

الخوادم

THNK مؤَمَّن، مما يعني أن حالة واحدة فقط من اللعبة تدير منطق اللعبة. هذه الحالة هي الخادم. يرسل الخادم إلى كل عميل حينها المواضع الجديدة للكائنات والمتغيرات وما إلى ذلك. كل هذه البيانات تسمى حالة اللعبة.

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

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

العملاء

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

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

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

التفاعل بين الخادم والعميل

يتواصل العميل والخادم بشكل مختلف. يتصل العميل بالخادم بإرساله الأوامر، ويستجيب الخادم بـ حالة اللعبة.

يبدو التدفق النموذجي هكذا:

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

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

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