برنامه نویسی

سیستم prefab: در وحدت آسان ، من راه سخت را ساختم

من با یکی از چالش برانگیزترین قطعات فناوری که در 20 سال بازی خود با آن روبرو شده ام ، مقابله کرده ام. یک سیستم prefab برای یک ویرایشگر سطح سفارشی که من با سازنده آهنگ تماس می گیرم. این به صورت زنده در جریان برنامه ریزی شده است که هر مرحله از روند را نشان می دهد. من تجربیات خود را به اشتراک می گذارم تا در هنگام یادگیری چند چیز در طول مسیر ، درد و لحظه های پیروزمند را احساس کنید. یک فنجان از نوشیدنی مورد علاقه خود را بگیرید و لذت ببرید.

مقالات موجود در این مجموعه زمینه های فنی زیادی از جمله بیت هایی مانند ؛

  • استفاده از کامپایلر برای جلوگیری از مخلوط کردن انواع مختلف UUID.
  • ایجاد تکرارهای سفارشی برای کد قابل نگهداری بیشتر.
  • تجربه یک تازه کار در توسعه آزمون رانده شده است.
  • صرفه جویی و بارگیری در حالی که سازگاری به عقب را حفظ می کند.
  • مشکلات غیر منتظره هنگام استفاده از سیستم برای اولین بار.

شرح تصویر

1. سیستم prefab چیست؟

قبل از شروع کار ، می خواهم اطمینان حاصل کنم که هر دو ایده یکسان داریم که یک سیستم prefab چیست. اگر شما یک توسعه دهنده بازی هستید و در وحدت از prefabs استفاده کرده اید ، احساس راحتی کنید که چرا. بسیاری از موتورهای بازی مدرن به ویژه وحدت/گودوت/غیرواقعی به توسعه دهندگان بازی اجازه می دهند تا با استفاده از سلسله مراتب اشیاء ، سطح را طراحی کنند. اشیاء پیچیده را می توان از بسیاری از اشیاء دیگر ساخته کرد ، مانند یک فنجان می تواند یک شیء کودک از یک میز باشد که یک شیء کودک از یک اتاق است و …

وحدت به شما امکان می دهد تا این اشیاء را در یک پرونده جداگانه ذخیره کنید که به عنوان یک prefab شناخته می شود که می تواند مانند یک مکانیسم کپی و چسباندن بسیار قدرتمند در نظر گرفته شود. تصور کنید که شما یک شیء برای نشان دادن یک چرخ ایجاد کرده اید ، حاوی یک مش یا دو برای لبه و تایر ، جزئیات مواد و غیره. با صرفه جویی در این شی به عنوان یک پیش نمایش می توانید نمونه هایی از prefab را برای هر چرخ ماشین یا حتی یک چرخ 18 چرخ قرار دهید! اکنون هنگامی که یک ویژگی را در prefab تغییر می دهید ، همه چرخ های 4 (یا 18) فوراً اصلاح می شوند. این می تواند یک صرفه جویی در زمان بسیار زیاد باشد.

“prefabs را می توان مانند یک مکانیسم کپی و چسباندن بسیار قدرتمند در نظر گرفت.”

بهترین بخش این است که پیش از این می توان از سایر پیش نمایش ها ساخته شد و خواص می تواند در صورت دلخواه برای موارد خاص نادیده گرفته شود. اگر من شما را از دست داده ام ، بیایید بگوییم وقتی prefab را ایجاد کرده اید ، یک ویژگی برای توصیف فشار تایر وجود دارد و این مقدار را روی 35 psi معمولی (2.4 بار) تنظیم کرده اید. توسعه دهنده این گزینه را دارد که تایر چپ چپ را انتخاب کرده و آن را به 20 psi پایین تر (1.4 بار) تغییر دهد که هرگونه پیش فرض مجموعه های prefab را نادیده می گیرد. هر زمان که prefab سه به روزرسانی لاستیک دیگر را تغییر دهد ، اما چپ جلو 20 psi (1.4 بار) باقی خواهد ماند.

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

2. چرا یک سیستم prefab سفارشی بنویسید

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

من نمی گویم عمومی به روشی تحقیرآمیز ، این نقطه فروش است! اجازه دادن به شخصی با ایده و مهارت های اساسی برای ساختن چیزهای شگفت انگیز. این مانند جعبه ابزار با چکش و آچار است که می تواند هر پروژه را به طور مساوی مقابله کند. با Track Builder ، من قصد دارم اسلحه ناخن و درایور ضربه را برای اتومبیلرانی و وسایل نقلیه با چند ابزار عمومی که در آن قرار دارند ، داشته باشم. هدف توسعه سریعتر بازی های مسابقه است حتی اگر این کار ساخت یک بازی تیراندازی را دشوارتر کند.

“چرا Godot را مقاوم نمی کنیم یا در بالای یک راه حل PREFAB FOSS قرار نمی گیرید؟”

اگر خودتان را فکر کردید که یک سیستم prefab کاملاً عمومی است ، درست خواهید بود! این یک ویژگی نبود که اولین بار سازنده آهنگ سازگار شد. فقط همانطور که من تخم مرغ را توسعه دادم! سریال در وحدت پتانسیل ها را دیدم و prefabs را علاوه بر این خوب می دانم. هنوز سالها طول کشید تا من سعی کردم با این ویژگی همکاری کنم.

