سفر به مرکز گودو

قبل از شروع، باید روشن کنم که نام عنوان به کتاب سفر به مرکز زمین نوشته ژول ورن اشاره دارد.
نقطه عطف
ماه گذشته من سخت روی توسعه مهارت های خود در React، Tauri، Rust و سایر موارد کار کرده ام. کلیک کننده قبل از پروژه به خوبی پیش رفت، اما زمانی که برای ساختن پروژه واقعی (CraftClicker) نشستم، متوجه کاستی های خاصی شدم.
ایده پیشرفت در کلیکر من همراه با ساختن یک شهر، نتیجه فروش منابع و ساخت و خرید ساختمان بود.
لحظه ای که کار بر روی پروژه را شروع کردم، متوجه پیچیدگی لایه های مورد نیازم شدم: تولید زمین، کاشی ها، کشیدن و رها کردن، از جمله ویژگی های دیگری که اگر بخواهم روی سیستمی از تگ ها و اجزای divs کار کنم دیوانه ام می کند. واکنش نشان دهید.
این نتیجه ای بود که من قبل از دست کشیدن از فناوری به دست آوردم:
نوار پایین به شما امکان میدهد ساختمانهای جدید بخرید، در حالی که در بالای آن شهر (یا شهرک) وجود دارد که من میتوانم آنها را به میل خود ویرایش کنم.
بعد از مدتها مدیتیشن، متوجه شدم که برای ساختن اجزایی که برای بازی در نظر گرفته نشدهاند، بیشتر تلاش میکنم تا توسعه خود پروژه. برخی فکر می کنند: بسیاری از توسعه دهندگان ابزارهایی را از ابتدا به زبان هایی ایجاد کردند که برای آن در نظر گرفته نشده بود، و آنها به خوبی انجام دادند. این درست است، اما همه ما حاضر نیستیم چنین حجم زیادی از زمان و انرژی را برای کاری به این بزرگی اختصاص دهیم.
با تصمیم گرفته شده، اکنون باید مسیر جدید را دنبال میکردم: به یونیتی باز نمیگردم، زیرا هرگز از سیستم مؤلفهاش خوشم نمیآید و به راحتی نگهداری یک پروژه به دلیل آزادی قرار دادن اسکریپتها در هر مکانی بسیار دشوار میشود. . بنابراین مسیر نهایی گودو خواهد بود.
وای خدای من دیگه نه
این اولین بار نیست که خودم را در آغوش موتور گودو می اندازم و به باران دائمی موتورهایی که هر سال ظاهر می شود پناه می برم. تنوع خوب است، اما اگر بخواهیم همه چیز را امتحان کنیم، می تواند جهنم باشد. این را مخصوصاً از روی تجربه خودم می گویم.
ماریان، یکی از باتجربهترین طراحان گودو که من میشناسم (در زمان انتشار این نشریه، او در حال کار بر روی یک شبیهساز NES است) قربانی این شد که من شبها نمونههای اولیه بازیهایی را ساختم که هرگز نور روز را ندیدم. توصیه می کنم از او پیروی کنید زیرا هرگز فردی را ندیده ام که حوصله بیشتری برای آموزش و کمک داشته باشد.
به همین دلیل وقتی هفته گذشته به او توضیح دادم که در حال بازگشت به رینگ هستم، مطمئن هستم که او در درون دقیقاً به این فکر کرده است:
در این لحظه، بسیاری تعجب خواهند کرد: اما چرا قبلاً آن را ترک کردید؟ پاسخ حتی برای من گیج کننده است: من هرگز با بخش هنری خوب نبودم و از توسعه چیزی متوسط دلسرد شدم. من افراد زیادی را می شناسم که برای او اتفاق می افتد، حتی دوستی دارم که طراحانی را استخدام می کند که تمام دارایی ها را قبل از شروع نمونه اولیه برای او می سازند، زیرا زمانی که او پیشرفت می کند با دیدن اینکه فرم زیبایی شناختی اش از دستورالعمل هایی پیروی می کند انگیزه پیدا می کند. در ایده اصلی خود
از طرف دیگر، در گذشته من با GDScript (زبان برنامه نویسی مبتنی بر پایتون، موتور رسمی) قانع نشدم زیرا فقط چیزی در مورد پایتون نمی دانستم. من همچنین فیزیک و ریاضیات را رد می کردم که وقتی وارد تجزیه و تحلیل داده ها شدم، تغییر کرد.
اما حالا چه چیزی تغییر کرد؟
خب، در اصل یک انگیزه مالی وجود دارد: من مجوز را به قیمت 100 دلار در Steam خریداری کردم (20000 دلار در آن زمان)، که به عنوان یک آرژانتینی خیلی به من آسیب می رساند. این به این معنی است که اگر یک بازی را منتشر نکنم، ضرر کرده ام.
سپس هدف از دست رفته افسانه ای وجود دارد: از زمانی که شروع به نوشتن اولین خطوط کدم کردم، می خواهم بازی ها را توسعه دهم. چرخش های زندگی من را به تحصیل و کار در زمینه های دیگر سوق داد، اما همانطور که در مقاله دیگری توضیح دادم، با هر فناوری جدیدی که در زندگی خود جذب می کنم، سعی می کنم یک یا چند بازی ویدیویی ایجاد کنم. اما من همیشه ترس خاصی از به دست آوردن یک چیز واقعی داشتم: اشکالات، پیشرفت های مداوم، مصرف کنندگانی که اگر چیزی را دوست ندارند، رتبه شما را به حداقل می رسانند، بازاریابی و تبلیغات، زمان سرمایه گذاری شده و بسیاری عوامل وزن دیگر، دلایل کافی (یا بهانه) برای اجتناب از ارسال چیزی بود.
و سپس لوپ، چیهواها 2 ساله من، درگذشت. و این تراژدی بود که همه چیز را تغییر داد.
Life یک تابع rand() با دانه های تصادفی است
لوپه سالم ترین سگی بود که می توانید تصور کنید. او متعهد به شکستن تعصباتی بود، مانند اینکه چیهواها نمی توانند از پله ها بالا بروند. او همه چیز را خورد و بیمار نشد. او شخصیتی دوستانه داشت و هرگز چیزی را از بین نمی برد.
اما یک روز، یکی از آن نخلهای کوتولهای را که از ژاپن میآیند، زدیم و دانههایی افتاد که هرگز قابل دسترسی نبود، زیرا متعلق به بالای آن بودند، جایی که برگهای جدیدشان رشد کرد. معلوم شد که خوردن آن باعث نکروز و نارسایی گوارشی شده است. و لوپ، مثل همیشه، هر چیزی را که شبیه اسباب بازی بود به پناهگاههایشان که در سرتاسر خانه پراکنده بود می برد.
و مانند کسی که تاس می اندازد، آن اتفاق تصادفی و تصادفی توله سگ 2 ساله ما را گرفت (طول عمر چیهواها 14 سال است). یک روز سهشنبه داشتم با آن بازی میکردم و سهشنبه دیگر از بیل استفاده میکردم که جعبهای کنارش بود.
در عرض یک هفته، نور خانه از بین رفته بود. در جایی، یک تابع rand() اجرا شد و همه چیز را از دست دادیم.
در آن زمان بود که یک نوع مکاشفه داشتم: من نگران چیزهایی هستم که نمی توانم کنترل کنم، به علاوه واقعاً چیزی برای از دست دادن ندارم. هر موضوعی، حتی کاری، دوم شد. درجه اهمیت و اولویت هر چیزی که مربوط به آن لحظه ای بود که اتفاق می افتاد کاملاً کاهش یافت. زیرا اگر جهان با رویدادهای تصادفی کار کند، چیزی به نام مقیاس الهی وجود ندارد. هیچ سیستمی از مجازات ها و پاداش ها وجود ندارد. و احتمالاً حتی سیستمی به این شکل وجود ندارد. ما سعی می کنیم چیزهایی را که اینطور نیست معنا کنیم و سیستم خود را با قوانین آن ایجاد می کنیم. هدف نهایی من تخریب کل ساختار و شروع دوباره بود.
بین برنامه ریزی و جنون
با فرض اینکه بیشتر نگرانی هایم بی ارزش بودند، ترس از انجام پروژه ها را از بین بردم. شاید بازی را اجرا کنم و موفق نشود. اما مهم نبود چون او آن را انداخته بود. دستاوردهای من در واقع بر اساس معیارهای من بود: انتشار دوره پایتون با جنگو به خودی خود یک دستاورد بود، حتی اگر مردم آنقدر آن را نخرند. از روند ساخت آن لذت بردم بدون اینکه خیلی به آینده آن فکر کنم.
بنابراین، انتشار یک بازی ویدیویی به یک هدف اجباری تبدیل شد: راه دیگری برای اثبات اینکه نتیجه مهم نیست، بلکه انتشار این بازی و شاید بازیهای دیگر اهمیت دارد. بستن چرخه «می خواهم و نمی توانم».
برنامه اولیه من دائماً تغییر می کرد، تا جایی که قبلاً آن را به عنوان بخشی دیگر از فرآیند در نظر می گرفتم: اکنون کلیک کننده تبدیل به نقش آفرینی مردی شده است که باید از صفر درآمد کسب کند (تا جایی که در بانک بخوابد. the plaza) تا زمانی که او تبدیل به یک سرمایه دار سرمایه دار شد که چندین شرکت مسئول دارد. من دیوانه وار برنامه ریزی می کنم زیرا یک تغییر می تواند به معنای بازسازی تقریباً کامل سازه باشد. زیرا؟ چون میتوانم، و اگر فردا بهطور بسیار تصادفی بمیرم (چیزی شبیه خفگی در چای حبابدار در محله چینیهای بلگرانو، CABA)، ارزشش را داشت، زیرا من کاری را که از ابتدا میخواستم، بدون محدودیت انجام دادم.
مرحله یادگیری
فکر می کنم امسال بیش از سه چهار بار وارد این زون شده ام اما قول می دهم این بار قطعی شود. برای یادگیری گودو (در حال حاضر در نسخه 4)، من با این یوتیوبری که کشف کردم شروع کردم و نمی توانم در هر ویدیویی که او منتشر می کند تماشای آن را متوقف کنم:
https://www.youtube.com/watch?v=L3pFEk1HPCQ
من از نحوه تدریس او خوشم می آید و حقیقت این است که او کیفیت بسیار بالایی دارد که در هر ویدیوی او به آن حسادت می کنم (یا نه).
از طرفی تصمیم گرفتم همان کلون Cookie Clicker را بسازم که در React انجام دادم اما در Godot. من مخزنی را به شما میسپارم که کنار هم قرار دادهام و به نگهداری آن ادامه میدهم، اما مطمئناً در مقاله بعدی جزئیات بیشتری از اسمبلی را بررسی خواهم کرد. باز هم از ماریان برای رفع تردیدهای من در مورد گره های صحیح برای ایجاد آن تشکر می کنم.
به موازات آن، من دوره دیگری را برای ساختن یک RPG شبیه به Zelda دنبال می کنم:
https://www.youtube.com/watch?v=0mUoRdYe0s4
این به من کمک می کند تا ویژگی های اساسی گودو مانند Tileset، Tilemaps، انیمیشن ها، sprites، UI، کنترل ها و غیره را تکمیل کنم. البته، همانطور که آموزش را مرور می کنم، تغییرات را به یک مخزن GitHub نیز فشار می دهم. من همه چیز را مانند دوره کپی نمیکنم، اما در بخشهای خاصی برای ویدیوهای دیگر یا مستندات تکمیلی ذکر میکنم.
ابزار جالب دیگر این وب سایت است که GDScript را به صورت تصویری به شما آموزش می دهد. من هنوز نپریده ام، اما برای این هفته برنامه ریزی می کنم. اگر در برنامه نویسی تازه کار هستید، قبل از اینکه با موتور گودو دست و پنجه نرم کنید، این یک نقطه ورود عالی است.
نتیجه گیری
امیدوارم بتوانید تغییرات دائمی من در فناوری ها را بهانه کنید، اما لطفاً توجه داشته باشید که احتمالاً برای شما نیز اتفاق می افتد، اگر در حال حاضر آن را تجربه نمی کنید.
یک ایده به خودی خود ارزشی ندارد، اما اجرا و تبدیل آن به چیزی «ملموس» چیزی است که واقعاً به آن معنا می بخشد.
ایده اولیه من از بازی با یادگیری چیزهای جدید در مورد هر فناوری تغییر می کند، اما شکل نهایی خاصی به خود می گیرد. این روند تکرار طبیعی است و اگر شما هم در حال گذراندن چیزی مشابه هستید، به شما توصیه میکنم ناامید نشوید و تا رسیدن به مرحله نهایی به تکرار ادامه دهید.
امروز گودو راهحل پروژه من است و من قصد دارم در ماههای آینده از آن بهرهمند شوم. در مقالات بعدی در مورد این موتور که در حال تسخیر توسعه دهندگانی است که قبلاً از یونیتی حرکت نکرده بودند، صحبت خواهیم کرد.
شما را در مقاله بعدی می بینیم!