PDA

نسخه کامل مشاهده نسخه کامل : موتور دو بعدی Quick2D



dark_dragon
02-09-2012, 13:33
با سلام.
انجین Quick2D یک موتور بازی سازی دو بعدی هست . زبان اسکریپت نویسی انجین نیز Javascript هست. ساده ولی توانمند. ترجیح دادم بجای Lua از JS استفاده کنم چون افراد بیشتری هستند که با سینتکس JS آشنایی دارند.

version 1.1.0
اوووف ! خیلی کار برد ولی بالاخره آماده شد.

نسخه 1.1.0 با ساختار کمی متفاوت، کلی باگ فیکس شده و یک ادیتور قشنگ به همراه امکانات جدید در کد نویسی و انجین صدا و امکان انیمیت کردن تصاویر Strip .

دانلود با لینک مستقیم ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
یا
دانلود از پیج وردپرس ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

توابع اضافه شده در این نسخه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این پکیج شامل فایل نصب انجین و یک پروژه نمونه هست که توش سعی کردم تا جایی که امکان داره انواع شیوه های کد نویسی در این انجین رو بصورت گسترده بنویسم که با مطالعش بتونید سر از زیر و بمش در بیارید.
برای شروع انجین رو باز کنید و روی اون پوشه ی زرد کلیک کنید و پروژه Sample رو باز کنید. با کلیک روی هر آبجکت می تونید کدهاش رو ببینید.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

=========================


rev 1.0.3
نسخه 1.0.3 آماده شد با کلی امکانات دانلود کنید. ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

توابع اضافه شده در این نسخه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یک مینی گیم به همراه سورس کنار انجین هست.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

======================

rev 1.0.2
البته همچنان بدون ادیتور. شاید اصلاً ادیتور نذاشتم ! Notepad++ خیلی راحت تره :دی
در حال حاظر مشغول کار روی بخش instance creating هستم. گرچه با یک آرایه ساده قابل پیاده سازی هست ولی می خوام ساده تر باشه.

توابعی که در این نسخه قابل استفاده هستند:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یک مثال همراه انجین هست که می تونید با Drag کردن فایل main.js روی Quick2D.exe اجراش کنید.
با بررسی فایل main.js میتونید با نحوه کد نویسی آشنا بشید.

تابع Project_Settings قبل از هر تابع دیگری فراخوانی میشه و فقط برای تنظیمات پروژه هست. نظیر تمام صفحه بودن، اندازه صفحه و تیتر.
تابع Start این تابع در ابتدای بازی و بعد از Project_Settings اجرا می شود. این تابع بهترین مکان برای تنظیمات ابتدایی بازی است.
تابع Update حلقه اصلی بازی هست.

به هیچ وجه از توابع نا مربوط به تنظیمات پروژه در تابع Project_Settings استفاده نکنید.

رویداد هایی که در این نسخه قابل استفاده هستند:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در رویداد های mouse pressed و mouse released اشاره گر e شامل Button ، X, Y هست. به بزرگی و کوچکی حروف دقت کنید. برای گرفتن مقدار Button باید به این شکل عمل کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در رویداد mouse move فقط مقادیر X, Y در دسترس هستند.
در رویداد mouse wheel مقدار e برابر با delta هست و نیازی به تبدیل نداره.
در رویداد های کیبورد، e نام کلید فشرده شده یا رها شده است.

دقت کنید، برای ایجاد حرکت با استفاده از کیبورد، باید به نحوی که در مثال هست عمل کنید. اگر مستقیم در رویداد بنویسید مثلاً x+=2 با هر بار فشردن کلید، با کمی delay مواجه خواهید شد. با روش مورد استفاده از مثال شما حرکت بسیار نرمی را خواهید داشت.
در مورد اسپرایت ها، انجین بطور خودکار اندازه تصویر را تشخیص داده و ترسیم می کند. امکان تغییر اندازه تصاویر بوسیله کد وجود ندارد.

ضمناً توابع get_width و get_height اندازه تصویر مشخص شده را بر می گردانند.
توجه داشته باشید، همیشه از load_texture در تابع Start استفاده کنید.

و در آخر، توابع اصلی Project_Settings ، Start ، Update را پاک نکنید.

قالب خالی برای فایل main.js ( می توانید فایل اصلی را با هر نامی که مایلید بسازید )


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر سوالی بود همینجا مطرح کنید :)
با تشکر

