بازی سازی را از کجا شروع کنیم؟

اجازه بدین ابتدا راجع به کلمه بازی سازی! این کلمه اشتباه رایج در ادبیات تکنولوژی صحبت کنیم، اما قبل از اون بدونیم منظور از بازی توی این مقاله یک محصول نرم افزاریه که مستقل از اهداف فرهنگی یا مالی سازندگان این محصول در ظاهر برای سرگرم کردن مخاطب ساخته شده. پس هر گونه محصول غیر دیجیتالی که ممکنه ما بهش بازی بگیم ( اعم از بازی های صفحه ای مثل شطرنج و تخته نرد و یا اسباب بازی ها) منظور این مقاله نیست اند، هر چند در عمل ممکنه در بعضی از مراحل تولید با بازی های دیجیتال اشتراکات زیادی داشته باشن.چرا بازی سازی مثل شیشه سازی یا آهنگ سازی نیست؟بیشتر مشکلات شما از همین نقطه آغاز میشه که تصور میکنید بازی سازی مثل خیلی مهارت های دیگه سلسله مراتبی از آموزش ها داره که با گذروندن اونها شما تبدیل به اون شخص رویایی یا همون آقا یا خانم بازی ساز میشید! ولی شوربختانه بازی سازی فقط یک مهارت نیست که شما اون یک مهارت رو آموزش ببینید و تمام . بازی با همون تعریفی که در ابتدای مقاله داشتیم یه محصول نرم افزاریه که تعداد زیادی از آدم ها با مهارت های مختلف ممکنه در ساخت، توسعه یا بازاریابی و یا تست و ارزیابی این محصول شرکت داشته باشن. شما در توسعه بازی های خیلی بزرگ و تجاری در بهترین حالت میتونید یک نفر ازین آدم ها باشین. هرچند تو محصولات کوچیک (که ما بهشون میگیم indie یا همون مستقل) دیده میشه که یک یا چند نفر در قالب یک تیم کوچیک تمامی نقش ها رو بر عهده میگیرن، جلوتر با این آدم ها، یا بهتره بگیم نقش ها بیشتر آشنا میشیم و میگیم برای تبدیل شدن به هر کدوم از اونها باید چه چیزهایی رو یاد بگیرین. پس از این لحظه به بعد هیچ وقت از کلمه بازیس ساز استفاده نکنید!پس به جاش چی بگیم؟بازی به عنوان یک محصول نرم افزاری و همینطور یک محصول سرگرم کننده و در عین حال یک محصول هنری(!) به سه عضو اصلی در تیم تولید نیاز داره که مسئولیت این سه بخش رو بر عهده بگیرن! هر چند همون طور که گفتیم خیلی مواقع دو یا هر سه این نقش ها ممکنه بر عهده یک نفر باشه و مشخصا در محصولات بزرگتر ممکنه برای هر کدام از این سه نقش تعداد زیادی نیرو اختصاص داده بشه ولی چیزی که نمیشه ازش فرار کرد اینه که باید یک بار به صورت جداگانه و سپس در ارتباط با سایر بخش ها به هرکدوم پرداخته بشه حتی اگه هر سه رو یک نفر انجام میده،‌ حالا ببینیم برای اینکه بتونیم عضو تیم تولید بازی باشیم (‌و نه اینکه بازیساز باشیم) باید دقیقا کی باشیم؟بازی به عنوان نرم افزار و نقش برنامه نویس یا Game Developerنقش هایی که اون بالا راجع بهشون صحبت کردیم هر سه به اندازه هم اهمیت دارن و هیچ ترتیب خاصی در اهمیت شون نیست و بدون هر کدوم محصول شما مطمئنا قرار نیست موفقیت تجاری،‌ فنی یا هنری کسب کنه! بزارید یه کشتی رو مثال بزنیم:‌ اهمیت لنگر کمتر از بادبان کشتی نیست هر چند بادبان بیشتر جلوی چشم قرار داره ولی در نهایت بدون هر کدوم از اونها شما نمیتونید وارد دریا بشید.برنامه نویس بازی کسیه که میتونه ایده ها و مکانیک های بازی رو با استفاده از زبان های برنامه نویسی کد نویسی یا اجرا کنه و احتمالا با یک یا چند موتور برنامه نویسی آشنایی داره اطلاعات خوبی از معماری نرم افزار در بازی ها داره و مهم تر از همه یخورده از کار دو نفر دیگه هم سر در میاره! (این مورد بسیار مهمه) یعنی شما اگه صرفا برنامه نویس هستین که در حوزه ای غیر از بازی فعالیت داشتین (مثلا بانک یا سرویس های خدماتی) برای ورود به صنعت بازی حتما باید اطلاعات غیر برنامه نویسی تون رو در حوزه بازی بیشتر کنید. برنامه نویس بازی بهتره کمی هم ریاضیات،‌ هندسه و فیزیک اش از بقیه بچه های مدرسه بهتر میبوده و اگر هم نبوده الان باید به این فکر کنه که در دنیای بازی ها ما خیلی وقت ها مساله های واقعی رو شبیه سازی میکنیم و شبیه سازی حرکت ها و واکنش اجسام و محیط چیزی جز ریاضیات و فیزیک نیست. همینطور آشنایی شما با الگوریتم، طراحی الگوریتم و بهینه سازی و پیچیدگی زمانی در صنعت بازی بیشتر از هر جای دیگه حیاتی محسوب میشه. پس اگر میخواید به عنوان برنامه نویس وارد این قضیه بشید آشنایی با یه زبان برنامه نویسی مثل CSharp یا ++C و یا JavaScript (میتونید از دوره های آنلاین استفاده کنید یا کتاب بخونید!) همچنین آشنایی با یک موتور بازی سازی مثل Unity ،‌ Godot و یا Unreal میتونه تا سالها توانایی شما رو در تولید بازیهای ۳ بعدی یا ۲ بعدی با سبک های مختلف تضمین کنه. برنامه نویس بازی بهتره بعد از اینکه برنامه نویسی زبان اش رو خوب یاد گرفت شروع به توسعه مهارت در موتور بازی سازی و سپس افزایش عمق دانش اش در حوزه Game Development Patterns بکنه که در انتهای این مقاله منابع خیلی خفنی رو میتونید برای هر کدوم پیدا کنید.بازی به عنوان یک محصول سرگرم کننده و نقش طراح بازی یا Game Designerبریم سراغ طراح بازی یا اگه فنی تر بخوایم بگیم Game Designer توضیح مهم نویسنده این که: من مخالف استفاده از کلمات فارسی نیستم شاید تو یه مقاله جدا مفصلا راجع بهش صحبت کردم ولی فعلا بدونیم بهتره هر کلمه ای رو در زبانی استفاده کنیم که ابهام کمتری رو اون کلمه خاص داشته باشه و ما در فارسی به کسی که با مداد روی کاغذ اجسام و اشخاص رو میکشه هم طراح و به اون کار طراحی میگیم پس استفاده از کلمه طراح بازی ممکنه ما رو با طراح هنری یا Artist دچار اشتباه کنه. پس تا به این جای کار میدونیم طراح بازی در واقع قرار نیست چیزی نقاشی کنه و خیلی اوقات این دوستان مجبورن بیشتر از بقیه کار خودشون رو توضیح بدن تا با آرتیست و برنامه نویس اشتباه گرفته نشن.ایده اصلی هر بازی، محیطی که قراره بازی در اون اتفاق بیفته،‌ خط داستانی و این دست ملزومات غیر قابل لمس ممکنه در جلسات و همفکری های تیم بازی به نتیجه برسه ولی همواره طراح بازی مسئولیت هماهنگی این موارد بعلاوه طراحی مراحل و مکانیک های بازی بالانس میزان سختی و آسونی بازی برای بازیکن، تحقیق در مورد رده سنی مخاطب و همینطور طراحی مراحل آموزش بازی رو بر عهده داره. در کنار اون طراح بازی باید قیمت آیتم های بازی،‌ میزان قدرت اسلحه ها و یا سرعت ماشین ها رو تو بازی محاسبه و در اختیار برنامه نویس قرار بده.پس اگر میخواید به عنوان طراح بازی وارد تیم بشید چیزهای خیلی زیادی هست که باید دنبال یاد گرفتن شون باشید که به طور خلاصه و حداقلی شامل موارد زیر (به ترتیب اهمیت)‌ میشه:آشنایی با سبک های مختلف بازی های دیجیتال، مختصری از تاریخچه و نحوه شکل گیری و کمی بازی کردن از هرکدوممطالعه و کسب مهارت در خصوص طراحی مرحله و مکانیک ،‌ تعیین میزان سختی بازی و بالانس اعدادآشنایی کامل با سیستم های درآمد بازی ها و سبک های پر مخاطباستفاده از ابزار های تست و آمارگیری در بازی های ( باید بدونید بازیکن ها کدوم اسلحه رو بیشتر دوست دارن و چرا؟)آشنایی مختصری در مورد روانشناسی در حوزه بازی های دیجیتالتوانایی کامل استفاده از نرم افزار های مثل excel یا trello برای ارتباط با سایر اعضای تیمتوانایی کامل تولید و ارائه مطالب در قالب مستند،‌ اسلاید یا جدولو یه عالمه مهارت دیگه که توی بخش منابع میتونید پیدا کنید…بازی به عنوان یک محصول هنری و نقش هنرمند یا Artistطراحان هنری یا آرتیستها در تیم بازی معمولاً مسئولیت تولید عناصر هنری بازی از قبیل کاراکتر ها انیمیشن ها موسیقی یا انتخاب محیط های مختلف برای بازی را برعهده دارند. طرح های هنری ممکنه در زمینه های مختلفی از قبیل محیط، کاراکتر یا موسیقی و صداگذاری به بازی اضافه بشه برای همین بسته به محصولی که تولید میکنیم ممکنه تیم هنری از یک تا چند نفر رو در بر بگیره. معمولاً وقتی تیم هنری بیشتر از چند نفر میشه یکی از اونها به عنوان کارگردان هنری یا آرت دایرکتور وظیفه هماهنگ کردن اعضای دیگه تیم و ارتباط با گیم دیزاینر و برنامه نویس رو بر عهده می گیره. کسی که معمولاً تجربه و شناخت اش در حوزه های مختلف هنری از بقیه بیشتر باشه.پس اگه به عنوان هنرمند یا آرتیست می خواهید وارد تیم بازی بشین اول از همه باید مشخص کنید که در چه زمینه ای از هنر قصد فعالیت دارین. ممکن انتخاب شما طراحی محیط باشه یا طراحی کاراکتر، خیلی از اینها مطالعات مشترک زیادی با هم دارند و خیلی هاشون مطالب تخصصی خودشون رو، ولی به طور خلاصه میشه گفت آرت در بازی‌های رایانه‌ای برخلاف رسانه های دیگه کمی با مطالب فنی تر درآمیخته است. مثلاً شما به عنوان طراحی کاراکتر جز اینکه باید اطلاعات خیلی خوبی راجع به آناتومی و یا انتخاب رنگ ها و کامپوزیشن یا ترکیب بندی داشته باشید همینطور اطلاعات خیلی خوبی هم راجع به فرمت های مختلف تصویری و اینکه آیا موتورهای بازی سازی چگونه با عناصر هنری از قبیل عکس ها و انیمیشن ها کار میکنند باید به دست بیارید. من سعی می‌کنم منابع مفیدی رو به صورت عمومی در حوزه هنر در بازی های رایانه ای در انتهای مقاله قرار بدم.منابع ای که می توانید مطالعه کنیدبه دلایل زیادی که احتمالاً خودتون هم بهتر از من میدونی مطالعه رو بیشتر از گذراندن دوره یا دیدن ویدیو بهتون توصیه می کنم ولی با این حال لینک چندتا کانال خوبه یوتیوب را هم براتون میزارم. اینجا سعی می کنم چند تا از بهترین های هر حوزه رو براتون بذارم بعضی از این کتاب‌ها یا مقالات خیلی راحت با یه سرچ ساده تو اینترنت قابل دسترسی اند ولی بعضی هاشون ممکنه کمی سخت تر پیدا بشه.برای شروع برنامه نویسی:https://www.w3schools.com/cpp/cpp_getstarted.asphttps://www.w3schools.com/cs/default.aspواسه اونایی که برنامه نویس های خفن تری هستن و میخوان بهتر بشنC# in Depth Book by Jon SkeetClean Code Book by Robert Cecil Martinبرای برنامه نویسی بازی:Developing 2D Games with Unity: Independent Game Programming with C# by Jared HalpernLearning Unreal Engine Game Development Paperback by Joanna LeeGame Programming Patterns Book by Robert Nystromhttps://youtube.com/brackeys/همینطور این کتاب رو میتونید رایگان از این لینک مطالعه کنید (خیلی کتاب خوبیه!)https://gameprogrammingpatterns.com/و اینکه میتونید رویداد های بازی سازی مثل کژوال کمپ بازار رو دنبال کنید، ویدیو های خیلی خوبی توی کانال آپارات شون میتونید پیدا کنید: آپارات | CasualCamp.ir (aparat.com)برای Game Design:The Art of Game Design Book by Jesse SchellLevel Up! The Guide to Great Video Game Design Book by Scott Rogersهر جفت این کتاب ها چون خیلی قدیمی ان نسخه الکترونیک شون به راحتی پیدا میشه (ویراست چندم چاپ کدوم سال مهم نیست) و منابع خیلی خوبی برای شروع هستنبرای آرت در بازی های رایانه ای:توضیح: حوزه های مختلف هنری خودشون خیلی کتاب دارن هر کدوم، اینجا من چند تا منبع که به بازی بیشتر مربوط میشن رو میزارماول آرت بوک های مختلفی که بعد از عرضه بازی های بزرگ معمولا میتونید پیدا کنید (تو تهران میدونم بعضی کتاب فروشی ها دارن)The Art of Dragon Age: Inquisition (Inglese) Copertina rigidaThe Art of God of War, illustrated by Jose CabreraThe Art of Magic the Gathering: Zendikar: Volume 1دوم مطالعه طراحی دیجیتال هست که میتونید از اینجا شروع کنین:https://www.ctrlpaint.com/و سوم تمرین!! و شرکت تو گردهمایی ها و همایش های مربوط به بازی و به قولی بیشتر تو باغ بودن!https://evand.com/