سلام.
من باز اومدم. فکر کردید بی خیال انجین شدم ؟ نع !
هسته انجین رو دارم از اول با یک کتابخانه گرافیکی دیگه می نویسم. احتمالاً توی این چند روزه یک دمو از تست performance میذارم تا ببینیم چی شده :)
Printable View
سلام.
من باز اومدم. فکر کردید بی خیال انجین شدم ؟ نع !
هسته انجین رو دارم از اول با یک کتابخانه گرافیکی دیگه می نویسم. احتمالاً توی این چند روزه یک دمو از تست performance میذارم تا ببینیم چی شده :)
سلام.
از چه زبان و کتابخانه ایی استفاده کردی؟
اون قبلی رو کلا بیخیالش شدی؟
همچنان با c# هست ولی ساختارش رو کاملاً عوض کردم. ایندفعه هسته کاملاً جدا هست و فعلاً بدون ادیتور. می خواستم با c++ بنویسم که چشمم به یک کتابخونه SDL خورد.
این پکیج 700 کیلوبایته که شامل هسته انجین و یک مثال کوچولو هست.
برای اجرا فایل main.js رو drag کنید روی فایل Quick2D.exe .
فایل نمونه به شما 300 اسپرایت میده که می تونید اونها رو در صفحه قرار بدید. روی سیستم من تا آخر 300 تا fps روی 60 بود. لطفاً دوستان دیگه هم تست کنید ببینید دچار افت fps میشید و اگر میشید، چقدر. البته نمایشگر fps نداره. من از FRAPS استفاده کردم.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کتابخونه ای که استفاده کردی فکر کنم SFML باشه نه SDL !!?
من تست کردم البته نرخ فریم رو ندیدم ولی مشخص بود که زیر 40-50 هست چون اشارگر موس رو که تکون میدادم با گیر حرکت میکرد و روون نبود.
ولی SFML در کل خیلی بهتر از OpenTK هست.
آره همونه. قاطی کردم دیگه ...
چند تا اسپرایت گذاشتی که اومد پایین ؟
برای من ماکسیمم 400 تا بعد کشید روی 40 fps ولی خب فکر نمیکنم کسی این تعداد اسپرایت رو بکاره وسط صفحه !
پیشنهادی داری ؟
من نمی فهمم چرا خودت رو ازیت می کنی؟ مگه xna چشه؟ اصلا 1000 تا sprite بزار اگه اخ گفت.
من تقریبا 200 تا که میزارم بعدش افت فریم احساس میشه.
البته تست اینجوری هم زیاد درست نیست چون اسپیرایتت خیلی کوچیکه و از یک تسکچر هم استفاده کردی. اگر حالت طبیعیشو بخوای حساب کنی مثلا یک باز شامل چندین تسکچر در هر فریم هست و اندازه ها هم فرق میکنه و بعضیهاشون هم مممکنه انیمیت شده باشند و ...
اینم پیشنهاد خوبیه کما اینکه هم دم دست تره از SFML برای زبانی مثل #C و هم امکاناتاش خیلی بیشتره.نقل قول:
من نمی فهمم چرا خودت رو ازیت می کنی؟ مگه xna چشه؟ اصلا 1000 تا sprite بزار اگه اخ گفت.
ویرایش:
تاریخ پستو نگاه کنید 00:00 :31:
برای استفاده از xna باید کلی بساط روی سیستم نصب بشه. گذشته از اون، من از xna متنفرم. دلیلم اینه :) و بعد از اون، می خوام یک انجین اختصاصی برای استدیوم و کارهام داشته باشم که نیاز به نصب framework های جانبی نداشته باشه.
البته با همین کتابخانه ای که من کار می کنم هم شما می تونی 1000 تا اسپرایت بذاری. این ربطی به کتابخانه نداره. مربوط به نحوه ساخت و سازماندهی هسته انجین هست. حالا چه با opengl چه با ogre یا xna .
متفاوت بودن اسپرایت ها اهمیتی نداره چون همشون در ابتدای اجرا لود میشن و در رم قرار میگیرند. در تابع update فقط نمایش داده میشن. به نوعی از رم میره تو رم گرافیک. اگر کند باشه دست من نیست :دینقل قول:
من تقریبا 200 تا که میزارم بعدش افت فریم احساس میشه.
البته تست اینجوری هم زیاد درست نیست چون اسپیرایتت خیلی کوچیکه و از یک تسکچر هم استفاده کردی. اگر حالت طبیعیشو بخوای حساب کنی مثلا یک باز شامل چندین تسکچر در هر فریم هست و اندازه ها هم فرق میکنه و بعضیهاشون هم مممکنه انیمیت شده باشند و ...
ویرایش:
برای من نوشته 8:30 :دی
پس با این حساب باید یراست بری سراغ ++C اونم نه managed فقط native.
چرا آخه :\
مگه انقدر بده اینی که الآن ساختم ؟ من که نمی خوام باهاش فیل هوا کنم :دی فقط برای بازی های indie هست.
خوبیش که خوبه و برای کار شما هم کافیه ولی وقتی میگی نمیخوام freamwork نصبی داشته باشه پس از Net. هم نباید استفاده کنی دیگه!نقل قول:
چرا آخه :\
مگه انقدر بده اینی که الآن ساختم ؟ من که نمی خوام باهاش فیل هوا کنم [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] فقط برای بازی های indie هست.
راستی اون ساعت هم بر واحد زیر:
واحد زمان برحسب GMT +5.5.
اگر باشه میشه 00:00
گفتم firmware جانبی :دی منظورم بجز .net هست که البته روی win7 خودش نصبه دیگه.
سلام
منم تست کردم ولی فریم ریت محدود به 64 بود. افت فریمم ندیدم با گذاشتن اسپرایت.
بله فریم ریت محدوده. مرسی که تست کردی.
چرا با جاوا نمیزنی؟ اینده خواستی رو پلفتفرم های دیگه هم بزنی محدود نیستی.
محسن جان فعلاً با همین سی شارپ خوبه. تا آینده خدا بزرگه ;)
کسی تمایل داره تو تست انجین به من کمک کنه ؟ در واقع به یه تستر ِ بازی ساز (!) نیاز دارم که با انجین کار کنه و کم و کاستی هاش رو در بیاره :دی
اگه کسی حوصله و وقتش رو داشت خوشحال میشم بهم خبر بده.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
البته همچنان بدون ادیتور. شاید اصلاً ادیتور نذاشتم ! Notepad++ خیلی راحت تره :دی
در حال حاظر مشغول کار روی بخش instance creating هستم. گرچه با یک آرایه ساده قابل پیاده سازی هست ولی می خوام ساده تر باشه.
توابعی که در این نسخه قابل استفاده هستند:
یک مثال همراه انجین هست که می تونید با Drag کردن فایل main.js روی Quick2D.exe اجراش کنید.کد:double = load_texture (string);
draw_sprite (id, x, y);
draw_text (text, size, x, y);
set_origin (id, x, y);
set_cursor ("visible" or "invisible");
set_title (title);
set_screen (width, height);
get_width (id);
get_height (id);
double = screen_width;
double = screen_height;
exec ("script.js");
alert (message);
double = random (max);
window_mode (0 or 1);
quit ();
double = Length (string);
double = check_collision (id1, id2);
با بررسی فایل main.js میتونید با نحوه کد نویسی آشنا بشید.
تابع Project_Settings قبل از هر تابع دیگری فراخوانی میشه و فقط برای تنظیمات پروژه هست. نظیر تمام صفحه بودن، اندازه صفحه و تیتر.
تابع Start این تابع در ابتدای بازی و بعد از Project_Settings اجرا می شود. این تابع بهترین مکان برای تنظیمات ابتدایی بازی است.
تابع Update حلقه اصلی بازی هست.
به هیچ وجه از توابع نا مربوط به تنظیمات پروژه در تابع Project_Settings استفاده نکنید.
رویداد هایی که در این نسخه قابل استفاده هستند:
در رویداد های mouse pressed و mouse released اشاره گر e شامل Button ، X, Y هست. به بزرگی و کوچکی حروف دقت کنید. برای گرفتن مقدار Button باید به این شکل عمل کنید:کد:onMouseButtonPressed (e)
onMouseButtonReleased (e)
onMouseMove (e)
onMouseWheelMoved (e)
onKeyPressed (e)
onKeyReleased (e)
در رویداد mouse move فقط مقادیر X, Y در دسترس هستند.کد:if (e.Button+""=="Left")
{
// Your code
}
در رویداد mouse wheel مقدار e برابر با delta هست و نیازی به تبدیل نداره.
در رویداد های کیبورد، e نام کلید فشرده شده یا رها شده است.
دقت کنید، برای ایجاد حرکت با استفاده از کیبورد، باید به نحوی که در مثال هست عمل کنید. اگر مستقیم در رویداد بنویسید مثلاً x+=2 با هر بار فشردن کلید، با کمی delay مواجه خواهید شد. با روش مورد استفاده از مثال شما حرکت بسیار نرمی را خواهید داشت.
در مورد اسپرایت ها، انجین بطور خودکار اندازه تصویر را تشخیص داده و ترسیم می کند. امکان تغییر اندازه تصاویر بوسیله کد وجود ندارد.
ضمناً توابع get_width و get_height اندازه تصویر مشخص شده را بر می گردانند.
توجه داشته باشید، همیشه از load_texture در تابع Start استفاده کنید.
و در آخر، توابع اصلی Project_Settings ، Start ، Update را پاک نکنید.
قالب خالی برای فایل main.js ( می توانید فایل اصلی را با هر نامی که مایلید بسازید )
اگر سوالی بود همینجا مطرح کنید :)کد:function Project_Settings(id)
{
}
function Start(id)
{
}
function Main(id)
{
}
با تشکر
exe هستش ؟
فایل دانلودی rar هست.
دانلود کردم ببینم چطوریه :12:
اگه توضیحات رو خونده باشید نوشتم که exe هست و اینکه چطوری اجراش کنید.
ورد پرس فیل تره عزیز.
نه که شما هم فیل تر شکن ندارید :دی
شرمنده دیگه کار دیگه ای از دستم بر نمیاد. البته انگلیسی هست نه فارسی.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توابع اضافه شده در این نسخه:
کد:LeftButton
RightButton
MiddleButton
rotate (id, angle)
double = xval_to_point (id, targetX, targetY, speed)
double = yval_to_point (id, targetX, targetY, speed)
double = xval_to_direction (id, angle, speed)
double = yval_to_direction (id, angle, speed)
angle = lookAt (id, targetX, targetY)
double = distance_to_point (id, targetX, targetY)
wait (milliseconds)
double = mouse_hit (id, mouseX, mouseY)
یک مینی گیم به همراه سورس کنار انجین هست.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در نسخه بعدی ادیتور اضافه خواهد شد.
اوووف ! خیلی کار برد ولی بالاخره آماده شد.
نسخه 1.1.0 با ساختار کمی متفاوت، کلی باگ فیکس شده و یک ادیتور قشنگ به همراه امکانات جدید در کد نویسی و انجین صدا و امکان انیمیت کردن تصاویر Strip .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یا
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توابع اضافه شده در این نسخه
این پکیج شامل فایل نصب انجین و یک پروژه نمونه هست که توش سعی کردم تا جایی که امکان داره انواع شیوه های کد نویسی در این انجین رو بصورت گسترده بنویسم که با مطالعش بتونید سر از زیر و بمش در بیارید.کد:ray_hit
draw_background
load_sound
play_sound
stop_sound
برای شروع انجین رو باز کنید و روی اون پوشه ی زرد کلیک کنید و پروژه Sample رو باز کنید. با کلیک روی هر آبجکت می تونید کدهاش رو ببینید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]