بلاگ وردپرس Quick2D رو برای آموزش های بیشتر و دانلود نسخه های جدید و خبر های روز به روز دنبال کنید. ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

lord arthas
02-09-2012, 15:07
چرا از کد اسکی کلید ها استفاده شده ؟

Expert32
02-09-2012, 15:12
سلام.
برادر کاشکی یه نمونه اجرایی هم میزاشتی که همه بتونن تست کنن.(منظورم exe هست)
ولی در کل خسته نباشی و اینکه چرا داری از Net. استفاده میکنی؟ Net. برای انجین زیاد قوی نیست.

M0hsen3D
02-09-2012, 17:52
سلام ,
کاش با Cpp & OpenGL میزدی UI رو تو دات نت میزدی بعد با هم مچ میکردی یا حداقل با XNA بیس انجین رو میزدی UI رو تو C# - WinForm یا WPF اینجوری اسون تر میشد. دارم تست میکنم :12:

dark_dragon
02-09-2012, 18:07
چرا از کد اسکی کلید ها استفاده شده ؟
دلیل خاصی نداره !


سلام.
برادر کاشکی یه نمونه اجرایی هم میزاشتی که همه بتونن تست کنن.(منظورم exe هست)
ولی در کل خسته نباشی و اینکه چرا داری از Net. استفاده میکنی؟ Net. برای انجین زیاد قوی نیست.
سلام.
والا قسمت مربوط به کامپایل هنوز کامل نشده. به همین دلیله.
در مورد دات نت بودنش، چون برای کار دو بعدی هست به نظرم خوبه. و البته این انجین رو برای کارهای خودم دارم می نویسم که تا اینجاش رو خوب جواب داده.


سلام ,
کاش با Cpp & OpenGL میزدی UI رو تو دات نت میزدی بعد با هم مچ میکردی یا حداقل با XNA بیس انجین رو میزدی UI رو تو C# - WinForm یا WPF اینجوری اسون تر میشد. دارم تست میکنم [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

سلام.
از XNA خیلی بدم میاد :دی تست کن...


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

ممنون.

Expert32
02-09-2012, 18:09
من وقتی فایل Quick2D رو اجرا میکنم این اروور میاد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

dark_dragon
02-09-2012, 18:24
چند نفر دیگه هم این کرش رو گرفتن. نمیدونم مشکل از کجا می تونه باشه!

M0hsen3D
02-09-2012, 18:27
منم تست کردم ... کرش!

Expert32
02-09-2012, 18:31
چند نفر دیگه هم این کرش رو گرفتن. نمیدونم مشکل از کجا می تونه باشه!
شاید بخاطر این باشه که تو حالت debug هست فایل اجرایی.

dark_dragon
02-09-2012, 18:41
هـوم... ممکنه. c# express دیباگ و ریلیزش جدا نیست. همش یکیه. گرچه من پوشه ریلیز رو گذاشتم !

god of war 2
02-09-2012, 19:40
سلام.
بنده هم با اجرای فایل با پیغام کرش مواجه شدم.
_______________________
خوب من یکسری تست روی انجین شما انجام دادم و نتیجه اونو براتون میزارم امیدوارم که بکارتون بیاد.
اول اینکه انجینتون در حالت Release میباشد از این بابت خبالتان راحت باشد مشکل از جای دیگری هست.
متاسفانه مواقعی که سورس در اختیار نباشد یا حتی فایل بصورت Debug کامپایل نشده باشد نمیتوان تست دقیق و پرجزئیاتی گرفت.
اما طبق تست هایی که من گرفتم کرش مربوط میشه به استفاده از ماژول scintillanet.dll که این اتفاق دقیقا زمان بارگزاری این فایل توسط برنامه شما میفته.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خودتون کدهایی که به استفاده از این فایل مربوط میشوند رو بررسی کنید انشاالله مشکل پیدا میشه.
و متاسفانه من بیشتر از این نمیتونم کمک کنم چون میونه خوبی با Net. ندارم:20:
_______________________
مطلب دیگه ایی که میخواستم بگم اینکه که انجین شما آپتیمایز نیست و این میتونه به خیلی از موارد مربوط بشه از جمله استفاده از Net. و مشتقیات زیاد.
تصویر زیر هم یک تست کارایی هست از برنامه شما. همونطور که میبینید برنامه شما حدودا 17 ثانیه از زمان CPU رو برای یکدوره اجرا مصرف کرده و این برای یک انجین ساده اصلا مناسب نیست و دلیل عمدش هم استفاده از Net. هست و در تصویر میبینید که بیشترین مصرف زمان مربوط به توابعی هست که در Net. برای بارگزاری یک برنامه فراخانی میشوند.
در کل این اطلاعات چیزی بود که فکر میکنم دونستنش فقط برای شما مفید باشه و هیچ تاکید و پیشنهادی در اون نیست. اینو گفتم چون قصد بحث کردن با طرفدارن Net. رو ندارم.(البته منظورم از طرفداران Net. هیچکدام از بچه های عزیز این فروم نیستند.)

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

