آشنایی با شغل برنامه نویسی بازی
هر بازیای برای ساخته شدن نیاز به یک برنامه نویس دارد. به طور کلی، برنامه نویس مسئول نوشتن کدهایی است که توسط آن بازی اجرا میشود. کارهای روزانه یک برنامه نویس شامل پیادهسازی ویژگیهای گیمپلی، ...
هر بازیای برای ساخته شدن نیاز به یک برنامه نویس دارد. به طور کلی، برنامه نویس مسئول نوشتن کدهایی است که توسط آن بازی اجرا میشود. کارهای روزانه یک برنامه نویس شامل پیادهسازی ویژگیهای گیمپلی، رفع ایرادات و باگها در سیستمهای موجود و همکاری با طراحان و هنرمندان است. برنامه نویس باید مطمئن شود طراحان و دیگر اعضای توسعه دهنده میتوانند از ویژگیها و سیستمهایی که ساخته، استفاده کنند و این سیستمها جوابگوی نیازهای آن ها به طور صحیح است.
همکاری با طراحان و هنرمندان یکی از نکات مهم است. برنامه نویس باید بتواند مفاهیم روزانه یا کوتاه مدتی که طراحان به آن میپردازند را بفهمد و راه حلی برای پیاده سازی آن ها در نظر بگیرد. وی همچنین باید راه حلهایی ارایه دهد که بهینه باشد و از منابع دستگاه مورد نظر هر چقدر که میتواند کمتر استفاده کند.
اگر شما هم دوست دارید در آینده وارد صنعت بازیسازی و تخصص برنامه نویسی شوید این مطلب میتواند مسیر یادگیریای که در چند سال آینده دارید را برایتان روشن کند.
چگونه شروع کنم؟
یکی از مسیرهای یادگیری برنامه نویسی از طریق تحصیل در رشتهی علوم کامپیوتر یا مهندسی نرم افزار است. هم چنین رشتههای مختص بازیسازی نیز به مرور در حال گسترش هستند و میتوانند یکی از گزینههای خوب باشند. البته که برای برنامه نویس شدن نیازی به مدرک و تحصیل نیست اما پیشنهاد میکنم از طریق دانشگاه یا موسسههای آموزشی این مسیر پیگیری شود.
یکی از دلایل اصلی آن این است که توسعهی بازی بسیار سخت است. تحصیل در دانشگاه میتواند به یادگیری مباحث پایهای برنامه نویسی کمک شایانی کند. این مباحث شامل یادگیری زبانهای برنامه نویسی از جمله C و C#، ساختمان دادهها و الگوریتم میشود. همچنین با تحصیل در یک رشتهی دانشگاهی فرصت آشنایی و همکاری با افرادی را دارید که علاقههای مشترکی با شما دارند. حتی شاید یک روزی تیم بازیسازی خود را از طریق دوستان دانشگاهتان تشکیل دهید.
فقط باید به یاد داشته باشید که همه چیز را در دانشگاه آموزش نمیدهند و برای کسب مهارت باید تلاش بسیار بیشتری داشت. در ادامه مسیری که یک برنامه نویس برای یادگیری میتواند طی کند را با هم مرور خواهید کرد.
زبان انگلیسی مهمترین مهارت برنامه نویسان
بهتر بود قبل از هر چیزی ذکر میکردم اگر تا الان زبان انگلیسی را شروع نکردهاید همهی کارهایتان را کنار بگذارید و به سراغش بروید. بدون دانستن زبان انگلیسی اگر هم بتوانید مسیرتان را آغاز کنید اما قطعا در ادامه راه و برای پیشرفت بیشتر دچار سختی خواهید شد. مهمترین منابع یادگیری برنامه نویسی به زبان انگلیسی هستند. سایتهای پرسش و پاسخ به انگلیسی هستند. تجربههای توسعهدهندههای موفق از طریق این زبان منتقل میشود. پس حسابی روی انگلیسی سرمایه گذاری کنید.
مسیر یادگیری برنامه نویسی بازی
اولین چیزی که باید یاد بگیرید ساختار و نحوهی کلی برنامه نویسی است. این کار از طریق یادگیری زبان برنامه نویسی انجام میشود. یک زبان برنامه نویسی مثل جاوا، سی، سیشارپ یا پایتون را انتخاب کنید و آن را از طریق منابع موجود در اینترنت یاد بگیرید. مفاهیم پایه (متغیر، حلقهها، توابع، ارثبری و ...) و نحوه استفاده از آن ها را یاد بگیرید. سپس یک بازی ساده بدون استفاده از گرافیک درست کنید. مثلا میتوانید یک بازی بر اساس متن طراحی و آن را پیاده سازی کنید. با این کار به صورت ساده خواهید فهمید چطور برنامه نویسی برای ساخت بازی به کار میرود.
سپس باید با مفاهیم ساختمان داده و الگوریتمها آشنا شوید. یکی از کتب مرجع در این زمینه CLRS است. ساختارها و رفتارها را یاد بگیرید. نحوه محاسبه پیچیدگی زمانی و فضایی الگوریتمها را بیاموزید. سعی نکنید این مفاهیم را حفظ کنید. صرفا بر خود مفهوم و یادگیری آن تمرکز کنید. سپس میتوانید به سراغ الگوریتم و حل مساله بروید. مسائل مختلف را با استفاده از الگوریتمهای مختلف حل کنید.
اگر علاقه زیادی به ریاضی ندارید خبر بدی برایتان دارم! بهتر است با ریاضی آشتی کنید چرا که مباحث مختلف ریاضی از جمله ریاضیات گسسته، آمار و احتمال، بردارها، ماتریسها و به طور کلی جبر خطی از جمله چیزهایی هستند که در طول دوران شغلی با آن ها سر و کله خواهید زد.
به مرور میتوانید دانش خودتان در زبانهای برنامه نویسی را بیشتر کنید. اگر تا اینجای کار C و C++ را یاد نگرفتهاید دیگر وقتش است شروع کنید. در اینترنت به دنبال مباحث متوسط (Intermediate) و حتی پیشرفته ( Advanced) زبانهای خانواده سی بگردید. همچنین بهتر است شناختی نسبت به زبان سطح ماشین اسمبلی ( Assembly) داشته باشید. اکنون میتوانید به سراغ موتورهای بازی سازی بروید. یک موتور رایگان انتخاب کنید و چندین پروتوتایپ و بازی با استفاده از آن بسازید. بعد از ساخت چندین نمونه میتوانید ادعا کنید شما یک برنامهنویس یا توسعهدهنده بازی شدهاید.
همچنین مباحثی وجود دارند که یادگیری آن ها چندان سخت نیست:
- Git
- توانایی تحقیق و پرسش
- Design Patterns
عمیقتر شدن
با این که اکنون دانش خوبی برای ساخت بازی کسب کردهاید اما در این حرفه همیشه چیزی برای یادگیری وجود دارد. تازه میتوانید اسم خودتان را توسعهدهندهای بگذارید که مشتاق به یادگیری بیشتر و حرفهای شدن است. برای این کار بهتر است با تئوری کامپیوتر آشنا شوید. مباحث زیر خلاصهای از چیزهایی است که باید دانشی سطحی از هرکدام و عمیق در چند مورد کسب کنید:
- سیستم عامل
- معماری کامپیوتر
- گرافیک کامپیوتری
- هوش مصنوعی
- پایگاه داده
- شبکه
- APIهای گرافیکی ( DirectX, OpenGL و ...)
آشنایی با این مباحث برای تبدیل شدن یه بک برنامه نویس حرفهای بازی ضرورت است. حداقل باید بدانید که راجع به چیزی صحبت میکنید یا حتی صحبتهای بقیه را متوجه شوید. اگر در اوایل کار نتوانستید تمامی این مباحث را یاد بگیرید نا امید نشوید. قرار نیست همه چیز را همه بلد باشند. همه ما به مرور و با چندین سال کار و مطالعه توانایی هایمان را ارزشمندتر میکنیم.
ورود به صنعت بازی سازی
برای ورود به صنعت بازیسازی و ساخت بازیها دو راه کلی وجود دارد. کار کردن در یک شرکت یا مستقل بودن. به لطف نشر دیجیتال بازار بازیهای مستقل در چند سال گذشته به شدت داغ شدهاست. اما همین رشد بی سابقهی بازیهای مستقل، عرصه را برای توسعه دهندگان سخت کرده است. امروزه صحبتهای مختلفی در رابطه با Indiepocalypse ( آخرالزمان بازیهای مستقل) وجود دارد. این عبارت به سال های اخیری اشاره دارد که عرضهی بازیهای مستقل به شدت زیاد شده است.
چند سال قبل شاید در بیشترین حالت هفتهای بیست بازی در فروشگاه استیم عرضه میشد. اکنون این رقم به ۲۰ بازی در روز رسیده است در حالی که تقاضای بازی ( تعداد کاربران) به همین میزان رشد نکرده است. حتی بازیهایی که نقدهای مثبت و کاور رسانهای خوبی دریافت میکنند به سختی به سود دهی میرسند. بازی سازی قبلا کاری بود که کمتر کسی میتوانست انجام دهد. اکنون به لطف پیشرفت تکنولوژی و وجود موتورهای بازی سازیای مثل یونیتی هر کسی میتواند بازی بسازد. در نتیجه بازیای که میسازید باید خلاقانه باشد و بهترین کیفیت را داشته باشد.
با این توصیفات شاید مستقل کار کردن خیلی ایدهی خوبی نباشد. اما هر مسیری خوبی و بدیهای خودش را دارد. کار در یک شرکت بازیسازی نه تنها حقوق تضمین شده و عدم نگرانی بابت مسائل مختلف بازیسازی را دارد بلکه فرصت یادگیری از افراد بهتر را نیز فراهم میکند. تجربهای که از کار کردن در شرکتهای بزرگ به دست میآید به سختی در حالت مستقل قابل دسترسی است. با این حال معایبی چون کار کردن روی چیزهای حوصله سر بر دارد. یا این که دیگر بازیسازی حس و حال بازی ساختن را نخواهد داشت. صرفا «کار» کردن است.
البته همهی این ها به نوع شرکتی که در آن کار کنید یا نوع بازی مستقلی که میسازید و حتی شخصیت خودتان بستگی دارد. بهتر است قبل از انتخاب مسیرتان تمامی خوبیها و بدیها را با شخصیت خودتان بسنجید و سپس انتخاب کنید.
در هر صورت برای یادگیری بازیسازی بهترین کار این است که مقدار زیادی بازی بسازید. میتوانید با ساخت بازیهای سادهای مثل Pong و Flappy Bird شروع کنید و به مرور آن ها را پیچیدهتر کنید. همچنین لازم نیست از ابتدا بازیهای خلاقانه بسازید. کپی کردن دیگر بازیها اگر به منظور یادگیری باشد ایرادی ندارد. در این صورت دیگر درگیر طراحی بازی و گرافیک و صداگذاری آن نخواهید شد. البته فراموش نکنید که صنعت بازی یک صنعت خلاقانه است.
دیدگاهها و نظرات خود را بنویسید
برای گفتگو با کاربران ثبت نام کنید یا وارد حساب کاربری خود شوید.
سلام مرسی از اینکه وقت گذاشته بودید.
برای من یه سوال مطرح شد
اینکه در کنکور لازم است رتبه خوبی بدست بیاریم و وقت زیادی براش بگذاریم ؟
و ما متاسفانه تو کشورم دانشگاه بازی سازی نداریم آیا نیاز به رفتن به همچین دانشگاه هایی هست یا خیر ؟
اگر هست چگونه به خارج کشور و به همچین دانشگاه هایی بریم؟
رشته ریاضی فیزیک هستم
کیفیت این مقالات خیلی بالاست مرسی از دوستانی که روی این مقالات کار می کنند
مقاله مفیدی بود
ممنون جناب میرزائی عزیز
سلام دمت گرم من هر چی برای برنامه نویسی بازی می خواستم پیدا کردم زبان انگلیسیم خوب هست ولی نه زیاد از تمام درس های کلاس انگلیسی رل بیشتر دوست دارم
سلام
این مورد رو هم باید ذکر می کردید
متأسفانه بصورت آزاد و رایگان هیچ کس آموزش زبان های کامپایلریُ غیر مفسریُ نذاشته
هیچ منبع آموزشی ندارن بجز همین به دانشگاه رفتن که این مورد توی ایران هم بدرد نمی خوره و خرید آموزش های ویدیویی آنلاینی که توسط اشخاص مختلفی ساخته شدن هم هیچ کدوم کامل نیستن و مجبور میشی پکیج های زیادیُ تهیه کنی که هم هزینه زیادی می خواد هم هرکدوم واسه بازاریابی تایم دوررو بیخودی زیاد کرده که بازم به اندازه همون دانشگاه رفتن وقت گیر میشه مثلا 10 سال باید آموزش ببینه تا بتونه یک زبان کامپایلری با همه چیش یعنی بصورت کامل یاد بگیره
کلی راجب سی پلاس پلاس جستجور کردم و بارها زدم full course اما همش آموزش مقدماتی بود که اصلا ربطی به سی پلاس پلاس نداره و این مقدمات توی همه زبان های برنامه نویسی مثله هم هستند
یک آموزش گیر نیوردم که موس یا کیبورد ایوت آموزش بده یا کار بروی گرافیک یا پارسینگ و فرمت ها چجوری ساخته میشن و چطوری یک ویدیو چخش میشه و دستورات بهینه سازی و غیره
هیجا گیر نیوردم
اول مقاله توضیح دادم که اولین و ضروریترین مهارتی که یک برنامهنویس ( و حتی هر کسی) باید یاد بگیره زبان انگلیسی هست و با یاد گرفتن اون مشکل محدودیت منابع حل میشه.
سلام
من انگلیسیم خوبه البته نه در حد صحبت کردن یا فهمیدن صحبت های یک شخص چون تا بخوام بیام یک جملرو ذهنی به فارسی تبدیل کنم کلی زمان میبره
بیشتر جتسجومم در منابه خارجی هست متأسفانه زبان های کامپایلریُ هیچ کس آموزش نمیده
اما در رابطه با زبان های مفسری مثله پایتون یا جاوا اسکریپت و پی اچ پی و غیره اینا همه جا بصورت کامل آموزش داده میشن و سایت هایی هستند که تمامی دستورات این زبان ها (نه فقط اون پایه ای ها که توی همه زبان های برنامه نویسی یکسان هستند) توی خودشون دارن بعلاوه آموزش کتاب خانه های مهمشون و کلی آموزش حرفه ای حتی ساخت ویدیو پلیر هم ازشون هست از بین اینا php بهترین هست سایت خودش کامل تمامی دستوراتُ توضیح داده من از سایت اصلیش استفاده می کنم
اما در مورد سی پلاس پلاس هرچی سرچ کردم full course یا advanced اصلا آموزش هایی که مد نظرم هست نمیاد
میزنم آموزش گرافیک توی زبان سی پلاس پلاس graphic.h میاد تو یوتیوب یه چنتا دستور ساده ازش میگن و تمام
جالبه که به اینا میگن کتابخانه!!! و ربطی به سی پلاس پلاس نداره!
زبان اسمبلی از همشون بدتره هیچی ازش نیست
کلا برای یاد گیری زبان های اسمبلی متأسفانه باید زمان زیادیُ سپری کرد
بعنوان مثال برای سی پلاس پلاس بخوام بگم یا باید دانشگاهُ بگذرونی تا مدرک فوق لیسانس یا دکترا بگیری که بخودیخود زمان زیادی می بره و کلی هم چرتُ پرت که اصلا ربطی به کامپیوتر و برنامه نویسی ندارن باید بخونی بعنوان درس های عمومی
اگرم بخوای توی خانه یاد بگیری با پکیج های ارزون قیمت زیر 1 میلیون و سایت های رایگان باید کلی پکیج 300 تومنی یا 200 تومنی تهیه کنی و حدأقل 10 سال با سختی و تمرین زیاد زمان میبره که کامل یادش بگیری
راه سوم که هرکسی نمی تونه این راهُ بره
باید یک متخصص واقعی زبان سی پلاس پلاسُ پیدا کنی کسی که اونقدر دانشش بالاست که می تونه با c++ زبان برنامه نویسی بسازه چنین شخصیُ پیدا کنی و 15 تا 20 میلیون تومان هزینه کنی و توی 1 سال یا حتی کمتر بصورتر کامل c++ یاد بگیری بطوری که ساخت ویدیو پلیر با فرمت ویدیویی شخصی یا انکریپت کردن رشته واسش فان باشه و باصطلاح آب خوردن
و ساخت بازی زمینه ی برنامه نویسیش واسش آسون باشه و بیشتر وقتشُ روی الگوریتم سازی و طراحی بازی بذاره
حق با شماست دوست عزیز و دلیل این اتفاق هم دو تا چیزه: سختی زبان و کمی قدیمی بودنش. اکثر افرادی که الان در حدی که شما میخوای این زبان رو بلدن کمن و بازارکارش هم کمتره مخصوصا تو ایران.
اما پیشنهاد میکنم یه سری به کتابهای موجود بزنی و بیشتر بگردی.
https://www.toptal.com/c/the-ultimate-list-of-resources-to-learn-c-and-c-plus-plus
https://www.udemy.com/course/advanced-c-programming/
لینک اول توضیح کاملی داده از کتابها و کورسهای موجود.
اگر دنبال کلاس خوب هستی در حال حاضر جایی رو نمیشناسم ولی به تازگی یاسر ژیان کلاس سی پلاس پلاس تو مدرسه اینورس رو برگزار کرده و امیدوارم به مباحث پیشرفته هم برسه.
فکر کنم یکی از مشکلات هم ناشی از این میشه که چون قدرت زیادی داره سی پلاس پلاس باید آدم خلاقیت به خرج بده و خودش یه سری کارهارو بکنه. داکیومنت library هارو بخونه و بتونه با همونا کارش رو انجام بده که یکم سخته و تجربه میخواد.
تو دانشگاههم چیزی از سی پلاس پلاس یاد نمیدن حتی در مقاطع بالا.
البته من هم به تازگی دارم با این زبون آشنا میشم ولی اگر دوس داشتی بیشتر صحبت کنیم در اینستاگرام خوشحال میشم ;)
سلام
توی شبکه های اجتماعی نیستم فقط اسکایپ دارم
من اول واسه فان رفتم سراقش یعنی هک بازی بعدش کمکم راجب این سرچ می کردم نرم افزارارو چجوری کرک می کنن و بعدش واسه مد سازی قسطم از یاد گیری اینا بود بعد چند ماه کلا بیخیالش شدم چون به هر مدلی سرچ می کردم آموزش گرافیک توی c++ هیچی نمیومد
همش مقدمات برنامه نویسی میومد
مفهوم برنامه نویسی یا یادگیری مقدمات به خوبی می دونم کلا 10 ساعت وقت میبره
جاوا اسکریپتُ بطور جدی دنبال نکردم منظور طوری که همه دستوراتشو از حفظ باشم لازمم نیست اما می تونم خیلی راحت یک ویدیو پلیر حرفه ای مثله یوتیوب بسازم
یبار واسه تمرین نشستم جابجایی اشیاء با موس رو نوشتم و عالی کار کرد کد رو از استکاورفلو برداشتم که اونجوری که می خواستم کار نمی کردم یک الگوریتم جدید خودم روی کد انجام دادم درست شد کلا 2 ساعت زمان برد هر دستوری هم نیاز داشتم از سایت w3school برمی داشتم تمرین فقط از روی کنجاوی بود که یک پلاگینی هست که همین کارو می کنه چجوری کار می کنه
همه ی زبان ها باید اینجوری باشن که متأسفانه نیستن
باید تک تک دستوراتشون در دسترس باشه با نحوه عملکردشون مثله سایت php
حفظ کردن دستورات و نحوه عملکردشون فقط کارو سریع تر می کنه
ما باید اصل کارُ یاد بگیریم و وقتی پول آموزش میدیم برای این چیزا باشه
باید حدأقل یک مینی پروژه نمونه کار واقعیُ ببینه طرف تا شیوه کد نویسی و مفهوم برنامه نویسیُ یاد بگیره
من باصطلاح پدرم در اومد تا این 2 موردُ یادبگیرم وگرنه دستورات براحتی هرچی لازم داشته باشم توی خوده سایت پی اچ پی یا w3sc یا دولوپر موزیلا هست و غیره هست