معرفی Parin؛ موتور بازیسازی دوبعدی و سبک برای زبان D — Show HN: Parin – A 2D game engine between raylib and Godot, written in Dlang
خلاصه
موتور بازیسازی Parin یک ابزار سبک و کدمحور برای زبان برنامهنویسی D است که شکاف میان کتابخانههای ساده مانند raylib و موتورهای سنگین مانند Godot را پر میکند. این پروژه با داشتن ابزارهای داخلی ضروری و انعطافپذیری بالا، گزینهای جذاب برای توسعهدهندگان علاقهمند به کنترل کامل روی کدهای بازی است.
معرفی موتور بازیسازی Parin
توسعه بازیهای دوبعدی همیشه نیازمند ابزارهایی است که در عین سادگی، امکانات کافی را در اختیار توسعهدهنده قرار دهند. موتور بازیسازی Parin که توسط Kapendev توسعه یافته است، دقیقاً برای همین هدف ساخته شده است. این پروژه یک موتور بازیسازی دوبعدی، سبک و متنباز است که با استفاده از زبان برنامهنویسی D پیادهسازی شده و هدف آن ارائه تجربهای ساده، هکپذیر و بدون سربار موتورهای بزرگ است.
جایگاه Parin در اکوسیستم ابزارهای بازیسازی
اگر بخواهیم Parin را مقایسه کنیم، این موتور جایی میان کتابخانههای بسیار کوچک و سطح پایین مانند raylib و موتورهای همهچیزتمام و سنگین مانند Godot قرار میگیرد. این ابزار ساختار دستوپاگیر یا معماریهای تحمیلی موتورهای سنتی را ندارد؛ بنابراین توسعهدهنده آزادی عمل کامل دارد تا کدهای گیمپلی خود را هرطور که صلاح میداند ساختاردهی کند.
ویژگیهای فنی و معماری
Parin بر پایه ایدههای مدرن طراحی شده و امکانات متنوعی را به صورت پیشفرض (Batteries included) ارائه میدهد:
- طراحی کدمحور: هیچ معماری اجباریای از سوی موتور تحمیل نمیشود.
- مدیریت حافظه انعطافپذیر: Garbage collection برای راحتی کار در دسترس است، اما در صورت نیاز میتوانید به مدیریت دستی حافظه روی بیاورید یا کلاً از آن دوری کنید.
- پایه مادلار: بخش عمدهای از Parin روی Joka (یک کتابخانه ابزار قابل حمل) ساخته شده است.
- امکانات آماده: شامل فیزیک پیکسلی دقیق، سیستم گفتوگو، کتابخانه انیمیشن مبتنی بر اطلس، ساختارهای کارآمد نقشه کاشی (Tile map) و کتابخانه ساده رابط کاربری.
- پشتیبانی پلتفرم: قابلیت خروجی گرفتن برای Web (به کمک WebAssembly و LDC)، ویندوز، لینوکس و macOS.
- کتابخانههای جانبی یکپارچه: از پیشفرضهایی برای Box2D ،Steamworks ،ENet و microui پشتیبانی میکند.
نحوه شروع به کار و استفاده
سریعترین راه برای راهاندازی این موتور استفاده از ابزار مدیریت بسته DUB است. با دستورات زیر میتوانید یک پروژه جدید بسازید:
dub init -t parin
dub run
همچنین قالبهای شروع مختلفی مانند نمونههای مبتنی بر Entity یا State در دسترس هستند که با دستور زیر قابل فراخوانیاند:
dub init -t parin -- entity
یک نمونه کد بسیار ساده برای نمایش متن در حلقه اصلی بازی به شکل زیر است:
import parin;
bool hello(float dt) {
lockResolution(320, 180);
drawText("Helloo!!!", mouse);
return false;
}
mixin runDemo!hello;
سیگنالهای بلوغ و نگاه جامعه برنامهنویسان
این پروژه دارای لایسنس MIT بوده و در گیتهاب بیش از ۱۰۰ ستاره دریافت کرده است. سازنده پروژه اشاره کرده است که حدود دو سال روی توسعه آن وقت گذاشته است. کاربران هکرنیوز استقبال گرمی از این پروژه داشتهاند؛ به طوری که بسیاری از قابلیت استفاده از زبان D ابراز خرسندی کرده و آن را همچنان زبانی دستکمگرفتهشده اما قدرتمند میدانند.
نکته جالب توجه درباره سیاستهای این پروژه این است که برخلاف بسیاری از موتورهای امروزی، از قابلیت بارگذاری داغ کد یا منابع (Hot reloading) پشتیبانی نمیکند، چرا که توسعهدهنده اصلی اعتقادی به آن ندارد، اما دست توسعهدهنده را برای استفاده از کتابخانههای دیگر باز گذاشته است.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل