آموزش ساخت بازی چندنفره: مفاهیم اوّلیّه

سیگنال دهی

همان طور که گفته شد یک پیر برای این‌که بتواند به هاست وصل شود باید آیپی آن را پیدا کند و تشخیص دهد که چگونه می‌تواند به آن وصل شود. از طرفی هاست می‌تواند هرکسی باشد، هر جایی روی این کره‌ی خاکی باشد، در نتیجه فهمیدن این‌که پیر به کجا باید وصل شود تقریباً غیر ممکن است. بنابراین برای این‌که بازی‌کن‌ها بتوانند همدیگر را پیدا کنند، یک سرور مرکزی به نام سیگنالینگ سرور (signaling server) ایجاد شده است.

سیگنالینگ سرور هاست اصلی بازی‌ها نیست: اوّلین بازی‌کنی که وارد اتاق بازی می‌شود نقش هاست بازی را دارد و داده‌های بازی را به پیرها می‌رساند. سیگنالینگ سرور فقط یک سرور مرکزی است که بازی‌کن‌ها برای پیدا کردن همدیگر وارد آن می‌شوند. وقتی یک پیر می‌خواهد به هاست ملحق شود، سیگنالینگ سرور اطّلاعاتی مثل نشانی‌های آیپی و جزئیّات اتّصال را دریافت و به دو طرف ارسال می‌کند. اوّلین باری که پیر بتواند با موفّقیّت به هاست متّصل شود، سیگنالینگ سرور دیگر در اتّصال دخالت نمی‌کند و دو طرف به صورت مستقیم با هم ارتباط برقرار می‌کنند.

سیگنالینگ سرور

سیرا در آدرس wss://multiplayer.scirra.com یک سیگنالینگ سرور عمومی را میزبانی می‌کند. (wss پروتکلی برای اتّصال ایمن WebSocket است. چون داده‌های سیگنالینگ از طریق WebSocketها ارسال می‌شوند. خود بازی‌ها با استفاده از WebRTC کار می‌کنند.)

اصطلاحات مربوط به سیگنالینگ

سیگنالینگ سرور نباید بازی‌کن‌های یک بازی را به بازی دیگری که هیچ ربطی به آن ندارد وصل کند، و باید به بازی‌کنان اجازه دهد که در گروه‌های مختلف یک بازی را به صورت همزمان بتوانند بازی کنند، برای این کار بازی‌کن‌ها به یک اتاق (room) در یک نمونه‌ی (instance) بازی ملحق می‌شوند.

سیگنالینگ سرور ابتدا بازی‌کن‌های هر بازی را از بازی دیگر جدا می‌کند. بازی‌تان باید یک نام منحصر به فرد جهانی در سرور داشته باشد تا هر کسی در بازی شما دقیقاً به همان بازی در سیگنالینگ سرور متّصل شود. این کار باعث می‌شود که بازی‌کن‌ها اشتباهی به بازی‌های دیگر نامربوطی که کلاً عملکردشان با بازی شما فرق می‌کند وصل نشوند. برای هر بازی که می‌سازید باید از یک اسم در سیگنالینگ سرور استفاده کنید. برای این‌که اسمی که انتخاب می‌کنید منحصر به فرد باشد در اسم بازی‌تان نام خودتان یا شرکتتان را هم بنویسید. مثلاً اگر اسم بازی‌تان Asteroids است، به جای این‌که در سیگنالینگ سرور اسم بازی‌تان را “Asteroids” خالی بنویسید، بنویسید “MyStudio-Asteroids” یا “JohnSmith-Asteroids” (مثلاً JohnSmith اسم خودتان و MyStudio اسم شرکتتان است). در ضمن این اسمی که انتخاب می‌کنید هیچ جا نمایش داده نمی‌شود و فقط در سیگنالینگ سرور به کار می‌رود، بنابراین به خاطر منحصر به فرد شدن می‌توانید هر جزئیّات دیگری را هم که خواستید به این اسم اضافه کنید و لازم نیست نگران باشید.

بعد سیگنالینگ سرور بازی‌کن‌های نمونه‌های مختلف یک بازی را از هم جدا می‌کند. مثلاً شما بازی‌تان را در یک نمونه‌ی پایدار منتشر کرده‌اید و می‌خواهید بازی‌کن‌ها آن را بازی کنند، و یک نمونه‌ی آزمایشی نیز از بازی‌تان ایجاد کردید تا کسانی که قرار است بازی را تست کنند از آن استفاده کنند و همچنین نمونه‌های دیگری نیز از بازی‌تان ساخته‌اید. این باعث می‌شود که تست‌کنندگان نسخه‌ی آزمایشی به اشتباه به بازی‌کن‌های نسخه‌ی پایدار وصل نشوند. چون شاید نسخه‌ی آزمایشی مکانیزم و خصوصیّاتی متفاوت از نسخه‌ی پایدار داشته باشد. حتّی نسخه‌های بازی هم می‌تواند فرق کند، مثلاً بازی‌کن‌های نسخه‌های v1.0، v1.1، v1.2 و… اشتباهی به یکدیگر وصل نمی‌شوند. حتّی می‌توانید نمونه‌هایی برپایه‌ی مکان زندگی بازی‌کن‌ها داشته باشید، مثلاً بازی‌کنان اروپا، آمریکای شمالی و آسیا هر کدام فقط به بازی‌کن‌های واقع در منطقه‌ی زندگی خودش بتواند وصل شود. این دو می‌توانند با هم ترکیب شوند. یعنی اروپایی‌های نسخه‌ی 1.1 به اروپایی‌های نسخه‌ی 1.2 وصل نمی‌شوند و…

در انتها بازی‌کن‌ها می‌توانند به یک اتاق ملحق شوند. یک اتاق نماینده‌ی گروهی از بازی‌کنان است که دارند با هم بازی می‌کنند. بازی‌کن‌ها نمی‌توانند سایر بازی‌کنانی را که در آن اتاق نیستند مشاهده کنند. اوّلین بازی‌کنی که وارد اتاق شود هاست می‌شود، بعد سیگنالینگ سرور هاست را از ورود هر بازی‌کن دیگری به آن اتاق مطّلع می‌کند. بعد آن‌ها به هم متّصل می‌شوند و شروع به بازی کردن می‌کنند.

در شیء Multiplayer کنستراکت 2، همه‌ی اکشن‌ها، کندیشن‌ها واکسپرشن‌هایی که به سیگنالینگ سرور ربط داشته باشند در یک گروه به اسم Signalling قرار می‌گیرند. بقیّه‌ی آن‌ها به خود بازی‌ها مربوط می‌شوند.

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۳۳ نظر

افزودن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.