dark_dragon
02-09-2012, 19:51
ممنون. اطلاعات خیلی خوبی بود.
بررسی می کنم ببینم چرا ارور میده !
در مورد بهینه نبودنش نمی تونم حرفی بزنم. به نظر من اگه انقدر دات نت بد بود خب چرا OpenTK رو ساختن(OpenGL مخصوص دات نت). البته این فقط نظر منه :دی

باز هم خیلی تشکر می کنم که تست کردید.
راستی میشه بگید چطوری خودم می تونم این اپتیمایز بودنش رو چک کنم ؟ البته اگر ساده هست.

dark_dragon
02-09-2012, 21:35
سیستم جدید مدیریت صحنه اضافه شد و FPS از 65 به 11000 رسید :12:

Expert32
02-09-2012, 21:40
راستی میشه بگید چطوری خودم می تونم این اپتیمایز بودنش رو چک کنم ؟ البته اگر ساده هست.
میتونید از پروفایلر ها استفاده کنید که برای Net. فکر میکنم زیاد هم باشند. پروفایلر ها برنامه ها ایی هستند که پروژه های شما رو از جهات مختلف(کارایی, حافظه, سرعت, ...) تست میکنند و نتیجه رو به شما نمایش میدهند.
(برنامه ایی که تصویری از خروجی هاش در بالا هست Intel Parallel Studio XE 2011 هست- البته این برنامه کار باهاش کمی پیچیده هست و پروفایلر های ساده تر و دم دست تر هم وجود دارد)

god of war 2
02-09-2012, 21:51
میتونید از پروفایلر ها استفاده کنید که برای Net. فکر میکنم زیاد هم باشند. پروفایلر ها برنامه ها ایی هستند که پروژه های شما رو از جهات مختلف(کارایی, حافظه, سرعت, ...) تست میکنند و نتیجه رو به شما نمایش میدهند.
(برنامه ایی که تصویری از خروجی هاش در بالا هست Intel Parallel Studio XE 2011 هست- البته این برنامه کار باهاش کمی پیچیده هست و پروفایلر های ساده تر و دم دست تر هم وجود دارد)
درسته.
+
پروفایلر های معروف Net.
(ANTS, vTune, OptimizeIt, DevPartner, YourKit)

dark_dragon
03-09-2012, 01:21
ممنون.

کلاس تشخیص برخورد با ورودی آبجکت اضافه شد.

M0hsen3D
03-09-2012, 05:22
به نظر من هم دات نت اونقرا تو گیم بدردنخور نیست ... به دلیل لایبرری ها و انجین های نسبت خوبه ساخته شده باهاش.

dark_dragon
03-09-2012, 10:05
xna هم روی دات نته. خود مایکروسافت داره میگه واسه کنسول هم با دات نت بنویسید. سند از این بهتر :دی

dark_dragon
03-09-2012, 14:17
شات از پروژه نمونه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

دانلود نسخه آزمایشی انجین ورژن 1.0.1 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

اطلاعات جدید ورژن 1.0.1 :