یک سؤال واقعاً خوب که پرسیده شد این است که “چرا Godot را مقاوم نمی کنیم یا در بالای یک راه حل پیش نمایش FOSS ایجاد می کنید؟” در مورد گزینه ها ، من مطمئن نیستم که یک چارچوب “prefab” وجود داشته باشد ، اگرچه چارچوب های مؤلفه ای مانند ENTT وجود دارد و شاید من می توانستم به آن گزینه ها عمیق تر نگاه کنم ، اما همچنین موتور خود را در سال 2012 با بیت های کد با داشتن تاریخ به سال 2004 شروع کردم … این یک زمان متفاوت بود ، و گودوت قطعاً وجود نداشت ، که اولین بار در سال 2014 آزاد شد.

تلاش برای ترکیب prefab/صحنه های گودوت یک سردرد عظیم خواهد بود. در حالی که ENTT ممکن است یک یا دو چیز را فراهم کند ، که من نیازی به اجرای آن ندارم ، همیشه مفید نیست که چیزها را از یک قفسه خارج کنید. به خصوص برای یک الگوی طراحی. من کاملاً می فهمم که آیا نوشتن موتور/ویرایشگر خودم احمقانه از نظر شما است ، و من سعی نمی کنم کسی را متقاعد کند که خودش را بنویسد. من اهداف و دلایل خود را دارم و احترام می گذارم که دیگران دیدگاه های مختلفی دارند.

3. یک تاریخچه بسیار مختصر از TrackBuilder

من از Y2K بازی می کردم ، وقتی موتورها/ابزارها کاملاً آنچه امروز هستند نبودند. “به روز من برگردید …” اگر می خواهید. من پشته فناوری فعلی خود را در سال 2012 شروع کردم و در بسیاری از بازی های بازی با استفاده از آن شرکت کردم. این به من کمک کرد تا از تله کار بی وقفه روی موتور بازی که در واقع بازی نمی کند ، جلوگیری کنم. من قبلاً در آنجا به دام افتاده ام. با افزودن ویژگی ها برای و سپس آزمایش ویژگی های جدید در بازی های واقعی (در حین بازی مربا یا در غیر این صورت) یک حلقه بازخورد ایجاد می شود که در آن بازی ها درایو توسعه است. موتور بیش از یک نسخه ی نمایشی فناوری می شود.

“در 50 ساعت سازنده آهنگ سازنده می تواند بخش های مسیر را به طور مؤثر پرتاب کند ، بازی را برای آزمایش ، ذخیره خودکار ، پشتیبانی خنثیسازی/مجدداً و قرار دادن/حرکت/حرکت اشیاء ساده ، راه اندازی کند.”

در سال 2018 من رویای خود را برای جدی گرفتن یک توسعه دهنده ایندی شروع کردم و بعد از شروع صخره ای ، توربو رونق! مفهوم سازی شد در حالی که بازی در مورد مسابقه با مواد منفجره در حال حاضر در حالت آماده باش است ، من به آن اشاره می کنم زیرا این پروژه ای است که آهنگ ساز را به زندگی آورده است. در 50 ساعت تنها به یک ویرایشگر اساسی تبدیل شد که به یک طراح ، با نام من ، اجازه داد تا بخش های بسیار کارآمد را با هم پرتاب کند ، بازی را برای آزمایش ، ذخیره خودکار ، پشتیبانی از بازگرداندن/مجدد و قرار دادن/حرکت/حرکت اشیاء ساده راه اندازی کنید. بله ، پشتیبانی خودکار و پشتیبانی از بازپرداخت در اولین تکرار بود!

“من هدف این است که 10-15 ٪ از جدول زمانی پروژه را برای بهبود پشته ، موتور یا ابزاری خرج کنم.”

با هر بازی ، هدف من این است که 10-15 ٪ از جدول زمانی پروژه را برای بهبود پشته ، موتور یا ابزارهای فناوری خرج کنم. به طور کلی من کاملاً نزدیک به این هدف بوده ام و در طول سالها ویژگی های بیشتری را برای ردیابی سازنده مانند اضافه کردم. کادر انتخاب ، چند ویرایش ، یک برس گیاهی (هکی) ، قرار دادن دکوراسیون اولیه و ویرایشگر/ژنراتور Spline! اینها همه حالت های جداگانه بودند و سازنده آهنگ به سرعت در حال استفاده از آن بود.

در این زمان من نیز با Unity همکاری کرده بودم تا سه بازی را در Eggcelerate ایجاد کنم! سریال و می تواند به وضوح ببیند که چگونه پیش نویس ها به طور همزمان حالت ها را از بین می برند و زمینه مشترکی را برای کارهای آینده ایجاد می کنند. حذف تن کد بدون از بین بردن ویژگی ها! در کل کمتر از 200 ساعت تلاش قبل از شروع سیستم prefab به سازنده پیگیری رفت. سیستم prefab خیلی بیشتر طول کشید تا اصول اولیه کار کند.

شرح تصویر

شما می توانید تماشای بازی های من تقریباً هر روز و همکاری در کنار یک جامعه فراگیر ، امن برای کار و سرماخوردگی. هنگامی که شما برای یک شیرجه فنی تر آماده هستید ، از جمله ترفندهایی که برای حفظ کد با تکرارهای سفارشی و نوع UUID های ایمن استفاده می شود ، با مقاله بعدی ادامه دهید تا در مورد نوع ایمنی ، تکرارهای سفارشی و ساختارهای زمان اجرا در دنیای واقعی بخوانید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا