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

آموزش ساخت بازی آنلاین در یونیتی جت اموز

EnemySpawner نیز دارای پارامتر NetworkIdentity است، اما اکنون باید فیلد Server Only را در کامپوننت انتخاب کنیم. به این ترتیب spawner تنها در سرور وجود خواهد داشت، چون نمی‌خواهیم دشمن‌ها در همه کلاینت‌ها ایجاد شوند. همچنین یک اسکریپت SpawnEnemies نیز دارد که دشمن‌ها را در بازه‌های مرتب تولید می‌کند. ابتدا باید یک شیء جدید Game ایجاد کنیم تا محل تولید سفینه ما باشد و در مکان مطلوب خود قرار دهیم. ما قصد داریم دو موقعیت تولید سفینه ایجاد کنیم که یکی در مختصات (4-, 4-) و دیگری در مختصات (4-, 4) قرار دارد.

تلاش کنید تا با افزودن صدا یا حتی ساخت نقشه‌های مختلف بر میزان جذابیت بازی اضافه کنید. این رابط با سیستم Lego Mindstorms رواج یافته است و توسط تعدادی از شرکت‌ها که مایل به سرمایه‌گذاری بر روی مرورگرهای سفارشی مانند آنچه در موزیلا است، فعالانه مورد سوء استفاده قرار می‌گیرد. KTechlab از کد پویا پشتیبانی می‌کند و یک IDE و شبیه‌ساز محبوب Open Source برای توسعه نرم‌افزار برای میکروکنترلرها است. برنامه‌نویسی ویژوال همچنین وظیفه قدرت برنامه‌نویسی توزیع شده را دارد (به عنوان مثال نرم‌افزار LabVIEW و EICASLAB). یک سیستم برنامه‌نویسی بصری اولیه، حداکثر، پس از طراحی سینت سایزر آنالوگ مدل شد و از 1980s برای توسعه نرم‌افزار عملکرد موسیقی در زمان واقعی استفاده می‌شود. نمونه اولیه دیگر Prograph بود، یک سیستم مبتنی بر dataflow که در ابتدا برای Macintosh توسعه یافته بود.

اگر کنجکاو هستید که بازی بدون این شرط if چطور عمل می‌کند، می‌توانید آن را حذف کرده و بازی را امتحان کنید. زمانی که یک سفینه در صفحه جابجا می‌شود، همه سفینه‌های دیگر نیز همراه با آن جابجا خواهند شد. برنامه‌نویسی ویژوال یک سناریوی استفاده است که در آن به‌طور کلی یک IDE مورد نیاز است. ویژوال بیسیک به کاربران امکان ایجاد برنامه‌های جدید را با حرکت برنامه‌نویسی، بلوک‌های ساختمانی یا گره‌های کد برای ایجاد نمودارهای جریان یا نمودارهای ساختاری می‌دهد که سپس کامپایل شده یا تفسیر می‌شوند. یک هدف از IDE، کاهش تنظیمات لازم برای تکمیل چندین برنامه توسعه است؛ در عوض همان مجموعه از قابلیت‌های یک واحد منسجم را فراهم می‌کند. کاهش زمان راه‌اندازی می‌تواند بهره‌وری توسعه دهنده را افزایش دهد؛ به خصوص در مواردی که یادگیری استفاده از IDE سریعتر از ادغام دستی و یادگیری همه ابزارهای فردی است.

تا به حال شده بخواهید بازی های چند نفره خودتان را بسازید؟ موتور بازی سازی رایگان یونیتی با چارچوب جدید Netcode for GameObjects این فرآیند را آسان تر از گذشته کرده است. در این مطلب یک شوتر اول شخص چند نفره را به شما معرفی می کنیم که می توانید آن را تغییر داده و به یک اثر سرگرم کننده تبدیل کنید و همزمان با 20 نفر یا بیشتر به صورت آنلاین بازی کنید. در این فرآیند یاد می گیرید که چگونه یک سرور اختصاصی با همتایابی ایجاد و مستقر کنید. ما یک بازی سبک io (مانند Slither io و agar io)خواهیم ساخت که می تواند ده ها بازیکن را در خود جای دهد. از این رو یک GameObject جدید به نام Enemy ایجاد کرده و آن را به یک prefab تبدیل می‌کنیم.