نسخه جدید آپلود شد.
شما در این نسخه می تونید خروجی exe بگیرید. البته uncompressed . در آینده compress میشه. پنجره دیباگ جداگانه داخل بازی هم اضافه شد و فقط زمانی نمایش داده میشه که شما از تابع debug استفاده کنید. پروژه آزمایشی هم تغییر کرده و همچنین هسته انجین هم دچار تغییرات زیاده شده. لیست کامل توابع به همراه مثال رو می تونید در منوی Help مشاهده کنید. ضمناً توجه داشته باشید، زمانی که اسکریپتی رو تغییر میدید، دکمه save رو بزنید در غیر اینصورت تغییرات شما ذخیره نخواهد شد. پس دقت کنید همیشه دکمه save رو بزنید تا کد هاتون از دست نره. (گرچه چیز جدیدی نیست). امکان ساخت کلاس به انجین اضافه شده. شما می تونید هر نوع کلاسی رو بنویسید. حتی انواع پیشرفته برخورد به راحتی قابل پیاده سازی هستند. سیستم برخورد خود انجین Box Collision هست فعلاً. در مورد تکسچر ها یک نکته لازم به ذکره. سعی کنید تکسچر هاتون رو با یک اسم ثابت و اعداد در پوشه Images قرار بدید. مثلاً img1, img2, img3 تا اگر دوباره تصویری رو به این پوشه اصافه کردید، نظم کدهاتون بهم نخوره. البته فعلاً اینطوری هست تا بعد که الگوریتمش رو تغییر بدم. جلوی هر تصویر، یک عدد قرار داره که اون عدد، آدرس تصویر مربوطه در حافظه هست که شما در بازی ازش استفاده میکنید. در تابع draw_sprite شما باید آدرس تصاویر رو بصورت رشته وارد کنید. مثلا "12" . در زمان ساخت یک پروژه جدید، یک اسکریپت main با قالب ثابت و یک کلاس system به شما داده میشه. کلاس system و فایل اصلی project غیر قابل باز کردن هستند. شما فقط می تونید از توابع تعبیه شده داخل این فایل ها استفاده کنید که در Scripting Reference توضیح داده شده. هنوز امکان FullScreen وجود نداره. در مورد پروژه آزمایشی هم که با نام Example برای شما قرار داده شده، فقط کافیه از منوی File گزینه Open Project رو کلیک کرده و پوشه Example رو انتخاب کنید. بعد از باز شدن پروژه با کلیک روی دکمه Run یا فشردن F5 بازی رو اجرا کنید. یک نکته مهم: پنجره نمایش بازی، دکمه خروج نداره. پس قبل از اجرای بازی، مطمئن بشید که برای خودتون یک روش خروج بسازید. میتونه با کیبورد یا ماوس باشه یا هر چیز دیگه ای.
فکر کنم همش همین باشه. البته مطمئن نیستم.

اگر کسی تمایل داره و وقت بذاره و کلاسی رو بنویسه که بتونه از کاستی های انجین کم کنه (به نوعی addon ساختن) می تونه کلاسش رو برای من بفرسته تا در نسخه های بعدی انجین، بصورت کد شده و با credit به اسم خودش در reference قرار بگیره.

ضمناً یک فایل با نام Run me First داخل پکیج وجود داره. کافیه یک بار اون رو اجرا کنید و دیگه نیازی به اجراش ندارید. این فایل یکسری فایل های مورد نیاز برای اجرا شدن انجین رو در windows/system32 کپی می کنه. توصیه می کنم که بصورت Run as Administrator اجراش کنید.

lord arthas
03-09-2012, 14:41
کرش نمایید :31:

dark_dragon
03-09-2012, 14:53
فایل های Run me First.sfx رو بصورت دستی توی System32 بریزید. درست میشه.

Expert32
03-09-2012, 16:32
دوباره کرش.
میگم اول این خطارو یه کاریش بکن بعد برو دنبال بقیه چیزا.

dark_dragon
03-09-2012, 16:35
شما فایل ها رو دستی کپی کردی توی system32 ؟؟ بالا گفتم...

M0hsen3D
03-09-2012, 16:36
چرا رو 40 FPS محدود بود؟

dark_dragon
03-09-2012, 16:49
روی 40 ؟ من روی 60 گذاشته بودم. البته ممکنه اشتباه ریاضی کرده باشم !

M0hsen3D
03-09-2012, 17:05
اره واسه من روی 40 بود ولی دیگه کرشی نگرفتم.

dark_dragon
03-09-2012, 17:06
درستش کردم دمت گرم.

dark_dragon
03-09-2012, 21:30
بزودی یک مینی گیم ساخته شده با Quick2D میذارم.

Expert32
03-09-2012, 21:58
شما فایل ها رو دستی کپی کردی توی system32 ؟؟ بالا گفتم...
بار اول نه ولی الان تست میکنم.

Armin060
03-09-2012, 22:14
برا منم اجرا نشد.



در مورد بهینه نبودنش نمی تونم حرفی بزنم. به نظر من اگه انقدر دات نت بد بود خب چرا OpenTK رو ساختن(OpenGL مخصوص دات نت). البته این فقط نظر منه


