PDA

View Full Version : حرفه ای: موتور کامپوننت بیس :)



UfnCod3r
دوشنبه 14 مرداد 1392, 00:33 صبح
سلام
من سریع ی موتور خیلی ساده نوشتم . البته بیشتر جنبه ی اموزشی داره ولی خب ی موتور کامله :لبخند::متفکر:
هدف اصلی پیاده سازی سیستم کامپوننت بود
طوری که طرف بتونه باسی++ راحت کدش رو بنویسه (منم که کلا سی++ پرست و مخالف اسکریپت و ..:قهقهه:)
و بعد توی ادیتور بتونه به اشیا نصبت بده و مرحله رو ذخیره کنه و اجرا کنه و ..
سیستم سیو و لود هم داره خفن :تشویق::لبخند:
فقط کافیه از CGame::Save, CGam::Load استفاده بشه :لبخندساده:


برای نوشتن کامپوننت ی پروژه از نوع دی ال ال باید بزنید
و بعد Engine.lib رو لینک کنید و هدر ها رو هم مشخص کنید
بعدش یه فایل cpp. ایجاد کنید و اینا رو بنویسد

#include <Engine.h>

class CRotate : CComponent
{
float rotateSpeed;

COMPONENT_REG_BEGIN(CRotate)
COMPONENT_REG_VAR(rotateSpeed)
COMPONENT_REG_END()

void onCreate()
{
rotateSpeed = 1.0f;
}
void onUpdate()
{
owner()->rotation += rotateSpeed;
}
};

COMPONENT_IMPL(CRotate);

چیز خاصی نداره ی کامپوننت ساده که شی رو می چرخونه
برای اینکه متغیر ها تو ادیتو نمایش داده بشن و بشه مقدارشون رو عوض کرد و باید رجیسترشون کنید
برااینکار فقط کافیه از اون 4 تا ماکروی جادویی استفاده کنید مثل همین کد :لبخند:
نوع هایی که تو ادیتور نمایش داده می شه و می شه تغییر داد
bool, int, float, char*, SVec2, SColor هست . بقیه چیزا رو حوصله نداشتم بنویسم :ناراحت:
ولی بقیه چیزا هرچی که باشه مستقیم ذخیره میشه و موقع سیو و لود مشکلی پیش نمیاد
char*, GameObject*, Component* هم میشه استفاده کرد به طور خودکار ذخیره و .. میشن :لبخندساده:


حالا بعد کامپایل دی ال ال رو بزارید کنار Launcher.exe یا Editor.exe
در ضمن نام دی ال ال باید با _component شروع بشه تا به صورت خودکار لود بشه .:لبخند:
بعد ادیتور رو اجرا کنید وسط صفه کلیک کنید و ی شی بسازید و کامپوننت بدین و پلی کنید .:لبخند:
ادیتورش هم چیز خاصی نداره:متفکر:
تمام

سورس + باینری »»
https://github.com/UFNHGGI/CBGE


نظر بدین :تشویق:

pswin.pooya
دوشنبه 14 مرداد 1392, 09:14 صبح
امیدوارم موفق باشی. یه مقدار اطلاعات تکمیلی تر در مورد موتورت هم بذاری خوب میشه

سپول
دوشنبه 14 مرداد 1392, 16:12 عصر
آفرین
کد ها رو دیدم فکر کنم کلا یه انجین دو بعدی باشه.
استایل هم که سلیقه من نیست زیاد (مخصوصا استایل مربوط به استفاده از C++‎‎11) ولی این خیلی خوبه که کار خودت رو می کنی و صرفا نمی خوای ببینی بقیه چی کار می کنن و تقلید کنی (مثل خیلی برنامه نویس های داخلی که می بینم).

در مورد کد هم هنوز خیلی اولیه هست که نظر بدم ولی تو همین اول کار می تونی مدیریت حافظه رو در دست بگیری که داشتن حداقلش هم خیلی مهمه.
اسپرایت و انیمیشن دوبعدی (tweening) هم بهش اضافه کنی خیلی خوبه
کد کامپوننت هم تمیز هست فقط طراحیش data-oriented نیست که در این سناریو خیلی هم مهم نیست و کلا کد به نظر میاد برای شروع و یادگیری خیلی خوبه.
انتخابت واسه Qt هم خوب بود به نظرم، از اینکه خودت بخوای ساعت ها فقط بزاری بنویسی یا یه framework آشغال مثل MFC رو انتخاب کنی خیلی بهتره.

موفق باشی

UfnCod3r
دوشنبه 14 مرداد 1392, 18:10 عصر
ممنون:قلب:
اره اولین بارم بود از ویژگی های سی++11 استفاده کردم . :لبخند:
زیاد از این مدل کامپوننت خوشم نمیاد. کلا ی ساختار جدید تو ذهنمه خیلی عالیه بزودی اون رو می نویسم :شیطان:
الان دارم ادیتورش رو کامل می کنم بعدش ی بازی ساده باهاش می سازم :شیطان:

amin1softco
دوشنبه 14 مرداد 1392, 22:06 عصر
خیلی هم خوب خوشمان آمد +1

UfnCod3r
چهارشنبه 16 مرداد 1392, 12:37 عصر
باگ هاش کمتر شد .
ادیتورشم درست شد. ی بازی در حد سنگ کاغذ قیچی هم باش ساختم موتور بی بازی نمونه :بامزه:
PreBuild\Game.bat رو اجرا کنید . با کلیک کردن تیر می زنه با جهتا هم حرکت می کنه :لبخند:
ی دو سه تا کامپوننت بدرد بخور هم اضافه شد .:متفکر::شیطان:
الان اگه *CGameObject یا*CCompoenent در کامپوننت تعریف بشه تو ادیتور میشه مقدار دهیش کرد . :لبخند::شیطان:
دیگه تموم شد.
ممنون از همگی .:قلب: