بعد از چند ماهی تجربه کار با رابط کاربری (UI) ادیتور به این نتیجه رسیدم که بخشهایی کمتر مورد استفاده قرار میگیرن و بخشهایی استفاده بیشتری دارند. بخاطر همین موضوع تغییرات زیادی داخل رابط کاربری ادیتور انجام شد که هنوز تکمیل نشده اما نهایتا با یک نسخه سبکتر و البته سریعتر از لحاظ دسترسی به امکانات نسبت به نسخه قبلی روبرو میشیم.
شاید تیتر مطلب کمی عجیب باشه اما در پشت این تیتر یک موضوع فنی جالب قرار داره که بعد از انجام تست های زیادی متوجه این موضوع شدیم. معمولا زبان های اسکریپتی (مثل Lua) وظیفشون اینه که برای یک API سطح پایین, یک رابط منعطف سطح بالاتر ایجاد میکنند که بعضا در حالت run-time و بدون کامپایل مجدد هم قابل تغییر و استفاده باشه. در Kite2D این زبان اسکریپتی رابطی برای کتابخانه Kite2D که تماما در ++C پیاده شده فراهم میکنه و کاربر میتونه بدور از پیچیدگی های زبان سطح پایینی مثل ++C برای انجین در زبان سطح بالاتر و راحتتری مثل Lua کد نویسی کنه. اما در پشت صحنه این موضوع یک تبادل داعم و پیوسته بینه Lua و ++C در جریانه و در اصل هر تابعی که شما در Lua صدا میزنید بلافاصله نسخه ++C آن تابع توسط Lua فراخانی میشه و نتیجه کار مجددا توسط Lua به شما برگردانده میشه, این تبادل بینه دو زبان هزینه هایی داره که در بعضی مواقع ناچیز و در بعضی مواقع سنگین هست. برای اینکه متوجه بشیم تستهای زیادی انجام دادیم و در نهایت فهمیدیم که ارتباط بینه C++ ---> Lua بسیار کندتر از ارتباط ++Lua ---> C هست! با توجه به همین موضوع کل سیستم آپدیت اشیاع تغییر کرد و بخش زیادی بازنویسی شد که حدودا 60/70 فریم به سرعت آپدیت اشیاع اضافه شد!
ویژگی جدید و بسیار پر کاربرد render to texture یا off-screen rendering قابلیتی است که به شما این امکانو میده تا بتونید فارغ از سایز (resolution) اصلی صفحه نمایش کاربران, محتوای خودتونو بسازید و و در هر صفحه ایی و با هر سایزی اونو نمایش بدید! البته این تنها یکی از امکاناتی هست که توسط off-screen rendering قابل پیاده سازی هست و امکانات بسیار جالب و بیشتری مثل امکان بزرگنمایی صفحه بدون مشکلاتی همچون کش امدن و تغییر رنگ پیکسلها (که در OpenGL بصورت طبیعی رخ خواهد داد) و یا ایجاد افکتهای post-process و ... رو به کاربران میده. نمونه پروژه در فایل ضمیمه قرار دارد. توجه کنید که برای مشاهده پروژه باید انجین رو از پست قبلی دانلود کنید.
تقریبا 2 روز تا شروع اولین مرحله داوری جشنواره بازیسازان مستقل ایرانی باقی مانده. طبق برنامه ریزی های قبلی تونستیم Kite2D رو تا نقطه قابل قبولی برای جشنواره ارتقا بدیم و امیدواریم در بخش فناوری جشنواره بتونیم موثر حاضر بشیم.
همونطور که قول نسخه exe ادیتور به همراه نمونه پروژه اماده رو در پست قبلی داده بودم در قالب یک فایل زیپ قرار میدم و البته از صفحه مربوط به Kite2D در وبسایت جشنواره هم میتونید فایل رو دانلود کنید.
Kite2D در جشنواره بازیسازان مستقل
نسخه exe ادیتور و انجین به همراه نمونه پروژه آماده TileMap
همونطور که در پستهای قبل اشاره کردیم در حال کار روی بخش گرافیکی و رندر Kite2D و اتصال اون به ادیتور هستیم. ویژگی جدیدی که به بخش رندر اضافه شد پشتیبانی کامل از Texture Array ها هست که با کمک این ویژگی ترسیم یک مپ سنگین و پیچیده با تسکچر های متنوع و زیاد با تنها یک فراخانی تابع رسم OpenGL امکان پذیر میشه!
البته امکانات دیگری هم در حال اضافه شدن هست که در پستهای اینده توضیح خواهم داد اما داخل تصویر میتونید حدس بزنید! :)
امیدوارم تا دو ماه آینده بتونم اولین نسخه stable و تقریبا کامل ادیتور رو برای آزمایش بزارم.
البته نا گفته نماند که کلاس Resource Manager شامل امکاناتی کامل در این ضمینه هست که در این پست فقط به موارد جدیدی که اضافه شده اشاره شد.
نسخه جدید به همراه تمامی تغییرات در چند روز آینده بر روی مخزن قرار خواهد گرفت.
نسخه جدید به همراه امکانات گفته شده در پست قبلی بر روی مخزن قرار گرفت. البته امکانات اضافه شده هنوز بصورت آزمایشی هستند و امکان وجود باگهای احتمالی میباشد.