.Net خوبه فقط به درد کار تجاری بزرگ نمی خوره، که برا شما هم نیست. احتمالا منم جای شما بودم با .net یا java این کار رو انجام می دادم.
فقط اگه جای شما بودم از XNA به جای OpenTK استفاده می کردم. opengl به درد .net نمی خوره.



xna هم روی دات نته. خود مایکروسافت داره میگه واسه کنسول هم با دات نت بنویسید. سند از این بهتر

XNA هم خوبه ولی برا Indie نه بیشتر که شما هم هستید. از طرف دیگه پروژه ی XNA برا publish رو xbox به asm تبدیل میشه.

M0hsen3D
03-09-2012, 22:34
بدی XNA اینه که رو DX 9.0 مونده هنوزم نسخه مخصوص واسه VS جدید نیومده. البته دلیلش اینه که XBOX از DX 9 استفاده میکنه و XNA نمیتونه از DX های بالاتر استفاده کنه چون اونوقت مهم ترین فیچرش رو از دست میده.ولی تو بعضی سایت های رفرنس دیدم موقع ریلیز XBOX جدید XNA جدید هم با DX 11 بیاد.

dark_dragon
03-09-2012, 22:42
بار اول نه ولی الان تست میکنم.

باشه. منتظرم ببینم اجرا میشه رو سیستمت یا نه :)


.Net خوبه فقط به درد کار تجاری بزرگ نمی خوره، که برا شما هم نیست. احتمالا منم جای شما بودم با .net یا java این کار رو انجام می دادم.
فقط اگه جای شما بودم از XNA به جای OpenTK استفاده می کردم. opengl به درد .net نمی خوره.

XNA هم خوبه ولی برا Indie نه بیشتر که شما هم هستید. از طرف دیگه پروژه ی XNA برا publish رو xbox به asm تبدیل میشه.
بله صحبتاتون کاملاً درسته. ممنون.


بدی XNA اینه که رو DX 9.0 مونده هنوزم نسخه مخصوص واسه VS جدید نیومده. البته دلیلش اینه که XBOX از DX 9 استفاده میکنه و XNA نمیتونه از DX های بالاتر استفاده کنه چون اونوقت مهم ترین فیچرش رو از دست میده.ولی تو بعضی سایت های رفرنس دیدم موقع ریلیز XBOX جدید XNA جدید هم با DX 11 بیاد.
بله :دی

بچه ها یه موتور audio خوب غیر از OpenAL سراغ دارید که روی دات نت پورت داشته باشه ؟

M0hsen3D
03-09-2012, 22:52
ببین موتوری که XNA استفاده میکنه به کارت میاد اسمش یادم نیست الان ولی بد نبود.

dark_dragon
03-09-2012, 23:00
الآن دارم irrKlang رو دانلود می کنم ببینم چی به چیه. World of Goo از این استفاده کرده.

ویرایش:
انجین audio انتخاب شد :دی
عجب چیزیه !

dark_dragon
04-09-2012, 09:59
سیستم صدا، full screen و قابلیت جابجایی دوربین در فضای دو بعدی اضافه شد.

Expert32
04-09-2012, 13:48
باشه. منتظرم ببینم اجرا میشه رو سیستمت یا نه :)
اجرا نشد!:18:
شوخی کردم اجرا شد:39: ولی من روی یه سیستم معمولی تست کردم خیلی کند بود!

سیستم صدا، full screen و قابلیت جابجایی دوربین در فضای دو بعدی اضافه شد.
الان اینایی که گفتی تو همون لینکی که پستهای قبل گذاشتی بروز شده یا هنوز این ورژنو نزاشتی برای دانلود؟
برای جابجایی دوربینت تو فضای دو بعدی الگوریتم خاصی نوشتی یا اینکه فقط مکان اسپیرایتهارو تغییر میدی؟

dark_dragon
04-09-2012, 14:29
نه اینا توی اونی که دانلود کردید نیست.
برای جابجایی دوربین باید دوربینت ortho باشه و با یک Matrix4 میتونی مکان دوربین رو عوض کنی. اسپرایت ها سر جاشون هستند.

Expert32
04-09-2012, 14:56
برای جابجایی دوربین باید دوربینت ortho باشه و با یک Matrix4 میتونی مکان دوربین رو عوض کنی. اسپرایت ها سر جاشون هستند.
اسپیرایتها در ظاهر سرجاشون هستند اما در اصل وقتی شما دوربین رو حرکت میدی اسپیرایتها حرکت میکنند و عمل دوربین رو شبیه سازی میکنند.
اون ماتریس در موقعیت تمام اسپیرایتها تاثییر میزاره و به نوعی انگار دوربین حرکت کرده.

