پیش‌نیازهای بازی‌سازی

پیش‌نیازهای بازی‌سازی به سه دسته تقسیم می‌شوند:

  • پیش‌نیازهای علمی: شامل دانش و مهارتی است که افراد بهتر است قبل از شروع بازی‌سازی داشته باشند.

  • نرم‌افزارهای موردنیاز: یک توسعه‌دهنده‌ی بازی علاوه بر موتور بازی‌سازی (معمولاً) به نرم‌افزارهای دیگری هم احتیاج پیدا خواهد کرد.

  • سخت‌افزارهای موردنیاز: به احتمال بسیار زیاد کامپیوتر یا لپ‌تاپ شما قدرت لازم برای کار کردن با یک موتور بازی‌سازی را دارا است. با این وجود ممکن است برای انجام کارهای اضافه (مثل تولید asset) به سخت‌افزارهای جدیدی احتیاج پیدا کنید.

پیش‌نیازهای علمی

دانش زبان انگلیسی

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

علاوه بر این موضوع اگر حین یادگیری یا توسعه سوالی برای شما پیش بیاید یا مشکلی ایجاد شود که راه حل آن را ندانید آسان‌ترین و سریع‌ترین راه اقدام به گوگل کردن آن به زبان انگلیسی یا پرسیدن سوال در انجمن‌های رسمی یونیتی و Stack Overflow است. بدیهی است که بدون داشتن تسلط کافی بر روی زبان انگلیسی امکان استفاده از این امکانات برای شما وجود نخواهد داشت. این به معنی از دست دادن بخش بسیار عظیمی از اطلاعات روز و دانش سایر توسعه‌دهندگان بازی است.

دلیل دیگری که به لزوم دانستن زبان انگلیسی تاکید می‌کند مستندات (داکیومنتیشن) یونیتی است. مستندات یونیتی که به صورت رسمی توسط توسعه‌دهندگان یونیتی نوشته شده بدون شک کامل‌ترین مرجع آموزش یونیتی می‌باشد. این مرجع که به صورت صفحات وب html بوده و از طریق آدرس https://docs.unity3d.com می‌توان به آن دسترسی داشت (امکان دانلود و استفاده‌ی آفلاین نیز وجود دارد) تمامی قسمت‌های یونیتی را توضیح داده است. همچنین بخشی تحت عنوان Scripting Reference در آن وجود دارد که تمامی کلاس‌ها، متدها، اینترفیس‌ها و سایر ساختارهای اختصاصی فریمورک یونیتی به تفضیل در آن بررسی شده‌اند.

image

هیچ مطلب آموزشی مرتبط با یونیتی نمی‌تواند جایگزین داکیومنتیشن رسمی یونیتی شود و یا آن‌قدر کامل باشد که بتواند تمامی نیازهای یک توسعه‌دهنده در حین این عمل را برطرف کند.

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

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

عدم تسلط به زبان انگلیسی در بازی‌سازی یک «مشکل حیاتی» است!

image

هدف یونیتیکورن این است که یک فرد ناآشنا به بازی‌سازی مقدمات و پایه را تا حدی فرا بگیرد که بتواند با مراجعه‌ی مستقیم به منابع انگلیسی‌زبان و داکیومنتیشن یونیتی به ادامه‌ی یادگیری بپردازد.

البته باید به این نکته‌ی بسیار مهم اشاره کرد که هیچ منبعی نمی‌تواند شما را به «بازی‌ساز» تبدیل کند. بازی‌سازی بیش از آن‌که مهارت باشد، یک نوع طرز فکر است. این طرز فکر به مرور زمان ایجاد خواهد شد اما گشت‌وگذار در منابع و آموزش‌های مختلف می‌تواند باعث تسریع روند رسیدن شما به آن طرز فکر شود.

ریاضی و فیزیک ساده

برای ساخت یک بازی داشتن اطلاعات بسیار مقدماتی (در حد مقطع راهنمایی و اوایل دبیرستان) از ریاضی و فیزیک مفید (و تا حدی لازم) خواهد بود.

  • از بین مباحث ریاضی: دانستن مفهوم تابع و مباحث مربوط به احتمالات لازم است و دانستن مباحثی مثل نسبت‌های مثلثاتی و معادله خط می‌توانند باعث شوند توسعه‌دهنده با تلاش کمتری بتواند منطق موردنظر خود را در بازی پیاده کند.

  • از بین مباحث فیزیک: دانستن مباحث نیرو، جابجایی، سرعت، شتاب، جاذبه، اصطکاک و مفهوم بردار لازم است.

