ویرگول
ورودثبت نام
اشکان محمدی
اشکان محمدییه برنامه نویس ساده که از تجربیات و آموخته هاش می نویسه
اشکان محمدی
اشکان محمدی
خواندن ۸ دقیقه·۶ سال پیش

حالا چی شد رفتم سراغ بازی سازی !؟


چند وقت پیش، بعد از مدت ها دوباره به سرم زد که به دنیای بازی سازی سری بزنم. مدت ها پیش چند بار تلاش کرده بودم که با unity بازی بسازم اما متاسفانه هربار با شکست مواجه میشدم. تجربه شکست های متعدد در ساخت بازی با unity تبدیل به زخم کهنه ای شده بود که هر از چند گاهی اذیتم می کرد.

مشکلات من با بازی سازی و سختی هایی که کشیدم.

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

یادمه قبلا خیلی بازی های کامپیوتری رو دوست داشتم. یادمه که خیلی نسبت به گیم پلی، گرافیک و ... بازی ها گیر می دادم. اما الان به همون بازی ها به طور تحسین آمیزی نگاه می کنم و از اونها الهام میگیرم.

این نوع طرز تفکر به خاطر سختی هایی بود که در بازی سازی کشیدم.

حالا بزارید کمی براتون از سختی های این راه بگم:

احساس بد از دست رفتن زحماتی که تا به حال کشیده ام

این یه نوع فشار روحی - روانی بود که خیلی بهم فشار می آورد.

خوب من دو سال از عمرم رو برای یادگیری توسعه وب گذاشته بودم. می تونستم هم کار های frontend و هم کار های backend رو خودم انجام بدم اما حالا می خواستم وارد فیلدی بشم که هیچ ربطی به توسعه وب نداره. یعنی می خواستم کل دانش فعلی ام رو رها کنم و دوباره برگردم به نقطه 0

فکر کردن راجب این، اوایل ذهنم رو خیلی آزار میداد ولی بالاخره موفق شدم که باهاش کنار بیام.

مواجهه با عبارت های عجیب و غریب

اولین مشکلی که برام پیش اومد مواجه شدن با کلی اصطلاح و کلمات انگلیسی عجیب و غریبی بود که اصلا نمی تونستم بفهمم چه کوفتی هستند.

مشکلات عجیب و راه حل های عجیب تر از اون

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

اسکریپت هایی همراه با ریاضیات (کار با اعداد و انجام محاسبات)

تو یونیتی تقریبا هر اسکریپتی که می نویسید مقدار کمی ریاضیات تو خودش داره چون اکثرا یا می خواهید یه سری عدد رو تغییر بدید یا اینکه با موتور فیزیک unity یه کار باحال انجام بدید. حتی اگه نخواهید این کار ها رو هم انجام بدید کلا script نویسی تو unity کمی سخته. مخصوصا وقتی به زبان #C مسلط نباشید و از طرفی هم از ریاضیات فراری باشید.

متوجه نشدن کد های #C

من تقریبا توی پایتون و جاوا اسکریپت خوب هستم اما مشکل اینجاست که #C یه چیز کاملا متفاوته و بخش اعظم این تفاوت به خاطر سیستم تایپ دهی (Type System) کاملا متفاوت زبان #C هستش.

بر خلاف پایتون و جاوا اسکریپت که dynamic هستند، زبان #C یک زبان strongly typed (نمی دونم فارسیش چیه) هستش که به این معنیه که باید همه جا type ها رو مشخص کنید. از پارامتر های توابع بگیر تا متغیر ها و نوع برگشتی توابع و ...

من هم اصلا به اینطور چیز ها عادت نداشتم. به زبان #C هم هیچ تسلطی نداشتم و کلا نمی دونستم که syntax این زبان چطوریه و چه امکاناتی رو داره. از طرفی هم API های unity از تمام پتانسیل #C استفاده می کردند که به این معنیه که اگه ندونی چیز های مختلف در #C چطور عمل می کنن، نمی تونی درک خوبی از سیستم scripting یونیتی به دست بیاری.

تجربه کم در کار های گرافیکی

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

من هم که تو عمرم با هیچ نرم افزاری در زمینه نرم افزار کار نکرده بودم. حتی به برنامه paint 3D ویندوز 10 هم تسلط نداشتم ? چه برسه به blender، فتوشاپ و ...

نداشتن هنر

من کلا در زمینه هنر هیچی نیستم. در تمام طول عمرم یه نقاشی درست حسابی هم نتونسته ام بکشم. نمره نقاشی و طراحیم تو مدرسه در حدود 13، 14 هستش (با اینکه تو کارنامه 20 رد می کنن اما خودم که می دونم در چه حدی هستم، اینطور نیست!؟).

نمی تونم چیزی رو تو ذهنم تجسم کنم، اگه هم بتونم نمی تونم رسمش کنم. در وجود من چیزی به نام خلاقیت و خوش ذوق بودن وجود نداره و در کل designer افتضاحی هستم.

خوب حالا شاید بگید چرا از asset های دیگران استفاده نمی کنی؟ جوابش رو در ادامه بهتون میگم

نداشتن یه سیستم خوب

خلاصه بهتون بگم که سیستمم 4 گیگ رم و یه cpu dual core داره و خیلی کنده.