Expert32
04-09-2012, 15:34
الان داشتم تو اینترنت گشت میزدم به این ویدئو جالب برخوردم در رابطه با همین بحث سرعت اجرا و ...
این ویدئو یک تست هست که نشون میده ++C و OpenGL واقعا یک سروگردن بالاتر هستن از #C و OpenTK

The C# version uses only one shape type and the C++ version uses multiple shape types. Both versions generate exactly 800 shapes. The C++ version runs at ~95 fps and the C# version runs at ~15 fps.

لینک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

dark_dragon
04-09-2012, 15:37
اگه بخوای بصورت تئوری مطرحش کنی که اصلا دوربینی وجود نداره. یه ماتریکس پروجکشن هست و یه ویوپورت که ویوپورت ثابته و پروکچشن همیشه در حال تغییره. برداشت من از سوال شما این بود که آیا من دارم اسپرایت ها رو بصورت دستی جابجا می کنم تا به نوعی حرکت دوربین رو شبیه سازی کنم که من هم پاسخ دادم خیر. کاری که من انجام دادم کاریه که بصورت استاندارد همه انجام میدن و برای شناخت عام، ازش به عنوان دوربین یاد میشه. وگرنه خودم که دیگه میدونم چی کار کردم :دی

dark_dragon
27-09-2012, 11:43
سلام.
من باز اومدم. فکر کردید بی خیال انجین شدم ؟ نع !
هسته انجین رو دارم از اول با یک کتابخانه گرافیکی دیگه می نویسم. احتمالاً توی این چند روزه یک دمو از تست performance میذارم تا ببینیم چی شده :)

Expert32
27-09-2012, 14:55
سلام.
از چه زبان و کتابخانه ایی استفاده کردی؟
اون قبلی رو کلا بیخیالش شدی؟

dark_dragon
27-09-2012, 18:47
همچنان با c# هست ولی ساختارش رو کاملاً عوض کردم. ایندفعه هسته کاملاً جدا هست و فعلاً بدون ادیتور. می خواستم با c++ بنویسم که چشمم به یک کتابخونه SDL خورد.
این پکیج 700 کیلوبایته که شامل هسته انجین و یک مثال کوچولو هست.
برای اجرا فایل main.js رو drag کنید روی فایل Quick2D.exe .
فایل نمونه به شما 300 اسپرایت میده که می تونید اونها رو در صفحه قرار بدید. روی سیستم من تا آخر 300 تا fps روی 60 بود. لطفاً دوستان دیگه هم تست کنید ببینید دچار افت fps میشید و اگر میشید، چقدر. البته نمایشگر fps نداره. من از FRAPS استفاده کردم.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Expert32
27-09-2012, 21:26
کتابخونه ای که استفاده کردی فکر کنم SFML باشه نه SDL !!?
من تست کردم البته نرخ فریم رو ندیدم ولی مشخص بود که زیر 40-50 هست چون اشارگر موس رو که تکون میدادم با گیر حرکت میکرد و روون نبود.
ولی SFML در کل خیلی بهتر از OpenTK هست.

dark_dragon
27-09-2012, 21:46
آره همونه. قاطی کردم دیگه ...
چند تا اسپرایت گذاشتی که اومد پایین ؟
برای من ماکسیمم 400 تا بعد کشید روی 40 fps ولی خب فکر نمیکنم کسی این تعداد اسپرایت رو بکاره وسط صفحه !
پیشنهادی داری ؟

Hi.AliR
27-09-2012, 21:51
من نمی فهمم چرا خودت رو ازیت می کنی؟ مگه xna چشه؟ اصلا 1000 تا sprite بزار اگه اخ گفت.

Expert32
27-09-2012, 22:00
من تقریبا 200 تا که میزارم بعدش افت فریم احساس میشه.
البته تست اینجوری هم زیاد درست نیست چون اسپیرایتت خیلی کوچیکه و از یک تسکچر هم استفاده کردی. اگر حالت طبیعیشو بخوای حساب کنی مثلا یک باز شامل چندین تسکچر در هر فریم هست و اندازه ها هم فرق میکنه و بعضیهاشون هم مممکنه انیمیت شده باشند و ...

من نمی فهمم چرا خودت رو ازیت می کنی؟ مگه xna چشه؟ اصلا 1000 تا sprite بزار اگه اخ گفت.
اینم پیشنهاد خوبیه کما اینکه هم دم دست تره از SFML برای زبانی مثل #C و هم امکاناتاش خیلی بیشتره.
ویرایش:
تاریخ پستو نگاه کنید 00:00 :31:

dark_dragon
27-09-2012, 22:01
برای استفاده از xna باید کلی بساط روی سیستم نصب بشه. گذشته از اون، من از xna متنفرم. دلیلم اینه :) و بعد از اون، می خوام یک انجین اختصاصی برای استدیوم و کارهام داشته باشم که نیاز به نصب framework های جانبی نداشته باشه.
البته با همین کتابخانه ای که من کار می کنم هم شما می تونی 1000 تا اسپرایت بذاری. این ربطی به کتابخانه نداره. مربوط به نحوه ساخت و سازماندهی هسته انجین هست. حالا چه با opengl چه با ogre یا xna .


من تقریبا 200 تا که میزارم بعدش افت فریم احساس میشه.
البته تست اینجوری هم زیاد درست نیست چون اسپیرایتت خیلی کوچیکه و از یک تسکچر هم استفاده کردی. اگر حالت طبیعیشو بخوای حساب کنی مثلا یک باز شامل چندین تسکچر در هر فریم هست و اندازه ها هم فرق میکنه و بعضیهاشون هم مممکنه انیمیت شده باشند و ...

متفاوت بودن اسپرایت ها اهمیتی نداره چون همشون در ابتدای اجرا لود میشن و در رم قرار میگیرند. در تابع update فقط نمایش داده میشن. به نوعی از رم میره تو رم گرافیک. اگر کند باشه دست من نیست :دی


ویرایش:
برای من نوشته 8:30 :دی

Expert32
27-09-2012, 22:07
پس با این حساب باید یراست بری سراغ ++C اونم نه managed فقط native.

dark_dragon
27-09-2012, 22:10
چرا آخه :\
مگه انقدر بده اینی که الآن ساختم ؟ من که نمی خوام باهاش فیل هوا کنم :دی فقط برای بازی های indie هست.

Expert32
27-09-2012, 22:18
چرا آخه :\
مگه انقدر بده اینی که الآن ساختم ؟ من که نمی خوام باهاش فیل هوا کنم [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] فقط برای بازی های indie هست.
خوبیش که خوبه و برای کار شما هم کافیه ولی وقتی میگی نمیخوام freamwork نصبی داشته باشه پس از Net. هم نباید استفاده کنی دیگه!
راستی اون ساعت هم بر واحد زیر:
واحد زمان برحسب GMT +5.5.
اگر باشه میشه 00:00

dark_dragon
27-09-2012, 22:22
گفتم firmware جانبی :دی منظورم بجز .net هست که البته روی win7 خودش نصبه دیگه.

M0hsen3D
27-09-2012, 22:47
سلام
منم تست کردم ولی فریم ریت محدود به 64 بود. افت فریمم ندیدم با گذاشتن اسپرایت.

dark_dragon
27-09-2012, 22:51
بله فریم ریت محدوده. مرسی که تست کردی.

M0hsen3D
27-09-2012, 22:59
چرا با جاوا نمیزنی؟ اینده خواستی رو پلفتفرم های دیگه هم بزنی محدود نیستی.

dark_dragon
28-09-2012, 10:25
محسن جان فعلاً با همین سی شارپ خوبه. تا آینده خدا بزرگه ;)

dark_dragon
28-09-2012, 10:46
کسی تمایل داره تو تست انجین به من کمک کنه ؟ در واقع به یه تستر ِ بازی ساز (!) نیاز دارم که با انجین کار کنه و کم و کاستی هاش رو در بیاره :دی
اگه کسی حوصله و وقتش رو داشت خوشحال میشم بهم خبر بده.

dark_dragon
28-09-2012, 13:52
دانلود نسخه جدید با حجم 770 کیلوبایت ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

البته همچنان بدون ادیتور. شاید اصلاً ادیتور نذاشتم ! Notepad++ خیلی راحت تره :دی
در حال حاظر مشغول کار روی بخش instance creating هستم. گرچه با یک آرایه ساده قابل پیاده سازی هست ولی می خوام ساده تر باشه.

توابعی که در این نسخه قابل استفاده هستند:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یک مثال همراه انجین هست که می تونید با Drag کردن فایل main.js روی Quick2D.exe اجراش کنید.
با بررسی فایل main.js میتونید با نحوه کد نویسی آشنا بشید.