ذکر این نکته ضروری است که دانستن مباحث فوق در حد بسیار ساده نیز کفایت می‌کند و احتیاجی به دانستن فرمول‌های پیچیده و کنکوری نیست.

کدنویسی و شی‌گرایی

بزرگ‌ترین چالش بازی‌سازی کدنویسی آن است که جزء جداناپذیری از روند توسعه‌ی بازی به شمار می‌رود. در موتور بازی‌سازی یونیتی ساختارها و ابزارهای فراوانی برای توسعه وجود دارد اما ممکن است این ابزارها برای توسعه‌ی بازی درون ذهن طراح کافی نباشند یا حتی طراح ایده‌ای در ذهن خود داشته باشد که تاکنون ابزاری برای پیاده‌سازی آن ساخته نشده باشد. با استفاده از کدنویسی ساختارها و ابزارهایی که در موتور بازی‌سازی وجود ندارند را ایجاد می‌کنیم.

موتور یونیتی از زبان برنامه‌نویسی سی شارپ پشتیبانی می‌کند. تا پیش از سال ۲۰۱۸ امکان کدنویسی به زبان UnityScript (که زبانی تاثیرپذیرفته از زبان جاوا اسکریپت بود) نیز وجود داشت. در نسخه‌های قدیمی علاوه بر این دو زبان، زبان Boo که تاثیرپذیرفته از پایتون بود نیز قابل استفاده بود. اما یونیتی برای یکپارچگی بیشتر تصمیم به حذف پشتیبانی از این زبان‌ها گرفت.

از آن‌جا که در دانشگاه‌های ایران زبان «سی» و «سی پلاس پلاس» تدریس می‌شود و سی شارپ از خانواده‌ی این زبان‌ها می‌باشد وجه مثبت ماجرا این است که در صورت تحصیل در رشته‌های مهندسی به احتمال خیلی زیاد در درک syntax (سبک نوشتاری) این زبان مشکلی نداشته باشید. بازی‌سازی بدون کدنویسی معنی ندارد. با وجود این که برای افرادی که از کدنویسی هراس دارند پلاگین‌هایی تحت عنوان visual scripting یا اسکریپت‌نویسی بصری ساخته شده است، اما این پلاگین‌ها کوچک‌ترین اصول مهندسی نرم‌افزار و شی‌گرایی را رعایت نمی‌کنند و به هیچ‌وجه برای پروژه‌های حرفه‌ای استفاده نمی‌شوند. پس در نظر گرفتن آن‌ها اصلاً فکر درستی نیست.

با این که یونیتیکورن کدنویسی بازی را از صفر آموزش می‌دهد اما بدون شک داشتن پیش‌زمینه‌ای در برنامه‌نویسی مفید خواهد بود. اگر تاکنون برنامه‌نویسی نکرده‌اید از وب‌سایت www.w3-farsi.com بازدید کنید. این وب‌سایت (تا این لحظه) جامع‌ترین و به‌روزترین منبع فارسی نوشته شده در زمینه‌ی برنامه‌نویسی سی شارپ است.

با وجود این که سی شارپ یونیتی شباهت خیلی زیادی به سی شارپ اصلی (ویندوز فرم و کنسول) ندارد اما داشتن پیش‌زمینه‌ای از آن بسیار سودمند است.

برنامه‌نویسی شی‌گرا (Object Oriented Programming یا OOP) سبکی از برنامه‌نویسی است که در آن اجزای مختلف نرم‌افزار در قالب اشیا تعریف می‌شوند؛ در این حالت هنگام نیاز به هر شی تنها با نوشتن نام تعریف شده برای آن می‌توان به کدهای مربوطه دسترسی پیدا کرد. به دلیل شباهت این سبک با جهان واقعی امکان پیاده‌سازی پیچیده‌ترین منطق‌ها با این روش وجود دارد. همچنین شباهت مضاعف جهان بازی با جهان واقعی نیز باعث می‌شود این سبک کدنویسی بهترین سبک برای توسعه‌ی بازی به شمار بیاید.

الف: نرم‌افزارهای موردنیاز برای توسعه‌ی بازی

