شغل بازی سازی یعنی چی؟
اگر شما هم دوست دارید در آینده وارد صنعت بازیسازی و تخصص برنامه نویسی شوید این مطلب میتواند مسیر یادگیریای که در چند سال آینده دارید را برایتان روشن کند. در این مقاله می خواهیم شما را با این موضوع آشنا کنیم.
هر بازیای برای ساخته شدن نیاز به یک برنامه نویس دارد. به طور کلی، برنامه نویس مسئول نوشتن کدهایی است که توسط آن بازی اجرا میشود. کارهای روزانه یک برنامه نویس شامل پیادهسازی ویژگیهای گیمپلی، رفع ایرادات و باگها در سیستمهای موجود و همکاری با طراحان و هنرمندان است. برنامه نویس باید مطمئن شود طراحان و دیگر اعضای توسعه دهنده میتوانند از ویژگیها و سیستمهایی که ساخته، استفاده کنند و این سیستمها جوابگوی نیازهای آن ها به طور صحیح است.
همکاری با طراحان و هنرمندان یکی از نکات مهم است. برنامه نویس باید بتواند مفاهیم روزانه یا کوتاه مدتی که طراحان به آن میپردازند را بفهمد و راه حلی برای پیاده سازی آن ها در نظر بگیرد. وی همچنین باید راه حلهایی ارایه دهد که بهینه باشد و از منابع دستگاه مورد نظر هر چقدر که میتواند کمتر استفاده کند.
چگونه شروع کنم؟
یکی از مسیرهای یادگیری برنامه نویسی از طریق تحصیل در رشتهی علوم کامپیوتر یا مهندسی نرم افزار است. هم چنین رشتههای مختص بازیسازی نیز به مرور در حال گسترش هستند و میتوانند یکی از گزینههای خوب باشند. البته که برای برنامه نویس شدن نیازی به مدرک و تحصیل نیست اما پیشنهاد میکنم از طریق دانشگاه یا موسسههای آموزشی این مسیر پیگیری شود.
یکی از دلایل اصلی آن این است که توسعهی بازی بسیار سخت است. تحصیل در دانشگاه میتواند به یادگیری مباحث پایهای برنامه نویسی کمک شایانی کند. این مباحث شامل یادگیری زبانهای برنامه نویسی از جمله C و C#، ساختمان دادهها و الگوریتم میشود. همچنین با تحصیل در یک رشتهی دانشگاهی فرصت آشنایی و همکاری با افرادی را دارید که علاقههای مشترکی با شما دارند. حتی شاید یک روزی تیم بازیسازی خود را از طریق دوستان دانشگاهتان تشکیل دهید.
فقط باید به یاد داشته باشید که همه چیز را در دانشگاه آموزش نمیدهند و برای کسب مهارت باید تلاش بسیار بیشتری داشت. در ادامه مسیری که یک برنامه نویس برای یادگیری میتواند طی کند را با هم مرور خواهید کرد.
زبان انگلیسی مهمترین مهارت برنامه نویسان
بهتر بود قبل از هر چیزی ذکر میکردم اگر تا الان زبان انگلیسی را شروع نکردهاید همهی کارهایتان را کنار بگذارید و به سراغش بروید. بدون دانستن زبان انگلیسی اگر هم بتوانید مسیرتان را آغاز کنید اما قطعا در ادامه راه و برای پیشرفت بیشتر دچار سختی خواهید شد. مهمترین منابع یادگیری برنامه نویسی به زبان انگلیسی هستند. سایتهای پرسش و پاسخ به انگلیسی هستند. تجربههای توسعهدهندههای موفق از طریق این زبان منتقل میشود. پس حسابی روی انگلیسی سرمایه گذاری کنید.
مسیر یادگیری برنامه نویسی بازی
اولین چیزی که باید یاد بگیرید ساختار و نحوهی کلی برنامه نویسی است. این کار از طریق یادگیری زبان برنامه نویسی انجام میشود. یک زبان برنامه نویسی مثل جاوا، سی، سیشارپ یا پایتون را انتخاب کنید و آن را از طریق منابع موجود در اینترنت یاد بگیرید. مفاهیم پایه (متغیر، حلقهها، توابع، ارثبری و …) و نحوه استفاده از آن ها را یاد بگیرید. سپس یک بازی ساده بدون استفاده از گرافیک درست کنید. مثلا میتوانید یک بازی بر اساس متن طراحی و آن را پیاده سازی کنید. با این کار به صورت ساده خواهید فهمید چطور برنامه نویسی برای ساخت بازی به کار میرود.
سپس باید با مفاهیم ساختمان داده و الگوریتمها آشنا شوید. یکی از کتب مرجع در این زمینه CLRS است. ساختارها و رفتارها را یاد بگیرید. نحوه محاسبه پیچیدگی زمانی و فضایی الگوریتمها را بیاموزید. سعی نکنید این مفاهیم را حفظ کنید. صرفا بر خود مفهوم و یادگیری آن تمرکز کنید. سپس میتوانید به سراغ الگوریتم و حل مساله بروید. مسائل مختلف را با استفاده از الگوریتمهای مختلف حل کنید.
اگر علاقه زیادی به ریاضی ندارید خبر بدی برایتان دارم! بهتر است با ریاضی آشتی کنید چرا که مباحث مختلف ریاضی از جمله ریاضیات گسسته، آمار و احتمال، بردارها، ماتریسها و به طور کلی جبر خطی از جمله چیزهایی هستند که در طول دوران شغلی با آن ها سر و کله خواهید زد.
به مرور میتوانید دانش خودتان در زبانهای برنامه نویسی را بیشتر کنید. اگر تا اینجای کار C و C++ را یاد نگرفتهاید دیگر وقتش است شروع کنید. در اینترنت به دنبال مباحث متوسط (Intermediate) و حتی پیشرفته ( Advanced) زبانهای خانواده سی بگردید. همچنین بهتر است شناختی نسبت به زبان سطح ماشین اسمبلی ( Assembly) داشته باشید. اکنون میتوانید به سراغ موتورهای بازی سازی بروید. یک موتور رایگان انتخاب کنید و چندین پروتوتایپ و بازی با استفاده از آن بسازید. بعد از ساخت چندین نمونه میتوانید ادعا کنید شما یک برنامهنویس یا توسعهدهنده بازی شدهاید.
همچنین مباحثی وجود دارند که یادگیری آن ها چندان سخت نیست:
- Git
- توانایی تحقیق و پرسش
- Design Patterns
عمیقتر شدن
با این که اکنون دانش خوبی برای ساخت بازی کسب کردهاید اما در این حرفه همیشه چیزی برای یادگیری وجود دارد. تازه میتوانید اسم خودتان را توسعهدهندهای بگذارید که مشتاق به یادگیری بیشتر و حرفهای شدن است. برای این کار بهتر است با تئوری کامپیوتر آشنا شوید. مباحث زیر خلاصهای از چیزهایی است که باید دانشی سطحی از هرکدام و عمیق در چند مورد کسب کنید:
- سیستم عامل
- معماری کامپیوتر
- گرافیک کامپیوتری
- هوش مصنوعی
- پایگاه داده
- شبکه
- APIهای گرافیکی ( DirectX, OpenGL و …)
آشنایی با این مباحث برای تبدیل شدن یه بک برنامه نویس حرفهای بازی ضرورت است. حداقل باید بدانید که راجع به چیزی صحبت میکنید یا حتی صحبتهای بقیه را متوجه شوید. اگر در اوایل کار نتوانستید تمامی این مباحث را یاد بگیرید نا امید نشوید. قرار نیست همه چیز را همه بلد باشند. همه ما به مرور و با چندین سال کار و مطالعه توانایی هایمان را ارزشمندتر میکنیم.
ورود به صنعت بازی سازی
برای ورود به صنعت بازیسازی و ساخت بازیها دو راه کلی وجود دارد. کار کردن در یک شرکت یا مستقل بودن. به لطف نشر دیجیتال بازار بازیهای مستقل در چند سال گذشته به شدت داغ شدهاست. اما همین رشد بی سابقهی بازیهای مستقل، عرصه را برای توسعه دهندگان سخت کرده است. امروزه صحبتهای مختلفی در رابطه با Indiepocalypse ( آخرالزمان بازیهای مستقل) وجود دارد. این عبارت به سال های اخیری اشاره دارد که عرضهی بازیهای مستقل به شدت زیاد شده است.
چند سال قبل شاید در بیشترین حالت هفتهای بیست بازی در فروشگاه استیم عرضه میشد. اکنون این رقم به 20 بازی در روز رسیده است در حالی که تقاضای بازی ( تعداد کاربران) به همین میزان رشد نکرده است. حتی بازیهایی که نقدهای مثبت و کاور رسانهای خوبی دریافت میکنند به سختی به سود دهی میرسند. بازی سازی قبلا کاری بود که کمتر کسی میتوانست انجام دهد. اکنون به لطف پیشرفت تکنولوژی و وجود موتورهای بازی سازیای مثل یونیتی هر کسی میتواند بازی بسازد. در نتیجه بازیای که میسازید باید خلاقانه باشد و بهترین کیفیت را داشته باشد.
با این توصیفات شاید مستقل کار کردن خیلی ایدهی خوبی نباشد. اما هر مسیری خوبی و بدیهای خودش را دارد. کار در یک شرکت بازیسازی نه تنها حقوق تضمین شده و عدم نگرانی بابت مسائل مختلف بازیسازی را دارد بلکه فرصت یادگیری از افراد بهتر را نیز فراهم میکند. تجربهای که از کار کردن در شرکتهای بزرگ به دست میآید به سختی در حالت مستقل قابل دسترسی است. با این حال معایبی چون کار کردن روی چیزهای حوصله سر بر دارد. یا این که دیگر بازیسازی حس و حال بازی ساختن را نخواهد داشت. صرفا «کار» کردن است.
البته همهی این ها به نوع شرکتی که در آن کار کنید یا نوع بازی مستقلی که میسازید و حتی شخصیت خودتان بستگی دارد. بهتر است قبل از انتخاب مسیرتان تمامی خوبیها و بدیها را با شخصیت خودتان بسنجید و سپس انتخاب کنید.
در هر صورت برای یادگیری بازیسازی بهترین کار این است که مقدار زیادی بازی بسازید. میتوانید با ساخت بازیهای سادهای مثل Pong و Flappy Bird شروع کنید و به مرور آن ها را پیچیدهتر کنید. همچنین لازم نیست از ابتدا بازیهای خلاقانه بسازید. کپی کردن دیگر بازیها اگر به منظور یادگیری باشد ایرادی ندارد. در این صورت دیگر درگیر طراحی بازی و گرافیک و صداگذاری آن نخواهید شد. البته فراموش نکنید که صنعت بازی یک صنعت خلاقانه است.
اگر می خواهید بازی های اندروید درست کنید بهتر است اول برنامه نویسی اندروید یاد بگیرید، برای یاد گرفتن برنامه نویسی موبایل می توانید دوره آموزش اندروید استودیو را بخرید.