از زمانی که تصمیم گرفتم وارد دنیای بازیسازی شوم، مسیر پر از چالش و یادگیری را آغاز کردم. در ابتدا، به سراغ Unreal Engine رفتم، چرا که از همان ابتدا علاقهی من به بازیهای سهبعدی بود. این موتور بازیسازی به دلیل قدرت بالا، کیفیت گرافیکی خیرهکننده و قابلیتهای حرفهای، انتخاب بسیاری از توسعهدهندگان حرفهای است. برای آشنایی بیشتر با آن، حتی چند پروژهی نمونه از جمله یک بازی سبک اتاق فرار ساختم و توانستم تا حدی با قابلیتهای این موتور آشنا شوم.
اما هرچه بیشتر در این مسیر پیش رفتم، متوجه شدم که توسعهی یک بازی سهبعدی نیازمند دانش گستردهای در حوزههای مختلف است؛ از جمله مدلسازی سهبعدی، انیمیشن، فیزیک بازی، هوش مصنوعی و …، نبود این دانش اولیه باعث شد که احساس کنم باید قبل از ورود جدی به این حوزه، بنیان قویتری بسازم. بنابراین، تصمیم گرفتم یک گام به عقب بردارم و از یک موتور سبکتر و سادهتر برای یادگیری پایهای بازیسازی شروع کنم تا بدون نگرانی در مورد پیچیدگیهای اولیه، مفاهیم اساسی را درک کنم.
حرکت به سمت یونیتی و یادگیری اصول بازیسازی
در نتیجه، به سراغ Unity رفتم؛ موتوری که هم سبکتر از آنریل است و هم جامعهی بزرگی از توسعهدهندگان از آن استفاده میکنند. حالا سه هفته است که به طور متمرکز با یونیتی کار میکنم و در این مدت، مباحث پایهای بازیسازی و مفاهیم اساسی آن را تمرین کردهام. از سیستم فیزیک و کنترل کاراکتر گرفته تا مدیریت دوربین و برخوردهای فیزیکی، هر روز چیزهای جدیدی یاد میگیرم.
ورود به دنیای انیمیشن و تجربهی دوبعدی
چندی پیش، به بحث انیمیشن کاراکترها رسیدم. از آنجایی که همیشه به بازیهای سهبعدی علاقهمند بودهام، در ابتدا علاقهای به مباحث بازیهای دوبعدی نداشتم. اما با توجه به اینکه آشنایی با مباحث مختلف در بازیسازی ضروری است، تصمیم گرفتم مبانی انیمیشن دوبعدی، ریگبندی و نحوهی متحرکسازی کاراکترهای دوبعدی را یاد بگیرم. هدفم این بود که حداقل در حد نیاز پروژههایم، تسلط نسبی روی این مباحث داشته باشم.
در مسیر تحقیق، به دو نرمافزار Adobe Character Animator و Cartoon Animator رسیدم. ابتدا سعی کردم با Cartoon Animator کار کنم، اما رابط کاربری آن چندان برای من جذاب نبود و از طرفی نسخهی کرکشدهی آن باعث محدودیت در دسترسی به Asset Store میشد. این موضوع باعث شد که گزینهی دیگری را بررسی کنم.
در نهایت، به سراغ Adobe Character Animator رفتم. یکی از ویژگیهای جذاب این نرمافزار این است که کاراکترهای پیشفرض آن را میتوان با فتوشاپ شخصیسازی کرد. از آنجایی که در دوران دانشگاه تجربهی کار با فتوشاپ را داشتم، این انتخاب برای من بهترین و سریعترین راه برای گرفتن خروجی مناسب بود. با این حال، در کنار کار روی انیمیشنهای دوبعدی، هنوز هم علاقهام به دنیای سهبعدی را از دست ندادهام.
بازگشت به چالشهای سهبعدی: نبرد با غول بلندر
در طول این مسیر، هرچند که روی مباحث دوبعدی کار میکنم، اما همواره چشمم به دنیای سهبعدی است. بارها تلاش کردم که با نرمافزارهایی مانند Maya و Blender کار کنم، اما همیشه از پیچیدگیهای آنها فراری بودم. قبلاً تجربهی کوتاهی با Blender داشتم، اما فقط در حد آشنایی با محیط نرمافزار و ساخت آبجکتهای ساده. هرچند که مدتها از این نرمافزار فاصله گرفته بودم، اما به این نتیجه رسیدهام که دیر یا زود باید با این غول روبهرو شوم و آن را شکست بدهم.
بنابراین، تصمیم گرفتهام که بهمرور Blender را به لیست مهارتهایی که در حال یادگیری هستم، اضافه کنم. شاید مسیر دشواری باشد، اما اگر بتوانم بر آن مسلط شوم، مطمئناً توسعهی بازیهای سهبعدی برایم آسانتر خواهد شد.
پروژههای توسعهی وب و یادگیری Clean Architecture
در کنار یادگیری بازیسازی، همچنان روی پروژههای توسعهی وب خودم هم کار میکنم. یکی از مهمترین پروژههایی که این روزها روی آن متمرکز هستم، بهینهسازی معماری و عملکرد یک وبسایت شرکتی است که مدتی پیش توسعه دادم. این وبسایت در ابتدا با Flask ساخته شد، اما با گذشت زمان، نیاز به بهبود ساختار، افزایش کارایی و بهینهسازی بخشهای مختلف آن حس شد.
برای این کار، روی بهینهسازی پایگاه داده، بهبود ارتباطات API، افزایش امنیت و ماژولار کردن کدها کار میکنم تا پروژه هم مقیاسپذیرتر شود و هم نگهداری آن آسانتر شود.
در همین راستا، در حال تحقیق و مطالعه دربارهی معماری Clean Architecture هستم. این معماری به جداسازی لایههای مختلف یک پروژه، کاهش وابستگیها و افزایش خوانایی و مقیاسپذیری کدها کمک میکند. از آنجایی که هدف من در پروژههای آینده، توسعهی نرمافزارهای پایدار و حرفهایتر است، یادگیری این معماری برای من اهمیت زیادی دارد. برای این کار، مقالات مرتبط میخوانم، پروژههای متنباز را بررسی میکنم و سعی میکنم ایدههای آن را در پروژههای شخصی خودم پیادهسازی کنم.
بازیسازی، یک مسیر برای لذت بردن
با وجود تمام مشغلههایی که دارم، بازیسازی همچنان یکی از اولویتهای من است، اما نه بهعنوان یک وظیفهی سنگین، بلکه بهعنوان یک مسیر برای یادگیری و لذت بردن. همیشه سعی میکنم زمانی را به آن اختصاص دهم که ذهنم آزاد باشد تا بتوانم بدون عجله و استرس، روی یادگیری مفاهیم جدید تمرکز کنم و از فرآیند خلق یک بازی لذت ببرم.
میدانم که هنوز در ابتدای مسیرم و چالشهای زیادی پیش رو دارم، اما مهمترین اصل برای من لذت بردن از یادگیری و تجربه کردن چیزهای جدید است. مسیر بازیسازی پر از شگفتی است و بیصبرانه منتظر تجربههای جدید و چالشهای تازه در این راه هستم.