در این مطلب با شبکه سازی و نحوه چند نفره کردن بازی آشنا خواهید شد. شما با ساخت گیم پلی اصلی، مانند حرکت سفینه فضایی، تیراندازی و جمع آوری قدرت شروع خواهید کرد. در ادامه می توانید ویژگی های پیشرفته تری مانند بورد امتیاز، نقشه های کوچک و نبرده ای رئیس را به آن اضافه کنید. شما با استفاده از UGS (سرویس های گیمینگ یونیتی)بازی خود را به صورت آنلاین انجام خواهید داد که به بازیکنان اجازه می دهد بدون نیاز به پورت کردن، از طریق اینترنت به بازی شما متصل شوند. درنهایت، با ایجاد سیستم لابی آشنا می شوید که امکان ایجاد هماهنگی را فراهم می کند. نخستین کاری که در این راهنمای ساخت بازی آنلاین رایگان باید انجام دهیم، ایجاد «بوم پس‌زمینه» (Background Canvas) برای نمایش تصویر پس‌زمینه است.

ضمناً تیرها یک مقدار سرعت دارند و باید در ادامه به دشمن‌ها بخورند. بنابراین باید یک RigidBody2D و یک CircleCollider2D به prefab اضافه کنیم. در این مورد نیز باید توجه کنیم که CircleCollider2D یک ماشه (Trigger) است. با این حال تعریف کردن برخی مکان‌های از پیش‌تعریف‌شده برای ظاهر شدن سفینه‌ها باعث جذاب‌تر شدن بازی می‌شود. انجام این کار با بهره‌گیری از Unity multiplayer API کار آسانی محسوب می‌شود.

به‌عنوان مثال، بیشتر مشارکت کنندگان در پایگاه داده PostgreSQL و GDB را مستقیماً برای ایجاد ویژگیهای جدید استفاده می‌کنند. حتی هنگام ساخت PostgreSQL برای Microsoft Windows با استفاده از Visual C ++، از اسکریپت‌های Perl به جای اینکه به ویژگی‌های IDE تکیه کنید، جایگزینی برای ساخت استفاده می‌شود. برخی از IDEهای لینوکس مانند Geany تلاش می‌کنند تا جلوی گرافیکی را برای عملیات ساخت سنتی ارائه دهند. پیش از آغاز مطالعه این راهنمای ساخت بازی آنلاین رایگان باید یک پروژه یونیتی ایجاد کرده و همه اسپرایت‌های موجود را از طریق سورس کد ایمپورت کنید. به این منظور باید پوشه‌ای به نام Sprites ایجاد کرده و همه اسپرایت‌ها را در این پوشه کپی کنید. ابزار Unity Inspector به طور خودکار همه آن‌ها را در پروژه ایمپورت خواهد کرد.

توجه کنید که این قابلیت تنها به این جهت ممکن شده که CmdShoot یک Command و نه یک متد معمولی است. در گزینه Random برای هر وهله بازی، manager موقعیت آغاز بازیکن را در یک مکان تصادفی میان موقعیت‌های تعریف‌شده انتخاب می‌کند. در روش Round Robin موقعیت ظاهر شدن سفینه‌ها به طور متوالی بین مکان‌های تعریف‌شده جابجا می‌شود تا این که همه آن‌ها استفاده شوند و دوباره از نو آغاز کند. اکنون می‌توانید بازی را اجرا کنید و جابجایی سفینه فضایی باید بین دو وهله بازی همگام‌سازی شود. کامپوننت NetworkTransform به نوبه خود مسئول به‌روزرسانی موقعیت سفینه در همه موارد سرور و کلاینت‌ها‌ است.

