برنامه نویسی بازی های تحت وب
آشنایی با ۵ تا از بهترین موتورهای بازی سازی مناسب وب برای یک خروجی بهینه
این بازی با استفاده از اتصالات صفحه کلید (کلید پیکان چپ برای حرکت به چپ، کلید پیکان راست برای حرکت به راست، کلید پیکان رو به بالا برای حرکت در بالا، کلید پیکان پایین برای حرکت در زیر) قابل بازی است. هدف این بازی یافتن سرنخ ها و اهدافی است که در نهایت به شما کمک خواهد کرد. سعی کنید مواردی را پیدا کنید که بتوان از آنها برای ورود به یک در استفاده کرد. اگر میخواهید بازیهای پیچیدهتر و حرفهایتری بسازید، میتوانید از کتابخانههای گرافیکی جاوا اسکریپت استفاده کنید. برخی از معروفترین این کتابخانهها شامل three.jsبرای ساخت بازی سه بعدی با جاوا و p5.jsبرای ساخت بازیهای دو بعدی است. این ابزارها به شما کمک میکنند تا به راحتی محیطهای گرافیکی زیبا و تعاملی برای بازیهای خود ایجاد کنید.
به این ترتیب به پایان این راهنما با موضوع ساخت بازی آنلاین رایگان در یونیتی میرسیم. با این که این یک بازی کوچک چندبازیکنه است، اما ما را با شیوه بازیسازی در یونیتی آشنا میسازد. تلاش کنید تا با افزودن صدا یا حتی ساخت نقشههای مختلف بر میزان جذابیت بازی اضافه کنید. از این رو یک GameObject جدید به نام Enemy ایجاد کرده و آن را به یک prefab تبدیل میکنیم. دشمنها نیز مانند سفینهها دارای پارامترهای Rigidbody2D و BoxCollider2D هستند تا بتوانیم جابجایی و تصادمشان را کنترل کنیم. ضمناً به کامپوننتهای NetworkIdentity و NetworkTransform نیاز داریم که از سوی NetworkManager مدیریت میشوند.
این ابزار تمرکز فراوانی بر مناسب بودن برای تمامی کاربران (از مبتدیها تا حرفهایها) دارد. این کتابخانه مجموعهای از ابزارهای کاربردی را برای کمک به شما در توسعهی بازیتان ارائه میدهد. برای توسعه بازیهای اندرویدی، Java و Kotlin دو زبان اصلی هستند که باید در نظر بگیرید. Java به عنوان زبان اصلی اندروید شناخته میشود، اما Kotlin به دلیل سینتکس مدرنتر و قابلیتهای بهبودیافته، در حال جذب توسعهدهندگان بیشتری است. این زبانها به شما اجازه میدهند تا از کتابخانههای گسترده و ابزارهای توسعهای اندروید استفاده کنید.
حال اگر موافق باشید به سراغ آموزش ساخت بازی مار (Snake) با استفاده از جاوا اسکریپت برویم. حال اگر این برنامه را اجرا کنید متوجه می شوید درست مانند چیزی که در ذهن بود اجرا خواهد شد. درست است که ظاهر چندان زیبایی ندارد اما مهم آن است که به خوبی کار می کند. اگر نتیجه مناسبی را نتوانستید پیدا کنید قبل از هرگونه تغییر آن را در مرورگرهای دیگری نیز امتحان کنید، ممکن است برخی از آن ها به خوبی از این فریمورک و ویژگی های آن پشتیبانی نکنند. یکی از راه های دیگر بجای ساختن شکل ها یا قرار دادن SVG استفاده از bitmap است، با وجود آنکه برنامه را سنگین می کنند اما به شما دسترسی بیشتری برای ویرایش و تغییر اندازه تصاویر را می دهند. بازیسازی یعنی خلق دنیایی که خودت میسازی و دیگران برای تجربه لحظات هیجانانگیز وارد آن میشوند.
خب من برای اینکه کارها سریعتر انجام شود بجای رسم کردن شکل و استفاده از Canvas از تصاویر SVG استفاده کردهام. هرچند که مطمئنا به این شکل بازی جذابی نخواهد بود اما به یاد داشته باشید که ما در این مقاله قصد داریم تا کارایی درستی را داشته باشیم نه اینکه بازی زیبایی بسازیم. در این بازی در محیطی سه بعدی به همراه یک توپ به پرواز در میایید و به اهداف شلیک می کنید. “کهکشان کریستال” (Crystal Galaxy) یک بازی تیراندازیِ اکشن فضایی می باشد. این بازی دارای یک برنامه بر مبنای حرکات موس می باشد که به شما امکان می دهد در هر جهتی حرکت نموده و هدف گیری نمایید. در صورت نیاز به کمک، بازی امکان استفاده از راهنما و راهحلهای دیگر بازیکنان را به شما میدهد.
در واقع پس از خرید و شرکت در دورههای آنلاین نیازی به خرید کتاب و مطالعه موردی نخواهید داشت. Python به دلیل سادگی و قابل فهم بودن، یکی از بهترین گزینهها برای مبتدیان در بازیسازی است. با این که این زبان به اندازه ++C یا #C برای بازیهای بزرگ مناسب نیست، اما برای پروژههای کوچکتر و بازیهای دوبعدی ایدهآل است. همچنین، Python با کتابخانههای گرافیکی متعددی مثل Pygame سازگار است که توسعه بازیها را آسانتر میکند. Robocode جذاب و پیچیده است که بازیکنان را به کدگذاری تانک رباتیکی و مسابقه دادن با همدیگر دعوت میکند.
در این مورد نیز برخی جنبههای مهم در خصوص شبکه وجود دارند که باید توضیح داده شوند. این تگ و Cmd در ابتدای نام متد موجب شده که به متد خاصی به نام Command تبدیل شود. در یونیتی متد Command یا متد فرمان در سرور اجرا میشود، هر چند در کلاینت فراخوانی شده باشد. در این مورد زمانی که بازیکن لوکال یک تیر شلیک میکند، به جای فراخوانی کردن متد در کلاینت، بازی یک درخواست فرمان به سرور ارسال میکند و سرور آن متد را اجرا میکند. کامپوننت NetworkTransform به نوبه خود مسئول بهروزرسانی موقعیت سفینه در همه موارد سرور و کلاینتها است.
می توانید در خروجی را برای چالش بیشتر در هر مکانی که دوست دارید قرار دهید، البته بهتر است که از دسترس معلم آن را دور نگه دارید. دانش آموزان نیز بهتر است در محوطه اتاق به صورت تصادفی در حال چرخش باشند. البته بهتر است که در این ابتدا تعداد دانش آموزان را کم کنید به این خاطر که اندازه صفحه و اتاق را کوچک در نظر گرفته ایم. لطفا پرسش مربوط به هر درس یا ویدئو دوره را در صفحه همان ویدئو مطرح کنید.
حلقه بازی شما ممکن است شبیه مثال ما یعنی پیدا کردن تفاوتها باشد و بر اساس رویدادهای ورودی باشد. پس شما نمی توانید گرافیک سنگین و فوق العاده ای را برای بازی های تحت وب سفارش دهید. اجازه بدهید دشمنان بتوانند با سفینه شما تصادم کنند تا ببینید آیا سفینهها به درستی بازتولید میشوند یا نه. در نهایت باید این اسکریپت را به هر دو prefab به نامهای Ship و Enemy اضافه کنیم. توجه کنید که برای سفینه فضایی باید تگ Enemy را به صورت Enemy تعریف کنیم، در حالی که برای دشمن این خصوصیت برابر با Bullet است.
توسعه بازی با جاوا اسکریپت یکی از بهترین راهها برای ورود به دنیای بازیسازی است. با یادگیری اصول اولیه و استفاده از ابزارهای موجود، میتوانید بازیهای ساده و حتی پیچیدهای را با این زبان بسازید. جاوا اسکریپت به شما امکان میدهد تا بازیهای خود را به راحتی در وب منتشر کرده و به تعداد زیادی از کاربران دسترسی پیدا کنید. اگر به دنیای بازیسازی علاقهمند هستید، توصیه میکنیم که این مسیر جذاب را دنبال کرده و از دورههای آموزشی معتبر استفاده کنید تا مهارتهای خود را به سطح حرفهای برسانید. در حال حاضر روشهای مختلفی برای یادگیری زبان برنامه نویسی تحت وب وجود دارد.
در این راهنمای ساخت بازی آنلاین رایگان قصد داریم به طور عملی یک بازی دموی ساده در یونیتی بسازیم تا با شیوه استفاده از قابلیتهای چندبازیکنه Unity آشنا شویم. این بازی یک صحنه ثابت دارد که یک بازی شلیک فضایی چندبازیکنه در آن اجرا میشود. در این دمو چند بازیکن میتوانند به یک بازی بپردازند و به دشمنهایی که به صورت تصادفی جابجا میشوند شلیک کنند. اگرچه که کمپانیهای بزرگ بازی برای ساخت بازیهای خود به هیچ عنوان سراغ زبان JavaScript نمیروند، ایدهی ساخت بازی با استفاده از جاوااسکریپت، آنقدرها هم دور از ذهن و عجیب و غریب نیست. همچنین، اگر به دنبال زبان آسانتری هستید، #C با Unity نیز گزینه خوبی است. Unity با ابزارها و افزونههای فراوان، توسعه بازیهای سهبعدی را سادهتر میکند و #C با سینتکس سادهاش، یادگیری و استفاده از این موتور را راحتتر میسازد.
آیا میتوان بازیهای سه بعدی با جاوا اسکریپت ساخت؟بله، با استفاده از کتابخانههایی مانندthree.js میتوانید بازیهای سه بعدی با کیفیت بالا با جاوا اسکریپت بسازید. در این بخش از راهنمای ساخت بازی آنلاین رایگان به بررسی متدها میپردازیم. در متد Start، اسکریپت مقدار currentHealth را روی بیشینه تنظیم و موقعیت اولیه را ذخیره میکند. همچنین توجه کنید که یک تگ [SyncVar] بالاتر از تعریف خصوصیت currentHealth وجود دارد. این بدان معنی است که مقدار این خصوصیت باید میان همه وهلههای بازی همگامسازی شود.
با این حال تعریف کردن برخی مکانهای از پیشتعریفشده برای ظاهر شدن سفینهها باعث جذابتر شدن بازی میشود. انجام این کار با بهرهگیری از Unity multiplayer API کار آسانی محسوب میشود. پیش از بازی کردن این گیم، باید به NetworkManager اعلام کنیم که prefab به نام Ship در واقع Prefab بازیکن است. این کار با انتخاب کردن آن در خصوصیت Player Prefab در کامپوننت NetworkManager انجام میشود. با انجام این کار، هر بار که یک بازیکن وهلهای از بازی را آغاز کند، یک سفینه فضایی را وهلهسازی میکند.
هر زبان ویژگیها و قابلیتهای خاصی دارد که ممکن است برای نوع خاصی از بازیها مناسبتر باشد. بیایید نگاهی به چند معیار اصلی بیندازیم که میتواند راهنمای نجاتبخش شما در این مسیر باشد. Human Resource Machine یکی از بهترین بازیهای برنامه نویسی برای بزرگسالان است زیرا راهی جذاب برای حل معماها ارائه میدهد. در Human Resource Machine، شما یک کارمند دفتری هستید که باید کار خود را به صورت خودکار با برنامه نویسی انجام دهد. یکی دیگر از دلایلی که ما طرفدار این بازی هستیم، پوشش دادن دو مفهوم مهم «مدیریت حافظه» و «جریان منطقی» است.
این بازی مشهورترین بازیِ blobby volley می باشد و هدف شما کسب امتیازاتِ بیشتر ار حریف تان می باشد. به جای آن، شما یک تیم از دوربینهای بیسیمی را کنترل میکنید (هر کدام با قابلیتهای خاص خود) و به آنها میگویید چگونه این کشتیها را بررسی کنند. اما با این همه، دشمنانی در این کشتیها وجود دارند که اگر مراقب نباشید، دوربینهای شما را نابود خواهند کرد. بازی فرار یک بازی است که در آن بازیکنان سرنخهایی را کشف میکنند، پازلها را حل میکنند و وظایف خود را در یک یا چند اتاق به پایان میرسانند تا راه را بیابند. در اواسط دهه 1990، او مجری برنامه Internet بود، یک تاک شو تلویزیونی ملی درباره اینترنت که برای چندین سال در سیستم کابلی TCI پخش میشد.
در بخش بعدی، به بررسی زبانهای دیگر و پلتفرمهای اختصاصی خواهیم پرداخت که ممکن است برای نیازهای خاص شما مناسب باشند. لازم به ذکر است که باید از سایت id gameCanvas ابتدا عنصر (element) بوم را دریافت کنیم. با انجام این کار مرورگر هیچ چیزی به شما نشان نمیدهد زیرا بوم (canvas) پس زمینه پیش فرض وجود ندارد. برای ایجاد بوم باید با استفاده از جاوا اسکریپت چند کد بنویسم تا برای بوم ما مرزی ایجاد شود. مواردی که در این مطلب گفته شد واقعا موارد مقدماتی و ساده ای بود که هر توسعه دهنده ی بازی باید یکبار آن ها را امتحان کند. از این قسمت به بعد اگر علاقه مند بودید بیشتر مطالعه کنید می توانید مستندات خود وبسایت را مطالعه کنید.
این بازی نیز توسط HTML5 طراحی شده و می بایست با اسلحه های قرون وسطایی به جنگ بپردازید. PaJama یک بازی پرورش ماهی است که بر مبنای قوانین بنیادین علم ژنتیک بنا شده. PlainChess قصد دارد به عنوان جایگزینی زیبا و ساده در میان پورتال های درهم و برهم شطرنجی که هم اکنون وجود دارند مطرح گردد. در این بازی باید برای مواجهه با ناوگان آبی رنگ به دنبال تاکتیک صحیح باشید. شما با ۱۰۰ دلار شروع می کنید و در هر دست می توانید ۱۰ دلار شرط ببندید. در این بازی شما می بایست از پایگاه تان در مقابل مهاجمینی که جرات حمله را به خود داده اند، دفاع نمایید.
در این مقاله، سفری کوتاه به دنیای ساخت بازی با جاوا اسکریپت خواهیم داشت و ضمن آشنایی با مفاهیم پایه، منابع آموزشی و برخی از بازیهای محبوب ساخته شده با این زبان، گامی در جهت شروع این مسیر پرهیجان برمیداریم. اگر میخواهید زبان برنامه نویسی Ruby را یاد بگیرید، Ruby Warrior بهترین بازی برای برنامه نویسی روبی است. این بازی شامل مسیرهای مبتدی و متوسط است که با توجه به سطح مهارت شما قابل انتخاب هستند و درسها از ساده شروع میشوند و رفته رفته پیچیدهتر میشوند. CodinGame یک وبسایت است که به شما در بهبود مهارتهای حل مسئله و یادگیری مبانی برنامه نویسی کمک میکند. این پلتفرم بیش از ۲۵ زبان برنامه نویسی را پشتیبانی میکند و به بازیکنان فرصت میدهد تا در رقابتهای برنامه نویسی شرکت کرده و با تمرین کردن، برنامه نویسی را یاد بگیرند. اگر به بازی کردن (Game) علاقهدارید، میتوانید با یک تیر دو نشان بزنید، یعنی بازی کنید و برنامه نویسی یاد بگیرید.
زمانی که فرمانها از کلاینتها به سرور ارسال میشوند، یک ClientRpc در کلاینت اجرا میشود، هر چند متد از سرور فراخوانی شده است. بنابراین وقتی شیئی نیاز به بازتولید داشته باشد، سرور یک درخواست به کلاینت ارسال میکند تا متد RpcRespawn را اجرا کند که صرفاً موقعیت سفینه را به موقعیت اولیه ریست میکند. این متد باید در کلاینت اجرا شود، زیرا میخواهیم برای سفینههایی اجرا شود که تحت کنترل بازیکن هستند. بنابراین یک تیر در سرور ایجاد میکند و سپس سرور این تیر را در میان همه کلاینتها تکرار میکند. توجه کنید که این قابلیت تنها به این جهت ممکن شده که CmdShoot یک Command و نه یک متد معمولی است.
در بخش بعدی، به تطابق زبانها با نوع بازیهای مختلف خواهیم پرداخت و به شما کمک میکنیم تا بهترین گزینه را برای پروژه خود پیدا کنید. اگر قصد دارید بازیای برای پلتفرم iOS بسازید، Swift و Objective-C زبانهایی هستند که باید به آنها توجه کنید. Swift، زبان جدیدتر اپل، به دلیل سینتکس سادهتر و قابلیتهای مدرن، در حال جایگزینی Objective-C در توسعه برنامهها و بازیهای iOS است. این زبانها به شما اجازه میدهند تا از تمامی قابلیتهای دستگاههای اپل، مانند لمس سهبعدی و ARKit، بهرهبرداری کنید. این بازی به صورت کامل با وارد کردن دستورات به رابط خط فرمان کنترل میشود. به دلیل طبیعت زمان واقعی بازی، در برخی مواقع باید با سرعت دستورات را تایپ کنید تا دوربینهای خود را از خطرات نجات دهید.
اکنون که bullet prefab را در اختیار داریم، میتوانیم یک اسکریپت به نام ShootBullets به سفینه اضافه کنیم. نکته نخست این است که به طور معمول همه اسکریپتها در یک بازی یونیتی از MonoBehaviour ارثبری میکنند تا از API آن بهره بگیرند. با این حال برای این که از Network API نیز استفاده کنیم، اسکریپت باید از NetworkBehaviour به جای MonoBehaviour ارثبری کند. شما باید فضای نام Networking را با استفاده از UnityEngine.Networking بگنجانید تا بتوانید از آن استفاده کنید. برای این که یک شیء در گیم به وسیله NetworkManager مدیریت شود، باید کامپوننت NetworkIdentity را به آن اضافه کنیم. به علاوه از آنجا که این سفینه از سوی بازیکن کنترل خواهد شد باید تیک گزینه Local Player Authority را نیز برای آن بزنیم.
حلقه بازی با ورودی کاربر پیشرفت می کند و تا زمان مورد نظر ادامه پیدا می کند.این بیشتر یک رویکرد مبتنی بر نوبت است که نیازی به به روزرسانی ثابت در هر فریم ندارد، مگر زمانی که بازیکن واکنش نشان میدهد. دلیل این امر آن است که currentHealth یک SyncVar است و از این رو تنها باید در سرور آپدیت شود و بین همه کلاینتها همگامسازی گردد. علاوه بر آن متد TakeDamage ساده است و تنها currentHealth را کاهش میدهد و بررسی میکند آیا کمتر از 0 شده یا نه. اگر چنین باشد، در صورتی که destroyOnDeath مقدار true داشته باشد، اگر شیء تخریب شود و یا اگر currentHealth ریست شده باشد شیء بازتولید میشود. نکته دیگر این است که در یک بازی چندبازیکنه یونیتی، کد یکسانی روی همه وهلههای بازی (چه هاست و چه کلاینت) اجرا میشود.
از بین دهها اسپرایت، صدا و پسزمینه مختلف برای کدنویسی استفاده کنید و اصول برنامه نویسی را یاد بگیرید. از Scratch همچنین در هفته اول دوره CS50 (مقدمهای بر علم کامپیوتر دانشگاه هاروارد) استفاده میشود. شما میتوانید یک حساب کاربری رایگان بسازید و مبانی برنامه نویسی مانند حلقهها، توابع، شرطیها و متغیرها را یاد بگیرید. شما میتوانید زبان برنامه نویسی مورد نظر خود را انتخاب کنید و از طریق بازیها برای افزایش مهارت برنامهنویسی برسید. همچنین، اگر علاقهمند به دسترسی به سطوح بیشتر هستید، میتوانید به حساب کاربری پریمیوم ارتقاء دهید.
یادگیری طراحی بازی شاید در ظاهر امری پیچیده باشد، اما با شرکت در یک دوره کاربردی که مدرس آن به مفاهیم تسلط بالایی دارد مسیر یادگیری را هموار میکند. دوره آموزش بازی سازی با جاوا اسکریپت بهترین گزینه برای یادگیری مهارت بازی سازی است، زیرا در آن مباحث پایه و پیشرفته برای ساخت یک بازی آموزش داده میشود و نیازی به دورههای مکمل نیست! ارائه خدماتی مانند پشتیبانی و پاسخگویی به سوالات دانشجویان حتی بعد از اتمام دوره از جمله مواردی است که باعث تمایز دوره بازی سازی سبزلرن با دیگر دورهها شده است. اگر به زبان جاوا اسکریپت مسلط هستید و به دنیای مهیج بازی سازی علاقه دارید، شرکت در دوره آموزش بازی سازی با جاوا اسکریپت آکادمی سبزلرن میتواند یک گام بلند برای پیشرفت شما باشد. تهیه این دوره به افرادی توصیه میشود که پایهای در برنامهنویسی دارند و میخواهند مهارتهای خود را در زمینه بازی سازی تقویت کنند. همچنین آموزشهای این دوره برای افرادی مفید است که بهدنبال ساخت بازیهای تعاملی و جذاب برای مرورگر هستند.
هدف شما نوشتن هوش مصنوعی است که نشان دهد چگونه رباتهای شما میتوانند موفق شوند. Flexbox Defense یک بازی دفاع از قلعه است که به شما در تقویت مهارتهای CSS کمک میکند. با استفاده از CSS Flexbox، برای نگه داشتن دشمنان خود، باید برجها را در موقعیت مناسبی قرار دهید. پس از نوشتن کد خود، دکمه شروع موج را فشار دهید و ببینید که آیا موفق به متوقف کردن دشمنان خود شدهاید یا خیر. جاوا اسکریپت (JS) یک زبان برنامه نویسی سبک وزن، تفسیر شده و به موقع کامپایل شده با توابع درجه یک است.
اگر به دنبال یادگیری برنامه نویسی با بازی کردن هستید، Duskers یکی از بهترین گزینهها است. علاوه بر این، شما به اصول اولیه CSS مسلط خواهید شد که به شما این امکان را میدهد که محتوای HTML را به شکلی جذاب و منظم استایلدهی کنید. در پایان دوره، شما یاد خواهید گرفت که چگونه یک محیط توسعه یکپارچه PHP/MySQL مانند XAMPP یا MAMP را بر روی سیستم خود نصب و پیکربندی کنید. این مهارت به شما کمک میکند که برنامههای تحت وب خود را بهصورت محلی توسعه دهید و آزمایش کنید. این دوره با ارائه مثالها و تمرینهای عملی، شما را قادر میسازد که به یک توسعهدهنده مبتدی وب تبدیل شوید و بتوانید برنامههای دینامیک و تعاملی ایجاد کنید.
برنامه نویسی میکروکنترلر