تابع Project_Settings قبل از هر تابع دیگری فراخوانی میشه و فقط برای تنظیمات پروژه هست. نظیر تمام صفحه بودن، اندازه صفحه و تیتر.
تابع Start این تابع در ابتدای بازی و بعد از Project_Settings اجرا می شود. این تابع بهترین مکان برای تنظیمات ابتدایی بازی است.
تابع Update حلقه اصلی بازی هست.

به هیچ وجه از توابع نا مربوط به تنظیمات پروژه در تابع Project_Settings استفاده نکنید.

رویداد هایی که در این نسخه قابل استفاده هستند:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در رویداد های mouse pressed و mouse released اشاره گر e شامل Button ، X, Y هست. به بزرگی و کوچکی حروف دقت کنید. برای گرفتن مقدار Button باید به این شکل عمل کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در رویداد mouse move فقط مقادیر X, Y در دسترس هستند.
در رویداد mouse wheel مقدار e برابر با delta هست و نیازی به تبدیل نداره.
در رویداد های کیبورد، e نام کلید فشرده شده یا رها شده است.

دقت کنید، برای ایجاد حرکت با استفاده از کیبورد، باید به نحوی که در مثال هست عمل کنید. اگر مستقیم در رویداد بنویسید مثلاً x+=2 با هر بار فشردن کلید، با کمی delay مواجه خواهید شد. با روش مورد استفاده از مثال شما حرکت بسیار نرمی را خواهید داشت.
در مورد اسپرایت ها، انجین بطور خودکار اندازه تصویر را تشخیص داده و ترسیم می کند. امکان تغییر اندازه تصاویر بوسیله کد وجود ندارد.

ضمناً توابع get_width و get_height اندازه تصویر مشخص شده را بر می گردانند.
توجه داشته باشید، همیشه از load_texture در تابع Start استفاده کنید.

و در آخر، توابع اصلی Project_Settings ، Start ، Update را پاک نکنید.

قالب خالی برای فایل main.js ( می توانید فایل اصلی را با هر نامی که مایلید بسازید )


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر سوالی بود همینجا مطرح کنید :)
با تشکر

mohammd1
28-09-2012, 14:16
exe هستش ؟

dark_dragon
28-09-2012, 14:19
فایل دانلودی rar هست.

mohammd1
28-09-2012, 14:23
دانلود کردم ببینم چطوریه :12:

dark_dragon
28-09-2012, 14:25
اگه توضیحات رو خونده باشید نوشتم که exe هست و اینکه چطوری اجراش کنید.

dark_dragon
28-09-2012, 21:51
بلاگ وردپرس Quick2D رو برای آموزش های بیشتر و دانلود نسخه های جدید و خبر های روز به روز دنبال کنید. ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

Expert32
28-09-2012, 23:52
ورد پرس فیل تره عزیز.

dark_dragon
29-09-2012, 01:10
نه که شما هم فیل تر شکن ندارید :دی
شرمنده دیگه کار دیگه ای از دستم بر نمیاد. البته انگلیسی هست نه فارسی.

dark_dragon
29-09-2012, 15:59
نسخه 1.0.3 آماده شد با کلی امکانات دانلود کنید. ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

توابع اضافه شده در این نسخه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


یک مینی گیم به همراه سورس کنار انجین هست.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

dark_dragon
30-09-2012, 15:47
در نسخه بعدی ادیتور اضافه خواهد شد.

dark_dragon
01-10-2012, 23:12
اوووف ! خیلی کار برد ولی بالاخره آماده شد.

نسخه 1.1.0 با ساختار کمی متفاوت، کلی باگ فیکس شده و یک ادیتور قشنگ به همراه امکانات جدید در کد نویسی و انجین صدا و امکان انیمیت کردن تصاویر Strip .

دانلود با لینک مستقیم ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
یا
دانلود از پیج وردپرس ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

توابع اضافه شده در این نسخه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این پکیج شامل فایل نصب انجین و یک پروژه نمونه هست که توش سعی کردم تا جایی که امکان داره انواع شیوه های کد نویسی در این انجین رو بصورت گسترده بنویسم که با مطالعش بتونید سر از زیر و بمش در بیارید.
برای شروع انجین رو باز کنید و روی اون پوشه ی زرد کلیک کنید و پروژه Sample رو باز کنید. با کلیک روی هر آبجکت می تونید کدهاش رو ببینید.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]