برای نمونه برای سفینه‌ها به صورت Enemy خواهد بود، در حالی که مقدار enemyTag برای دشمن‌ها Bullet است. به این ترتیب می‌توانیم کاری کنیم که سفینه‌ها تنها با دشمنان تصادم داشته باشند و دشمن‌ها نیز با تیرها تصادم کنند. پارامتر آخر یعنی destroyOnDeath برای تشخیص این موضوع استفاده می‌شود که آیا یک شیء پس از مردن، باید بازتولید شود یا بمیرد. یک محیط توسعه یکپارچه وب (Web IDE)، همچنین با عنوان IDE آنلاین یا Cloud IDE شناخته می‌شود، یک IDE مبتنی بر مرورگر است که امکان توسعه نرم‌افزار یا توسعه وب را فراهم می‌کند. از یک مرورگر وب مانند گوگل کروم یا موزیلا فایرفاکس می‌توانید به یک IDE وب دسترسی داشته باشید و یک محیط کار قابل حمل را فراهم کند. یک وب IDE معمولاً شامل همه ویژگی‌های یکسان با یک IDE سنتی یا رومیزی نیست، اگر چه تمام ویژگی‌های اصلی IDE مانند برجسته کردن نحو، معمولاً وجود دارد.

محیط‌های توسعه یکپارچه به منظور به حداکثر رساندن بهره‌وری برنامه‌نویس با ارائه مؤلفه‌های گره‌دار با رابط‌های کاربری مشابه طراحی شده‌اند. IDEها یک برنامه واحد ارائه می‌دهند که در آن تمام توسعه‌ها انجام می‌شود. این برنامه به‌طور معمول ویژگی‌های بسیاری را برای نویسندگی، اصلاح، کامپایل، راه‌اندازی و اشکال‌زدایی نرم‌افزار ارائه می‌دهد. این با توسعه نرم‌افزار با استفاده از ابزارهای نامربوط، مانند vi, GCC یا make سازگار است. دلیل این امر آن است که currentHealth یک SyncVar است و از این رو تنها باید در سرور آپدیت شود و بین همه کلاینت‌ها همگام‌سازی گردد.

شروع به ساخت گیم پلی اصلی می کنید، تانک های خود را به حرکت در می آورید، تیراندازی می کنید، سکه جمع آوری می کنید و غیره. شما با استفاده از UGS (سرویس های گیمینگ یونیتی)بازی خود را به صورت آنلاین انجام خواهید داد تا بازیکنان بتوانند بدون نیاز به port forward، از طریق اینترنت متصل شوند. در این مرحله از راهنمای ساخت بازی آنلاین رایگان می‌توانیم بازی را اجرا کرده و اقدام به شلیک تیر کنیم. آخرین چیزی که در این راهنمای ساخت بازی آنلاین رایگان قصد داریم به بازی اضافه کنیم، توانایی ضربه زدن به دشمنان و متأسفانه کشتن آن‌ها است. برای این که مراحل این راهنما همچنان ساده بماند، می‌خواهیم از اسکریپت یکسانی برای سفینه‌ها و دشمنان استفاده کنیم. بنابراین در نخستین گام یکشی GameObject به نام Ship ایجاد کرده و آن را به صورت prefab تنظیم می‌کنیم.

جت آموز بستری است که به شما کمک می کند تا با یادگیری دانش های کاربردی، بتوانید وارد بازار کار شوید و کسب درامد کنید. با این حال برخی از اسپرایت‌ها درون اسپرایت‌شیت‌ها مانند اسپرایت‌شیت enemies هستند و باید برش (slice) پیدا کنند. برای انجام این کار باید گزینه «حالت اسپرایت» (Sprite Mode) را روی Sprite Mode قرار داده و ادیتور اسپرایت را باز کنیم.