اینکه میگن بدون یه سیستم خوب هم میشه بازی ساخت هم درسته اما به هر حال نمی تونید توی بازی هاتون از تمام پتانسیل موتور بازی سازی قدرتمند unity استفاده کنید.

حالا بزارید چند تا از محدودیت هایی که سیستم ضعیفم برام ایجاد می کرد رو لیست کنم (البته الان حضور ذهن ندارم اما تا جایی که یادم بیاد رو می نویسم):

  • وقتی می خواستم از asset های دیگران استفاده کنم که نقطه ضعف هامو در هنر پوشش بدم، موقع import اونها unity هنگ می کرد و کلا مجبور میشدم برنامه رو یه بار کامل ببندم و از اول باز کنم. تا حالا موفق به import حتی یک asset هم نشده ام.
  • برای نور پردازی صحنه لازم هست که عملیاتی به نام lightmap baking رو انجام بدید اما چون سیستمم ضعیف بود خیلی خیلی کند پیش می رفت و حوصله آدم رو سر می برد.
  • نمی تونستم از مدل های سه بعدی با کیفیت استفاده کنم چون موقع تست بازی در یونیتی، کامپیوترم هنگ میکرد.
کلا بخوام فاکتور بگیرم، هرکار خفنی که می خواستم انجام بدم سیستمم "هنگ" می کرد

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

و بالاخره خروج زود هنگام

هنوز دو هفته از تصمیمم برای بازی ساز شدن نگذشته بود که تسلیم شدم و تصمیم گرفتم به دنیای وب برگردم. از اون به بعد احساس ضعف و ناتوانی می کردم.

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

احساس می کردم که فقط به خاطر سادگی پایتونه که می تونم برنامه نویسی کنم. فکر می کردم که من فقط یه آدم بی استعدادم که چون توان یادگیری زبان های پیشرفته ای مثل ++C و #C رو نداره، به ناچار اومده سراغ پایتون.

هر وقت می اومدم سر کامپیوتر که برای تفریح هم شده یکم کد بنویسم، فکر اینکه من یه آدم به درد نخورم حوصله برنامه نویسی رو از من میگرفت و کلی انرژی منفی می داد.

انگیزه هایی که زمینه برگشتنم رو ایجاد کرد

البته در این بین عوامل زیادی بود که باعث شد دوباره برگردم اما من مهم ترین هاشون رو لیست می کنم:

  • من از بچگی بازی های رایانه ای رو دوست داشته ام. علاقه من به بازی های رایانه ای عاملی موثر بود که دوباره برگردم و شانسم رو امتحان کنم
  • چند تا از دوستان صمیمی من (تقریبا همه شون) گیمر هستند. بودن در محیطی که همیشه در اون درباره بازی های مختلف بحث میشه و افراد مختلف خوبی ها، بدی ها و نظراتشون رو درباره بازی های مختلف ارائه میدن به خودی خود باعث ایجاد علاقه به بازی های رایانه ای میشه. خوبی داشتن همچین دوستانی اینه که می تونی ازشون بخوای در مورد گیم پلی بازی نظر بدن و راهنماییت کنن و بازیتو تست کنن.
  • من دو برادر کوچیک تر از خودم دارم، همیشه یه مشت بازی چرت میسازم (هر بازی کوچکی که به ذهنم میاد و ساختنش آسونه) و میدم بهشون که بازی کنن. جالب تر اینکه اونها با همین بازی های کوچیک کلی سرگرم میشن. اینکه بقیه رو با بازی هات سرگرم کنی حس فوق العاده ای بهت میده.
  • من برنامه های وب زیادی نوشته ام اما قابلیت ارائه نداشته اند. چون ارزششون اونقدر نبوده که بخوام براشون هزینه کنم و هاست و دامنه بخرم. البته جا هایی مثل pythonanywhere.com هم هستند که سرویس های رایگانی (هر چند محدود) رو در این زمینه ارائه میدن اما در کل یک بازی به اینطور چیز ها نیاز نداره و می تونی سریع برای هر کسی بفرستی (به شرط اینکه آفلاین باشه). درضمن، طبق تحقیقاتی که درباره اطرافیانم (دوستان، خانوده، فامیل و همکلاسی های هم سن و سال و ...) کردم، به این نتیجه رسیدم که ساخت بازی از ساخت وبسایت طرفداران بیشتری داره.

بازگشتی مجدد

بعد از همه اون شکست هایی که قبلا خوردم، وجدانم رو با این آروم می کردم که "من آدم این کار نیستم"، "من نمی تونم"، "بیخیال، اشکان تو رو چه به بازی سازی آخه" و ...

اما بالاخره یک روز تصمیم گرفتم که تکلیفم رو با خودم مشخص کنم. می دونستم که نمی تونم تا ابد با این طرز فکر زندگی کنم و به خاطر شکست های گذشته زانوی غم بغل بگیرم.

با خودم گفتم درسته که من توان ساخت یه بازی سه بعدی با گرافیک عالی رو ندارم اما حداقل می تونم یه بازی کوچیک تو یونیتی بسازم. بالاخره تصمیم گرفتم که دوباره برگردم سراغ بازی سازی و دوباره شانسم رو امتحان کنم.

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


بازی سازیunityبرنامه نویسیگرافیک
۲۵
۲۹
اشکان محمدی
اشکان محمدی
یه برنامه نویس ساده که از تجربیات و آموخته هاش می نویسه
شاید از این پست‌ها خوشتان بیاید