بررسی کلی بازیسازی
به یونیتیکورن خوش آمدید! از این که قصد دارید به دنیای بازیسازی وارد شوید و یا صرفاً اطلاعاتی در مورد آن کسب کنید خرسندیم و امیدواریم اطلاعات ارائه شده در این مجموعه بتواند توجه شما را جلب کند.
قبل از هر توضیحی بهتر است با ماهیت این فیلد آشنا شویم. بازیسازی نسبت به سایر تخصصهای حوزهی نرمافزار یک فیلد متفاوت و خاص محسوب میشود؛ شاید مهمترین دلیلی که برای اثبات این ادعا وجود دارد ماهیت بازیسازی باشد. ساخت بازی در کنار این که خلق یک اثر هنری محسوب میشود به طور همزمان نیاز به مهندسی و منطق دارد.
بازیسازی ترکیبی از هنر و صنعت است.
در واقع کمتر فیلدی را میتوان مثال زد که همانند بازیسازی در آن ترکیبی از منطق و احساس به کار برده شود. اگر فرض کنیم برای نوشتن یک کتاب شعر زیبا یا خلق یک اثر هنری به احساس نیاز داریم و برای نوشتن یک قطعه کد یا حل یک مسئلهی ریاضی به تفکر منطقی، بازیسازی مهارتی است که به ترکیبی از منطق و احساس برای آن نیاز پیدا خواهیم کرد.
یک جهان بازی با قدرت احساس است که در ذهن یک نفر پدید میآید و با منطق در قالب نرمافزار پیادهسازی میشود. زیبایی یک بازی با قلب احساس و پیچیدگی و منطق آن با فکر کردن درک میشود.
با وجود این که کدنویسی بخش بدون احساس خلق یک بازی به شمار میرود اما با این حال نسبت به کدنویسی برای یک اپلیکیشن یا وبسایت خلاقانهتر است. در بیشتر اوقات جهان بازی شامل اشیا و منطقهایی است که در سایر بازیها وجود نداشتهاند؛ بنابراین برای خلق آنها باید کدهایی نوشته شود که تاکنون هیچ شخص دیگری ننوشته است. سروکار داشتن با چنین موضوعاتی مهارت حل مسئلهی کدنویس را به چالش میکشد و بنابراین این شغل کسلکننده نخواهد شد.
کدنویسی برای بازی در بیشتر اوقات شبیه حل کردن یک معمای جالب است.
این صنعت نوظهور است و آیندهی خوبی در ایران خواهد داشت. به علاوه امکان ادامهی تحصیل در این رشته در خارج از کشور وجود داشته و به تازگی تعدادی از دانشگاههای داخل کشور هم این رشته را اضافه کردهاند. همچنین در صورت موفقیت درآمد بالایی دارد.
بازیسازی؛ جزیرهی ناشناخته
بازیسازی برخلاف سایر فیلدهای تخصصی حوزهی نرمافزار در ایران فیلد نسبتاً ناشناخته و نوپایی به شمار میآید. این موضوع تا حدی است که حتی شاید افرادی که در رشتهی نرمافزار تحصیل کردهاند نیز در مورد ساخت بازی اطلاعات زیادی نداشته باشند. دلیل این موضوع به آنجا باز میگردد که تا چندین سال پیش تنها کمپانیهای بزرگ و یا سازندگان کنسولهای بازی اقدام به ساخت بازی میکردند و تصور توسعهی بازی با کامپیوترهای خانگی دور از ذهن بود. این در حالی است که این موضوع در سالهای اخیر دچار تحولات فراوانی شده است و اشتباه نیست اگر بگوییم امروز هر کس میتواند با آموزش صحیح به یک بازیساز تبدیل شده و هر چه در ذهن دارد را به مرحلهی تولید برساند. این عمل به یاری نرمافزارهایی تحت عنوان «موتور بازیسازی» صورت میپذیرد که به توضیح آنها پرداخته خواهد شد.
با وجود این که ساخت بازی لزوماً نیازی به داشتن تحصیلات در رشتهی نرمافزار ندارد (و بازیسازهای بسیار موفقی در ایران و خارج از کشور وجود دارند که تحصیلات نامرتبطی داشتهاند)، اما جالب است که بدانیم بیشتر مطالبی که در دروس این رشته خوانده میشود میتوانند در ساخت بازی (به صورت مستقیم یا غیرمستقیم) کاربرد داشته باشند؛ برخلاف فیلدهایی مانند طراحی وب که این حجم از ارتباط را با دروس رشتهی نرمافزار نداشته اما از محبوبیت بسیار بالایی در بین فارغالتحصیلان این رشته برخوردار هستند.
لیست دروسی که یک مهندس نرمافزار در دورهی کارشناسی پاس میکند (دانشگاه تهران) و میزان کاربرد آنها در بازیسازی
ناشناختگی یک فیلد میتواند معایب و مزایای خودش را داشته باشد؛ مزایایی مثل اشباع نبودن فیلد و معایبی همچون کمبود منابع فارسی. اما چنین فاکتورهایی نباید در تصمیمگیری یک فرد اثر بگذارد؛ چرا که هر فیلدی تا قبل از شناخته شدن خود دچار چنین وضعیتی بوده و بازیسازی در آستانهی یک شکوفایی در ایران است.
موتور بازیسازی چیست؟
برای ساختن یک بازی دو راه کلی وجود دارد.
اولین راه که تقریباً هیچ توسعهدهندهای سمت آن نمیرود استفاده از ابزارهای توسعهی بومی سیستم عاملی است که قصد اجرای بازی بر روی آن را داریم. به عنوان مثال اگر بخواهیم برای ویندوز بازی بسازیم باید از ویژوال استودیو و برای اندروید از اندروید استودیو استفاده کنیم. سپس برای تک تک قابلیتهای بازی (مثل انیمیشن، فیزیک و…) کدنویسی کرده و یا به دنبال کتابخانههای سازگار با ابزار توسعهی مورد استفاده بگردیم. این راه توسعه علاوه بر سرعت پایین و سختی زیاد انجام آن، در نهایت تنها برای یک سیستم عامل خروجی خواهد داد.
راه دوم که تقریباً تمام بازیهای مطرح موبایل، پیسی و کنسولها با آن ساخته شدهاند استفاده از نرمافزارهایی به نام موتور بازیسازی (Game Engine) است. در نرمافزارهای موتور بازیسازی توسعهدهنده اجزای بازی (مثل تصاویر، صداها، فونتها و…) را وارد پروژه کرده و بیشتر مراحل توسعه را بدون نیاز به کدنویسی و با استفاده از ابزارهای داخلی موتور بازیسازی (مثل ابزارهای انیمیشنسازی، موتور فیزیک و…) انجام میدهد. این عمل باعث میشود تا کدنویسی صرفاً در مواقعی انجام شود که راه دیگری به جز نوشتن کد وجود نداشته باشد و این در سادگی و سرعت روند توسعه تاثیر چشمگیری دارد.
اما نقطهی قوت استفاده از موتور بازیسازی این است که تنها با یک بار توسعه و کدنویسی میتوان از پروژه برای تمامی پلتفرمهای شناختهشده (مثل ویندوز، اندروید، آیفون و…) خروجی گرفت و دیگر نیازی به چندین بار توسعه و تسلط کامل روی ابزارهای توسعهی بومی سیستمعاملها وجود ندارد. البته این گفته تا حدی آرمانگرایانه است؛ چرا که ممکن است تغییرات کوچکی مثل پشتیبانی از ماوس برای ویندوز و پشتیبانی از تاچ برای موبایلها بر روی پروژه داده شود تا بتوان از آن در پلتفرم هدف استفاده کرد. اما با این وجود میتوان کلیت آن را درست در نظر گرفت.
قدرت موتور بازیسازی در این است که میتواند کل پروژه را به سادگی به فایل قابل اجرا در پلتفرم مقصد تبدیل کند.
این کار با استفاده از پلیر موتور بازیسازی انجام میشود. پلیر موتور بازیسازی نرمافزاری است که توسعهدهندگان موتور بازیسازی برای تک تک پلتفرمهایی که میخواهند موتورشان از آنها پشتیبانی کند توسعه میدهند. برای مثال اگر بخواهند امکان گرفتن خروجی از پروژهها برای ویندوز و اندروید وجود داشته باشد برای این دو سیستمعامل پلیرهایی با استفاده از ابزارهای بومی آن سیستمعاملها مینویسند.
پروژهای که بازیساز در موتور بازیسازی توسعه میدهد در نهایت به فرمت خاصی در میآید که در این پلیرها قابل اجراست. بنابراین هنگام خروجی گرفتن برای یک پلتفرم کافی است موتور بازیسازی پلیر مخصوص آن پلتفرم را به فرمت تبدیلشدهی بازی اضافه کند تا پکیج نهایی در پلتفرم مربوطه قابلیت اجرا شدن داشته باشد.
به طور معمول کمپانیهای بزرگ بازیسازی موتورهای بازیسازی خود را دارند که توسط خودشان توسعه یافته و آن را در اختیار عموم قرار نمیدهند؛ مثل موتور بازیسازی Euphoria که بازی Clumsy Ninja با آن ساخته شده یا UbiArt Framework که در Ubisoft توسعه داده شده است.
اما موتورهایی هم وجود دارند که در دسترس عموم قرار گرفته و هر کس میتواند با استفاده از آنها به ساخت بازی بپردازد. از میان این موتورها چهار مورد در ایران شناختهشدهتر از سایرین هستند:
موتور بازیسازی آنریل: این موتور بسیار پیشرفته و قدرتمند است و از آن برای ساخت بازیهای AAA و نسل هشتمی استفاده میشود. به دلیل پیچیدگی زیاد برای شروع کار توصیه نمیشود. کدنویسی در این موتور با زبان سی پلاس پلاس صورت میپذیرد.
موتور بازیسازی یونیتی: این موتور تا حدی قابل رقابت با آنریل است و معمولاً برای ساخت بازیهای سبکتر از AAA مثل بازیهای موبایل و کنسولهای قابل حمل (مانند نینتندو سوییچ) استفاده میشود. اغلب برای شروع بازیسازی یادگیری این موتور توصیه میشود. کدنویسی در این موتور با زبان سی شارپ صورت میپذیرد.
موتورهای بازیسازی گیم میکر و کانستراکت: این موتورها به دلیل سادگی زیاد خروجی چندان حرفهای ندارند و بیشتر برای آموزش و علاقهمندسازی دانشآموزان به بازیسازی کاربرد دارند. خوشبختانه در نظام آموزشی جدید مدارس درسی به نام کار و فناوری وجود دارد (جایگزین درس حرفه و فن نظام قدیم) که در پایهی نهم به آموزش بازیسازی با موتور گیم میکر میپردازد. ساخت بازی در این موتورها نیازی به دانش تخصصی ندارد و میتوان بدون کدنویسی نیز در آنها به توسعه پرداخت. هر چند که گیم میکر از زبان تخصصی خودش یعنی GML (مخفف Game Maker Language) و کانستراکت از زبان جاوا اسکریپت پشتیبانی میکند.
انتخاب موتور بازیسازی مناسب برای توسعهدهندگان یک چالش محسوب میشود. یونیتیکورن (همانطور که از اسمش مشخص است) موتور یونیتی را برای آموزش انتخاب کرده است. ما معتقدیم که در حال حاضر و در شرایط فعلی یونیتی بهترین گزینه برای یادگیری در بدو ورود به حرفهی بازیسازی است. در ادامه دلایل این انتخاب بررسی میشود.
چرا یونیتی؟
یونیتی یک موتور ساخت بازی است که اولین بار در کنفرانس جهانی توسعهدهندگان اپل در سال 2005 از آن رونمایی شد و در طی این مدت توانست به یکی از مشهورترین و پرکاربردترین موتورهای بازیسازی تبدیل شود. سختی یادگیری (یا بهتر است بگوییم Learning Curve) و پیچیدگی یونیتی در بین موتورهای بازیسازی «متوسط» است؛ یعنی نه آنقدر مبتدی و ضعیف که کارایی حرفهای نداشته باشد و نه آنقدر پیچیده که افراد و گروههای مستقل نتوانند از آن استفاده کنند.
یونیتی شناخته شده و مطرح است و از تکنولوژیهای بهروز توسعهی بازی (خصوصاً برای موبایل) به شمار میرود. بیشتر استودیوهای معروف بازیسازی در سراسر جهان «در همین لحظه» در حال استفاده از یونیتی هستند. بازیهای بسیار موفقی مانند
- Monument Valley
- Florence
- Cuphead
- Gris
که برندهی جایزههای جهانی شدهاند از یونیتی برای توسعه استفاده کردهاند. طبق آمار رسمی یونیتی:
- پنجاه درصد بازیهای موبایل با یونیتی ساخته شدهاند.
- هفتاد درصد بازیهای برتر iOS و اندروید با یونیتی ساخته شدهاند.
- هماکنون بازیهای ساخته شده توسط یونیتی بر روی ۳ میلیارد دستگاه الکترونیکی نصب هستند.
یونیتی در سیستم عاملهای ویندوز، مک و لینوکس قابلیت نصب شدن دارد.
یونیتی در ایران
یونیتی به شدت مورد توجه توسعهدهندگان ایرانی قرار گرفته است. تقریباً همهی بازیهای برگزیدهی مارکتهای اندرویدی ایرانی از موتور یونیتی استفاده کردهاند.
بیشتر سرویسدهندگان ایرانی (اندروید مارکتها، شبکههای تبلیغات، ارائهدهندگان خدمات آنلاین و…) کتابخانههای خود را تنها برای یونیتی منتشر کردهاند و یا پشتیبانی قدرتمندی از سایر موتورهای بازیسازی (حتی آنریل) ندارند.
فرصتهای شغلی مرتبط با توسعهی بازی در ایران اغلب به توسعهدهندگان یونیتی محدود میشود.
Asset Store جامع یونیتی
هر بازی ویدیویی برای ساخته شدن به فایلهایی مانند تصویر کاراکترها، صداهای مختلف، موسیقی و… احتیاج دارد. به این فایلها asset گفته میشود. جمعآوری یا تهیهی assetها در مرحلهی پیشتولید بازی صورت میپذیرد.
به طور کلی روند ساخت یک asset ارتباط مستقیمی با بازیسازی ندارد؛ بلکه بازیساز بسته به نیاز خود سفارش تولید asset موردنظرش را به یک فرد متخصص میدهد (برای مثال از یک آهنگساز میخواهد برای بازی یک آهنگ ساخته و فایل نهایی را به وی تحویل دهد).
برای بازیساز اهمیتی ندارد که asset چگونه ساخته شده است؛ مهم نیست که یک طراح برای طراحی از فتوشاپ استفاده کرده است یا Procreate؛ بازیساز تنها فایل نهایی را دریافت کرده و وارد موتور بازیسازی میکند.
برونسپاری با وجود این که موجب کیفیت بالای assetهای موردنظر بازیساز میشود اما هزینهی زیادی در پی خواهد داشت. این هزینهی زیاد برای افراد یا گروههای مستقل چندان منطقی نیست. یک راه کمهزینهتر استفاده از assetهای آمادهای است که متخصصین مربوطه آن را تهیه کرده و با قیمت بسیار پایینتر و یا حتی رایگان در اختیار بازیساز قرار میدهند. یکی از جامعترین مخازن دریافت asset برای بازی فروشگاه رسمی یونیتی با نام Asset Store بوده که بسیاری از موارد آن رایگان است و امکان دانلودشان وجود دارد.
کراس پلتفرم بودن یونیتی
همانطور که پیشتر اشاره شد، امکان گرفتن خروجی برای پلتفرمهای مختلف (کراس پلتفرم بودن) یکی از مزایای موتورهای بازیسازی است. یونیتی توانسته است با پشتیبانی از بیش از ۲۵ پلتفرم مختلف (از جمله اندروید، iOS، ویندوز، مک، لینوکس، پلی استیشن، ایکس باکس، انواع هدستهای واقعیت مجازی، وب، نینتندو سوییچ، تلویزیون اندروید، تلویزیون اپل و…) در صدر لیست موتورهای بازیسازی کراس پلتفرم قرار گیرد.
امکان پیشرفت آسان
یونیتی دارای منابع آموزشی فراوان و داکیومنتیشن بسیار جامع است. همچنین به دلیل آن که افراد زیادی در حال توسعه با یونیتی هستند این موتور جامعهی فعالی از توسعهدهندگان را در بر میگیرد. به همین دلیل هنگام برخورد با یک مشکل و گوگل کردن آن احتمال زیادی وجود دارد که پاسخ آن در نتایج گوگل (به خصوص در وبسایت Stack Overflow) قرار داشته باشد. حتی در صورت پیدا نکردن جواب میتوان مشکل مربوطه را در تالار پرسش و پاسخ یونیتی مطرح کرد و در زمان کوتاهی از سایر توسعهدهندگان پاسخ گرفت. دیگر آن که افراد زیادی ویدیوهای بسیار مفید از آموزش یونیتی در یوتیوب قرار دادهاند که همگی به رایگان قابل دسترس هستند.
گوگل، یوتیوب و استک اورفلو؛ بزرگترین اساتید بازیسازی
یونیتیکورن چیست؟
بیشتر افرادی که به ساخت بازی ویدیویی علاقهمند هستند در مورد نحوهی یادگیری آن اطلاع دقیقی ندارند. منابع آموزشی فارسی در این زمینه بسیار محدود و اغلب برای شروع گیجکنندهاند و همواره نیاز به وجود منبعی کاربردی و بهروز برای ساخت بازی به زبان فارسی احساس شده است. چه بسا افراد بااستعدادی (به خصوص دانشآموزان) که در نبود چنین منابعی هیچگاه فرصت آشنایی با این هنر/صنعت زیبا را پیدا نکردند و یا با مراجعه به منابع اشتباه از علاقهی خود دلسرد شدند.
یونیتیکورن تلاشی است برای تغییر این اتفاق و قرار دادن افراد علاقهمند در ابتدای مسیر ساخت بازی. ما سعی کردهایم یونیتیکورن همان منبعی باشد که آرزو داشتیم در ابتدای مسیرمان وجود داشت و به ما پایهی بازیسازی و طرز تفکر موردنیاز برای آن را آموزش میداد. امیدواریم که تا حدی به این نگرش نزدیک شده باشیم.
نیمکرهی راست مغز شما فعالتر است یا نیمکرهی چپ آن؟
بسته به این که بیشتر هنرمند هستید یا در محاسبات و منطق استعداد دارید میتوانید در جنبههای مختلف بازیسازی موفق شوید؛ مهارتهای یک بازیساز میتواند به طراحی هنری یا محاسبات منطقی و برنامهنویسی متمایل باشد. یونیتیکورن با بررسی این جنبهها به شما کمک میکند تا از بین آنها علاقه و نقطه قوت خود را کشف کرده و در آن زمینه پیشرفت کنید.
آیا یونیتیکورن رایگان است؟
یکی از رویکردهای اصلی یونیتیکورن آموزش رایگان بوده است. ما قویاً بر این باور هستیم که هر کس باید امکان دسترسی آسان و کمهزینه به آموزشهای کاربردی از موضوعات موردعلاقهی خود را داشته باشد. بنابراین هدف اصلی یونیتیکورن بیشتر از هر چیز دیگری ایجاد یک منبع فارسی مناسب برای شروع بوده است.
با این وجود بروزرسانی دائمی و بالا نگه داشتن کیفیت مطالب همواره مستلزم هزینههای زمانی و مالی برای ما بوده است. بنابراین در صورتی که مطالب موجود در یونیتیکورن را مفید ارزیابی و قصد کمک به پیشرفت پروژه را دارید میتوانید با استفاده از لینک «حمایت مالی» از یونیتیکورن حمایت کنید.
تماس با یونیتیکورن
ما همواره منتظر دریافت نظرات و پیشنهادات شما برای بهتر و یا کاملتر شدن یونیتیکورن هستیم. برای تماس با ما کافی است از طریق یکی از راههای ارتباطی موجود در قسمت پایین وبسایت اقدام نمایید.