شکل زیر کامپوننت‌های prefab شیء Ship را نمایش می‌دهد که در ادامه این راهنمای ساخت بازی آنلاین رایگان در موردش توضیح خواهیم داد. برنامه نویسان یونیکس می‌توانند ابزارهای خط فرمان POSIX را در یک محیط کامل توسعه، قادر به توسعه برنامه‌های بزرگی مانند هسته لینوکس و محیط آن قرار دهند. ابزارهای نرم‌افزاری GNU رایگان (مجموعه کامپایلر گنو (GCC)، اشکال زدایی GNU (GDB) و ساخت GNU) در بسیاری از سیستم عامل‌ها از جمله ویندوز در دسترس هستند. داده نمایشگر اشکال زدایی در نظر گرفته شده است به عنوان یک جلو گرافیکی پیشرفته برای بسیاری از ابزارهای استاندارد دیباگر مبتنی بر متن. برخی از برنامه نویسان، مدیریت ساختن فایلها و مشتقات آن را با ابزار ساختن کدهای مشابه که در یک IDE کامل گنجانده شده است، ترجیح می‌دهند.

شما باید فضای نام Networking را با استفاده از UnityEngine.Networking بگنجانید تا بتوانید از آن استفاده کنید. برای این که یک بازی چندبازیکنه داشته باشیم، باید از GameObject به همراه کامپوننت‌های NetworkManager و NetworkManagerHUD استفاده کنیم. اکنون تلاش کنید بازی را اجرا نمایید تا ببینید که پس‌زمینه فضا در بازی دیده می‌شود. در بوم BackgroundCanvas باید حالت رندر را روی Screen Space – Camera قرار دهیم و دوربین اصلی را به آن الصاق کنیم. به این ترتیب بوم در پس‌زمینه و نه در جلوی اشیای دیگر ظاهر می‌شود. حتی اگر یک رایانه شخصی با قابلیت VR پشتیبانی نمی‌کنید، به شما نشان خواهم داد که چگونه پروژه‌های VR را به راحتی آزمایش کنید.

سپس وهله دو می‌تواند از داخل ادیتور یونیتی (در حالت Play) باز شود. این asset یک استثنا در سیستم شبکه‌بندی پیش‌فرض یونیتی محسوب می‌شود و قابلیت‌های جدیدی اضافه کرده و مقدار زیادی از باگ‌ها و مشکلات را حل کرده است. در نهایت شما یاد خواهید گرفت که چگونه بازی خود را به عنوان یک سرور اختصاصی قابل اجرا کنید، بنابراین هیچ یک از بازیکنان مجبور به میزبانی بازی نباشند. IDE همیشه در محیط‌های Mac OS و MacOS کلاسیک اپل محبوب بوده و قدمت آن به کارگاه برنامه نویسان Macintosh , Turbo Pascal , THINK Pascal و THINK C در اواسط دهه ۱۹۸۰ بازمی‌گردد. در حال حاضر برنامه نویسان macOS می‌توانند بین IDEهای بومی مانند Xcode و ابزارهای منبع بازمانند Eclipse و Netbeans را انتخاب کنند. ActiveState Komodo یک IDE اختصاصی چند زبانه است که در macOS پشتیبانی می‌شود.

توجه کنید که ما در این جا از یک متد جدید یونیتی به نام OnStartServer استفاده کرده‌ایم. این متد بسیار مشابه OnStart است و تنها تفاوتش این است که تنها برای سرور فراخوانی می‌شود. وقتی این اتفاق بیفتد، ما باید InovkeRepeating را فراخوانی کنیم تا متد SpawnEnemy را بر اساس spawnInterval هر ثانیه یک بار فراخوانی کند. زمانی که یک تیر ایجاد شد، لازم نیست که بازی مکان آن را به همه شبکه اطلاع دهد، چون موقعیت تیر به وسیله موتور فیزیک آپدیت می‌شود. بنابراین باید Network Send Rate را در کامپوننت Network Transform روی مقدار 0 تنظیم کنیم تا تحمیل بار غیر ضروری به شبکه خودداری شود.

اگر از این کامپوننت استفاده نکنیم، سفینه تنها در یک صفحه جابجا خواهد شد و موقعیت آن در صفحه‌های دیگر به‌روزرسانی نمی‌شود. NetworkIdentity و NetworkTransform دو کامپوننت ضروری برای پیاده‌سازی قابلیت چندبازیکنه هستند. بنابراین باید Client Authority را در کامپوننت NetworkTransform فعال کنید. اما باید بدانید که امکان باز کردن دو کلاینت از بازی در ادیتور یونیتی وجود ندارد. برای انجام این کار باید ابتدا بازی را ایجاد کنید و وهله نخست را از طریق فایل اجرایی تولید شده اجرا کنید.