محیط توسعه‌ی یکپارچه‌ی نرم‌افزار (IDE)

موتور بازی‌سازی یونیتی ابزاری برای کدنویسی درون خود ندارد و کدنویس بازی باید به سلیقه‌ی خود یک نرم‌افزار کد ادیتور به صورت جداگانه نصب کند. بهترین گزینه نصب یک IDE سی شارپ می‌باشد.

IDE نرم‌افزاری است که برخلاف ویرایشگرهای متنی ساده (مثل Notepad ویندوز) هوشمند عمل کرده و کد را درک می‌کند. این بدین معناست که اجزای مختلف کد شناسایی شده و به رنگ‌های مختلف در می‌آیند و هنگام نوشتن کد ادامه‌ی آن توسط IDE حدس زده می‌شود که باعث کاهش چشمگیر تایپ کردن و صرفه‌جویی در وقت می‌شود. همچنین تورفتگی کدها را به رسمیت می‌شناسد و هنگام ایجاد سطر جدید به این موضوع توجه می‌کند. IDE می‌تواند خطاهای کد را قبل از اجرای آن تشخیص داده و مکان و حتی شماره‌ی سطری که خطا در آن رخ داده را به برنامه‌نویس نشان دهد. امکان دیباگ یا خطایابی کد نیز از دیگر قابلیت‌های IDEهاست.

image

یک فایل سی شارپ در ویرایشگر متن معمولی (در این‌جا Notepad ویندوز)

image

همان فایل در IDE «ویژوال استودیو کد»

وجود این نرم‌افزار الزامی نیست. اما استفاده کردن از آن به دلایلی که گفته شد بسیار منطقی است. تقریباً هیچ توسعه‌دهنده‌ای با ویرایشگر متن ساده کدنویسی نمی‌کند.

تا پیش از نسخه‌ی ۲۰۱۸٫۱ یونیتی در هنگام نصب، IDE پیش‌فرض آن یعنی MonoDevelop به صورت خودکار در کنار آن نصب می‌شد. اما یونیتی تصمیم گرفت که پشتیبانی از آن را متوقف کرده و آن را با Visual Studio Community جایگزین کند. چنین اتفاقی قابل پیش‌بینی بود چرا که MonoDevelop امکانات نسبتاً پیش‌پاافتاده‌ای داشت و تقریباً اکثر افراد حرفه‌ای از آن در روند توسعه استفاده نمی‌کردند. Visual Studio Community نسخه‌ی رایگان Visual Studio است که توسط مایکروسافت برای ویندوز عرضه می‌شود و امکان نصب همزمان آن با یونیتی در ویزارد نصب کننده‌ی یونیتی در ویندوز قرار داده شده است.

IDEهای دیگری هم برای توسعه وجود دارند که تجربه‌ی آن‌ها خالی از لطف نخواهد بود. از جمله Visual Studio Code که نسبت به ویژوال استودیوی معمولی سبک‌تر و مدرن‌تر بوده و از مزایای آن می‌توان به وجود نسخه‌ی مک برای آن (علاوه بر ویندوز) اشاره کرد.

Rider نیز که محصول کمپانی نام‌آشنای JetBrains است به تازگی به IDEهای پشتیبانی کننده از یونیتی اضافه شده است. پیش از این JetBrains افزونه‌ای تحت عنوان ReSharper برای ویژوال استودیو نوشته بود که ظاهراً آن را توسعه داده و به صورت یک نرم‌افزار مستقل ارائه کرده است.

ویرایشگر متن

در صورت استفاده از IDE به‌ندرت احتیاج مستقیم به ویرایشگر متن پیدا خواهید کرد. اما در هر صورت جایگزین کردن ویرایشگر متن ساده‌ی ویندوز و مک با یک ویرایشگر متن کاربردی‌تر ایده‌ی مناسبی است. یکی از بهترین ویرایشگرهای متن موجود Brackets است. این ویرایشگر با ظاهر زیبا و افزونه‌های فراوان خود محبوبیت زیادی خصوصاً نزد طراحان وب دارد.

از دیگر ویرایشگرهای مشهور می‌توان ++Notepad را نام برد که تنها برای ویندوز عرضه شده است.