IDE همچنین برای اشکال زدایی، با استفاده از یک دیباگر یکپارچه، با پشتیبانی از تعیین نقاط شکست در ویرایشگر، ارائه بصری مراحل و غیره استفاده می‌شود. Maestro I محصولی از Softlab مونیخ است و نخستین محیط توسعه یکپارچه جهان برای نرم‌افزار بود. امروز یکی از آخرین مائستروها را می‌توان در موزه فناوری اطلاعات در آرلینگتون یافت. نکته نخست این است که به طور معمول همه اسکریپت‌ها در یک بازی یونیتی از MonoBehaviour ارث‌بری می‌کنند تا از API آن بهره بگیرند. با این حال برای این که از Network API نیز استفاده کنیم، اسکریپت باید از NetworkBehaviour به جای MonoBehaviour ارث‌بری کند.

ما یک بازی شبیه به space shooter آرکید کلاسیک مانند Galaga و Space Invaders خواهیم ساخت. در پایان این دوره شما مهارت های لازم برای ساخت یک بازی space shooter چندنفره رقابتی یا مشارکتی در هر سبکی را خواهید داشت. در این دوره آموزش ساخت بازی آنلاین و چند نفره با یونیتی، یاد می گیرید چگونه یک بازی در سبک Side-scroller دو بعدی فضایی شوتر را با موتور بازی سازی یونیتی و فریم ورک Netcode for Game Object بسازید. همچنین نحوه ساخت و پیاده سازی یک سرور اختصاصی را یاد می گیرید.ما یک بازی می سازیم که مشابه بازی های شوتر فضایی آرکید مانند Galaga و Space Invaders است. در انتهای این دوره ، شما مهارت های لازم برای ساخت یک بازی شوتر فضایی چند نفره با هر سبکی را خواهید داشت. در این بخش از راهنمای ساخت بازی آنلاین رایگان یک قابلیت دیگر می‌خواهیم به بازی اضافه کنیم و آن توانایی شلیک کردن تیر است.

بنابراین اگر یک شیء در یک وهله آسیب ببیند، این آسیب باید به همه وهله‌ها انتشار داده شود. در این راهنمای ساخت بازی آنلاین رایگان قصد داریم به طور عملی یک بازی دموی ساده در یونیتی بسازیم تا با شیوه استفاده از قابلیت‌های چندبازیکنه Unity آشنا شویم. این بازی یک صحنه ثابت دارد که یک بازی شلیک فضایی چندبازیکنه در آن اجرا می‌شود. در این دمو چند بازیکن می‌توانند به یک بازی بپردازند و به دشمن‌هایی که به صورت تصادفی جابجا می‌شوند شلیک کنند. با ما همراه باشید تا با شیوه ساخت بازی آنلاین رایگان آشنا شوید. Make Online Games Using Unity’s NEW Multiplayer Framework، دوره آموزش ساخت بازی های آنلاین با استفاده از چارچوب جدید چند نفره یونیتی; توسط آکادمی یودمی منتشر شده است.

ادغام تنگ‌تر از همه وظایف توسعه پتانسیل بهبود بهره‌وری کلی فراتر از کمک به کارهای تنظیم را دارد. مرز بین IDE و سایر قسمت‌های وسیع‌تر از توسعهٔ نرم‌افزار کاملاً مشخص نیست. گاهی یک سیستم کنترل نسخه یا ابزارهای مختلف برای ساده‌سازی یک رابط کاربری گرافیکی (GUI) یکپارچه شده است. بسیاری از IDEهای مدرن همچنین دارای یک مرورگر کلاس، یک مرورگر شیء و یک نمودار سلسله مراتبی کلاس برای استفاده در توسعهٔ نرم‌افزار شی‌گرا هستند. در این متد از قابلیت چندبازیکنه دیگر به نام ClientRpc استفاده می‌کنیم.


برنامه نویسی رباتیک با پایتون