معمولاً بعد از نصب ویرایشگرهای متن مستقل گزینه‌ی ویرایش با ویرایشگر مربوطه به منوی راست کلیک فایل‌ها در ویندوز اضافه می‌شود.

image

یونیتی ریموت

یونیتی اپلیکیشنی تحت عنوان یونیتی ریموت (Unity Remote) برای اندروید و iOS منتشر کرده است که پس از اتصال گوشی به ادیتور یونیتی (توسط کابل USB و یا وای‌فای) نمایش لحظه‌ای پروژه بر روی دستگاه فیزیکی را امکان‌پذیر کرده است. این کار در حین عملیات خطایابی بسیار سودمند می‌باشد. یونیتی ریموت را می‌توان از مارکت‌های اندرویدی و یا اپ استور دریافت کرد.

image

نرم‌افزارهای لازم برای گرفتن خروجی اندروید

در صورتی که قصد گرفتن خروجی اندروید از پروژه‌ی خود دارید علاوه بر کامپوننت Android Build Support یونیتی، باید نرم‌افزار JDK (کیت توسعه‌ی جاوا) و SDK اندروید را نیز دریافت کنید.

کیت توسعه‌ی جاوا نرم‌افزاری است که به صورت رسمی توسط Oracle عرضه شده و وظیفه‌ی تبدیل پروژه به کدهای قابل درک برای ماشین جاوا (در این‌جا گوشی اندرویدی) را دارد.

SDK اندروید مجموعه توابع و کتابخانه‌های مخصوص اندروید است که وجود آن‌ها برای ایجاد خروجی اندروید ضروری است.

این فایل‌ها از یونیتی هاب قابل دریافت می‌باشند. درباره‌ی یونیتی هاب در بخش‌های بعدی توضیح داده خواهد شد.

ب: نرم‌افزارهای موردنیاز برای ساخت asset

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

ساخت اسپرایت

برای طراحی گرافیک بازی و assetهای آن به یک نرم‌افزار طراحی دیجیتال رَستِری (پیکسلی) نیاز است. بدون شک اولین و بهترین انتخاب Adobe Photoshop می‌باشد. ممکن است افرادی نرم‌افزار Corel Painter را نیز بپسندند. طراحان حرفه‌ای‌تر به استفاده از نرم‌افزارهای برداری و سپس خروجی رستری گرفتن از آن‌ها اقدام می‌کنند که این خروجی با کیفیت‌تر و قابل ویرایش‌تر از نمونه‌های رستری است اما به مهارت نسبتاً زیادی احتیاج دارد. در این میان نرم‌افزارهای برداری Adobe Illustrator و Corel Draw نسبت به سایر نرم‌افزارها محبوب‌تر هستند.

image

در نرم‌افزارهای برداری از آن‌جا که خطوط رسم شده به‌وسیله‌ی فرمول‌های ریاضی به وجود آمده‌اند (و نه ماتریسی از پیسکل‌ها) امکان رسم تمیزترین و دقیق‌ترین اشکال هندسی و خطوط منحنی وجود دارد. تک‌تک خطوط قابلیت ویرایش و تغییر شکل و انحنا دارند و با افزایش اندازه دچار افت کیفیت نمی‌شوند. اما نرم‌افزارهای رستری در بهترین حالت مانند کاغذ و قلم دیجیتال عمل می‌کنند و امکان دیگری در اختیار طراح نمی‌گذارند.

نکته

نرم‌افزارهای فوق همگی غیررایگان هستند. در صورت علاقه به نرم‌افزارهای اوپن سورس از نرم‌افزار Gimp برای طراحی رستری و از نرم‌افزار Inkscape برای طراحی برداری استفاده کنید.

ساخت مدل سه‌بعدی (مدل‌سازی)

برای بازی‌های سه‌بعدی بهترین نرم‌افزار مدلسازی بدون کوچک‌ترین شک Maya است. اما شاید این نرم‌افزار آن‌قدر سنگین، پیچیده و گران باشد که امکان استفاده‌ی آن در بازی‌سازی مستقل وجود نداشته باشد و برخی به نرم‌افزارهای سبک‌تری مثل Blender روی بیاورند.

image

نرم‌افزار Blender

نرم‌افزارهای آهنگسازی (DAW)

به احتمال خیلی زیاد یک توسعه‌دهنده‌ی مستقل شخصاً برای ساخت موسیقی و قطعات صدای موردنیاز خود اقدام نمی‌کند. بیشتر این افراد صداهای موردنیاز خود را از وب‌سایت‌های دانلود رایگان صدا از جمله FreeSound دانلود می‌کنند و یا سفارش ساخت آن‌ها را به یک آهنگساز می‌دهند.

اما در صورتی که یک بازی‌ساز مستقل قصد انجام این کار را داشته باشد یکی از بهترین و شناخته شده‌ترین نرم‌افزارها FL Studio می‌باشد.

image

نرم‌افزار FL Studio

یکی دیگر از DAWهای محبوب Logic Pro X است که تنها برای سیستم‌عامل مک عرضه شده و نسخه‌ی ویندوز ندارد. بدیهی است که استفاده از DAW تا حدی به دانش موسیقی و سخت‌افزار مرتبط با موسیقی احتیاج دارد.

نکته

نرم‌افزارهای اشاره‌شده می‌توانند تمام نیازهای بازی‌ساز را در زمینه‌ی ایجاد asset برطرف کنند. اما لزومی به استفاده از آن‌ها نیست. برای شروع می‌توان از assetهای آماده و یا چرک‌نویس (که اصطلاحاً به آن‌ها place holder گفته می‌شود) استفاده کرد.

سخت‌افزارهای موردنیاز

حداقل سیستم موردنیاز برای یونیتی

image

قلم نوری (اختیاری)

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

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

مشهورترین برند قلم نوری Wacom (با تلفظ واکام) است. محصولات واکام به سه دسته تقسیم می‌شوند:

  • Pen Tablet: ساده‌ترین و ارزان‌ترین نوع قلم نوری است. شامل صفحه‌ای پلاستیکی (تبلت) بوده که با کابل USB و یا به صورت بی‌سیم (با بلوتوث یا وای‌فای) به کامپیوتر متصل و با تماس نوک قلم با صفحه اطلاعات به کامپیوتر منتقل می‌شود.

image

  • Pen Display: این نوع قلم نوری دارای صفحه نمایش است که مزیت بسیار بزرگی به حساب می‌آید. اما قیمت این نوع نسبت به Pen Tablet بسیار بالاتر است.

image

  • Pen Computer: این نوع قلم نوری نیازی به اتصال به کامپیوتر دیگری نداشته و خودش دارای سیستم‌عامل مستقل است.
نکته

بسیاری از طراحان حرفه‌ای، استفاده از تبلت‌های iPad و Apple Pencil را به استفاده از نرم‌افزارهای گرافیکی تحت دسکتاپ و قلم نوری ترجیح می‌دهند. این افراد معمولاً از اپلیکیشنی به نام Procreate استفاده کرده که از امکانات و کیفیت بالایی برخوردار است. البته این که طراح از چه روش و نرم‌افزاری استفاده کند بیشتر به سلیقه‌ی شخصی‌اش بر می‌گردد.

MIDI controller (اختیاری)

نرم‌افزار FL Studio برخی کلیدهای الفبایی کیبورد کامپیوتر را به نت‌های مختلف موسیقی اختصاص داده است. بنابراین با کلیدهای کیبورد هم می‌توان اقدام به نواختن نت‌ها کرد. یکی از مهم‌ترین پارامترهای یک نت موسیقی شدت آن است که کیبورد معمولی به دلیل حساسیت به فشار نداشتن فاقد امکان انتقال آن به سیستم است. به دلایل این چنینی نواختن حرفه‌ای قطعاً به سخت‌افزار موسیقی نیاز خواهد داشت. یکی از ساده‌ترین و ارزان‌ترین سخت‌افزارهای موسیقی MIDI controller است که انواع و اشکال مختلفی دارد.

image

یک کیبورد MIDI controller بسیار ساده با تنها دو اکتاو

تفاوت کیبورد MIDI controller با ارگ و پیانوی دیجیتال در این است که MIDI controller صرفاً یک سخت‌افزار ورودی بوده که پردازش مرتبط با آن توسط پردازنده‌ی کامپیوتری که به آن متصل شده است صورت می‌گیرد و به تنهایی کاربردی ندارد؛ در حالی که ارگ و پیانوی دیجیتال عملیات پردازش را مستقل و بی‌نیاز از کامپیوتر انجام می‌دهند و طبیعتاً هزینه‌ی بیشتری نیز خواهند داشت.