PDA

View Full Version : Kochol Game Engine



kochol
جمعه 06 آبان 1384, 00:28 صبح
سلام
من امروز یه گیم انجین برای خودم ساختم من از ساخت این چند هدف را دنبال می کنم.
1. یادگیری
2. کار گروهی در ایران من می خواهم این پروژه بصورت اپن سورس فقط دست ایرانیان باشه و اگه کسی مایل بود با همدیگه هم یاد بگیریم هم یه انجین برای خودمان داشته باشیم
3. می خواهم استفاده از این موتور ساده باشه حالا این نمونه کد را بررسی کنید ببینید که ساده به نظر می یاد یا نه.


Imports KGE 'We want to use Kochol Game Engine

Public Class Form1
Inherits System.Windows.Forms.Form
Private KgeX As New KgeX
Dim Kge3D As Kge3D
Dim xFile As KgeMesh
Dim xFile2 As KgeMesh

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Kge3D.ColorFill(Color.OliveDrab)
xFile.Draw()
xFile2.Draw()
Kge3D.Flip()
End Sub

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
Kge3D = New Kge3D(KgeX, Me)
Dim Cam As New KgeCamera(Kge3D, New KgeVector3(0, -300, 55), New KgeVector3)
xFile = New KgeMesh(Kge3D)
xFile.LoadFromFile("C:\Documents and Settings\Kochol Soft\My Documents\Visual Studio Projects\c#\d3dtest01\bin\Debug\tiny.x")
xFile2 = New KgeMesh(Kge3D)
xFile2.LoadFromFile("C:\Documents and Settings\Kochol Soft\My Documents\Visual Studio Projects\c#\d3dtest01\bin\Debug\Warrior1.x")
End Sub
End Class

kochol
جمعه 06 آبان 1384, 00:37 صبح
سلام
من سورس این برنامه را قرار می دم
کلاسهای ایجاد شده تا به این جا:
KgeX
Kge3D
KgeVector3
KgeCamera
KgeMesh
طراحی این کلاسها طوری هست که بدون داشتن دایرکت ایکس اس دی کی هم بشه از این موتور استفاده کرد ولی دیگه برای تغییر سورس ان باید حتما دایرکت ایکس اس دی کی را نصب کنید.

سلام سورس آپدیت شدشو تا تاریخ 23/9/84 را قرار دادم

afshinadly
جمعه 06 آبان 1384, 03:56 صبح
سلام

امیدوارم موفق باشی و کارهای بعدیتو ببینیم :تشویق:
اگه کمکی از دست ما بر میاد بگو ؟

kochol
جمعه 06 آبان 1384, 09:49 صبح
سلام
خیلی ممنون در مورد کمک هم باید بگم که چون برنامه سورس باز هست یعنی همه می تونند کمک کنند و خودشون یه قسمت از برنامه را بسازند من برای راهنمایی شما دوستان اگر مایل بودید که همکاری کنید من این کتابی را که خودم دارم ازش دایرکت ایکس یاد می گیرم را اینجا قرار می دهم امیدوارم استفاده کنید.


مقدمه
Managed DirectX was released with the latest version of the core DirectX libraries in DirectX9. It enables developers using the new .NET languages (i.e. C#, VB.NET, etc.) to develop rich multimedia applications with DirectX. Unfortunately the Managed DirectX runtime was released without adequate documentation, and developers are having a hard time figuring out the best way to write managed applications. This book covers how to use the Managed DirectX objects, how they differ from the core DirectX libraries, and how to create these rich multimedia applications in C#. It also covers in depth graphics techniques and the new high-level shader language shipping with DirectX9.

لینکهای دانلود:
http://docs.cirkva.net/E-books/!naucne/Game%20programming/Managed%20DirectX%209%20Kick%20Start%20-%20Graphics%20and%20Game%20Programming%20-%20Sams.chm

http://www2.fixdown.com/en/soft/14203.htm


باگ:
وقتی یه فایل .ایکس را لود می کند به دنبال تکستچر ان در شاخه ای که برنامه قرار دارد می گردد.

kochol
شنبه 07 آبان 1384, 09:25 صبح
Small Update
سلام
کلاسهای ایجاد شده:
KgeSprite
کلاسهای تغییر کرده:
KgeX
KgeMesh
باگهای رفع شده:
باگ شماره 1.

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

این کلاس هنوز از Trancparenty پشتیبانی نمی کنه یعنی نمیشه یه رنگ از عکس را محو کرد و همچنین عکس های نمایش داده را تبدیل می کنه به یکی از اندازه های 2*2 4*4 8*8 16*16 32*32 64*64 128*128 256*256 ... 4048*4048 که البته در خود کتاب هم نوشته بود اگر من کدهای این کتاب را گیر بیاورم فکر کنم بتونم این دو تا کمبود را در کلاس درست کنم و همچنین قابلیت انیمیشن هم به این کلاس می دهم.

درخواست کمک:
هر کسی که مایل بود و به اینترنت همیشه وصل بود لطفا با emule برای من فایل کدهای کتاب Managed directx را بگیرد و من هر قسمتی را که خواستم به من بدهد تا من بتونم کارهایی را که باید انجام بدهم راحتتر و سریع تر انجام بدهم. به خاطر اینکه تعداد افرادی که این فایل را دارند در ایمول کم هست پس من هم که در روز 1 ساعت بیشتر نمی تونم انلاین بشم خودم نمی تونم دانلودش کنم.

kochol
یک شنبه 08 آبان 1384, 12:21 عصر
سلام
کلاس جدید:
KgeTimer
این کلاس فکر کنم بسیار پر کاربرد باشد و در بازی ها زیاد استفاده بشه کلا کار با این کلاس ساده هست و دارای سا تابع برگشتی هست که:
1. MilliSecondsPassed
تعداد میلی ثانیه هایی که از ایجاد کلاس یا از آخرین زمانی که این تابع فراخوانده شده را بر می گرداند. از 0 تا 999 میلی ثانیه
2. SecondsPassed
مثل تابع بالا هست ولی ثانیه ها را برمی گرداند. از 0 تا 59 ثانیه
3. NextFrame
این هم وقتی است که شما می خواهید کاری را بر اساس مقداری از زمان که گذشته استفاده کنید. معمولا در هر بار که صفحه را رندر می کنید چک می کنید که این تابع مقدار true را دارد یا نه اگر داشت هر کاری که باید انجام شود را به او می دهید. این زمانی هم که باید چک کند از طریغ خاصیت Interval قابل تعریف هست.
البته باید یه روال Reset هم برای این کلاس بسازم.

کلاس به روز شده:
KgeX
اگر کارت گرافیک شما بتونه و توانایی ساپورت را داشته باشه تکستچر ها را شفاف تر و دقیق تر نمایش می دهد.
به اصطلاح اگر کارت گرافیک شما از MinifyAnisotropic و MagnifyAnisotropic پشتیبانی کنه موتور به صورت اتوماتیک استفاده می کند.

کارهای بعدی:
احتمالا بر روی کلاس KgeMesh کار می کنم و تغییرات زیادی را به آن می دهم.

من دوست دارم هر دو یا سه روز یک بار این موتور را آپدیت کنم تا حالا که این کارو کردم ولی می ترسم از این به بعد وقتم محدود تر بشه و هفته ای یه اپدیت برای این موتور بدم

kochol
جمعه 13 آبان 1384, 10:40 صبح
سلام
من این چند وقته داشتم بیشتر بر روی پایه و اساس موتور فکر می کردم و اینکه چه چیزهایی لازم دارد و چگونه باید باشد به همین دلیل ساختار شی گرایی و راحتی کار با ان را تغییر دادم.
ساختار قبلی طوری بود که کلاس KgeX بسیار بزرگ می شد و کلاسهای دیگر همه ی وظایف خود را به این کلاس واگذار می کردند پس به کل این کلاس را حذف کردم و کدهاشو در بین کلاس های دیگر تقسیم کردم.
و کلاس Kge3D هم به KgeScreen تغییر نام پیدا کرد بقیه کلاس ها هم کار خود را خودشان انجام می دهند اینطوری برنامه خیلی قابل فهم تر شد.

کلاس های جدید:
KgeParameter
این کلاس خیلی می تونه موثر باشه در هدف ما که می خواهیم این موتور آسان باشه کارهایی که قرار است انجام بدهد این است که محل و تغییر اندازه و چرخش را در خود نگه دارد و همه محاسبات جابجایی بر روی مسیر دایره ای و ... را انجام بدهد باید این کلاس را در عمل ببینید ولی خوب هنوز کار داره و کاربرد کمی در موتور داره ولی باید این کلاس کم کم پیشرفت کنه.
KgeBillboard
این کلاس برای ایجاد تکنولوژی بیلبورد در بازی ها استفاده می شه همون تکنیکی که یک تصویر دو بعدی همیشه رو به دوربین دارد و معمولا برای نمایش درختها و سنگها در صحنه استفاده می شه ولی عملا هنوز این کلاس کاری انجام نمی دهد و نیاز به تغییرات زیادی هم از نظر ریاضیات به کار برده شده و هم از نظر اینکه نمایش خود تصاویر هنوز کار دارد ولی من این را طوری خواهم ساخت که برای ساخت بازی های دو بعدی بشه از این کلاس استفاده کرد.
کلاسهای تغییر کرده:
KgeMesh
به این کلاس قابلیت کامل همخوانی با کلاس KgeParameter داده شده است.

kochol
یک شنبه 15 آبان 1384, 09:01 صبح
سلام
کلاسهای جدید:
Kge2DSprite
این کلاس برای نمایش انیمیشانهای دو بعدی هست و کلا اگر بخواهیم بازی 2 بعدی بسازیم باید از این کلاس استفاده کنیم هر چند که می شود از نور پردازی و اشیای 3 بعدی هم در صفحه استفاده کرد ولی کلا این کلاسبرای این کار هست که من یکی از ارزوهام ساختن این کلاس بود چون همیشه دوست دارم بازیهای 2 بعدی بسازم تا 3 بعدی البته هنوز انیمیشن را ساپورت نمی کنه که من فکر کنم تا فردا بتونم این رو هم درست کنم.
KgeImages
این کلاس به نظر من یکی از شاهکارهای این موتور هست که البته نه سازندهای داره نه هیچی و کاربر هیچ استفاده ای از این کلاس نمی تونه بکنه حالا کار این کلاس عجیب چیه این کلاس تمام تکستچرها را در کل برنامه کنترل می کند اگر بخواهیم که یک تکستچری که قبلا لود شده را لود کنیم این کلاس شماره تکستچر قبلی را می فرستد که یک اشاره ای می کند و تکستچر جدید را لود نمی کند و همینطور هم این کار را برای ست کردن تکستچر بر روی دیوایس انجام می دهد.

کلاس های تغییر پیدا کرده:
KgeScreen
این کلاس تغییر زیادی نکرده فقط یکسری تغییرات جزیی برای دستیابی به اندازه صفحه در اون ایجاد شده هست.
KgeCamera
این کلاس هم یک روال بهش اظافه شده که دوربین حالت 2 بعدی را فعال می کند.

من برای ساخت این تغییرات خیلی تلاش کردم و واقعا لذت بردم از اینکه دیدم دارم می تونم اون چیزی که از موتورم می خوام یعنی همون کارایی دو بعدی را از موتور بگیرم و با ساخت کلاس KgeImages هم فکر کنم که شاهکاری بود که به ذهن من رسید و انجامش دادم.
واقعا حالی بردم
تا حالا همون طوری که می خواستم آپدیتش کردم زود به زود تا ببینم بعدا خدا چی می خواد.

aakh1361
دوشنبه 16 آبان 1384, 01:02 صبح
تا حالا بازی رو به اتمام رسوندید ؟
:kaf:
امیدوارم موفق باشی

:تشویق: :تشویق: :تشویق:

kochol
سه شنبه 17 آبان 1384, 06:44 صبح
سلام
این که بازی نیست یه موتور برای ساخت بازی ها هست که سود آورترین کاری که انجام میده این هست که لازم نیست کدها را دوباره بازنویسی کنید.

kochol
سه شنبه 17 آبان 1384, 06:54 صبح
سلام
بالاخره این موتور حداقل به پای موتور دو بعدی MCDX رسید کاری که آنها می خواستند در MCDX 3 انجام بدهند من در نسخه های ابتدایی موتورم انجام دادم.
حالا کمکم شروع می کنم و اول بازی Kochol Blocks را با این موتور می سازم تا ایده هایی را که داشتیم مثل چرخوندن کل صفحه حالا قابل انجام هست.

کلاسها تغییر کرده:
Kge2DSprite
به این کلاس متدهایی اظافه شد که باعث می شه به راحتی ما بتونیم از انیمیشن در بازی هایمان استفاده کنیم و کار با ان طبق اصول اولیه موتور ساده هست.
که من امیدوارم که حالا کسانی پیدا بشن و حاضر باشن با این موتور بازی های 2 بعدی بسازن کار بعدی که می خواهم انجام بدهم اینه که شما بتونین یک عکس را برعکس نمایش بدهید و همینطور هم اجسامی که خارج از دید دوربین هستند را حذف خواهم کرد.

kochol
پنج شنبه 19 آبان 1384, 11:43 صبح
سلام
کلاس های جدید:
Kge2DControl
این کنترل را اظافه کردم به موتور که با کشیدن آن بر روی فرم کلی از کارها راحتتر می شه و اتوماتیک دوربین دو بعدی را تنظیم می کنه و دارای رویدادهای مفیدی هست.
این کنترل یک خاصیت داره بنام angle که بر حسب درجه کل دوربین را می چرخونه

کلاس های تغییر کرده:
Kge2DSprites
حالا تصاویری که خارج از دوربین باشن نمایش داده نمی شوند و همینطور هم سه خاصیت به این کلاس اضافه شده تا بتونه اطلاعاتی را درون شی خود جای دهد که بعدا حتما به کار خواهد آمد.
یه خاصیتی هم که بهش اظافه شد به نام flip که عکس را برعکس نمایش می ده.

PalizeSoftware
پنج شنبه 19 آبان 1384, 12:02 عصر
موفق باشی
ادامه بده

kochol
شنبه 21 آبان 1384, 07:58 صبح
سلام
من بلاخره بعد از 15 روز از زندگی این موتور به اون چیزی که می خواستم رسیدم و اون کارهایی که من الان می خواهم را انجام می ده به خاطر همین هم خیلی خوشحالم البته توقع من بیشتر شده و کارهای دیگه هم باید انجام بدم.

کلاس های جدید:
KgeLight
این کلاس هم همونطور که از اسمش معلوم هست برای نور پردازی در صفحه هست که کار با این کلاس هم خیلی ساده هست.

کلاسهای تغییر کرده:
Kge2DSprite
KgeScreen

کار بعدی هم که می خوام انجام بدم احتمالا ساخت Particel System هست من از توی کتاب Focus On 2D in Direct3D یه چیزهایی یاد گرفتم و در چند روز آینده هم فکر کنم بسازمش.

aakh1361
یک شنبه 22 آبان 1384, 03:02 صبح
سلام
این که بازی نیست یه موتور برای ساخت بازی ها هست که سود آورترین کاری که انجام میده این هست که لازم نیست کدها را دوباره بازنویسی کنید.

البته ببخشید اونجا یک ای جا افتاد

منظورم این بود که با این موتور بازی ای تا حالا نوشتید ؟

kochol
یک شنبه 22 آبان 1384, 07:08 صبح
نه ما که خودم هنوز بازی با این موتور ننوشته ام چرا که این موتور خیلی نو پا هست و امروز 18 روز می شه که شروعش کردم ولی کاملا توانایی ساخت بازیها ی دو بعدی با امکانات زیاد از قبیل نور پردازی ادقام با اشیاه 3 بعدی و نورپردازی را دارد من هم قصد ندارم فعلا برای این موتور بازی بسازم اول باید دمو بسازم

kochol
یک شنبه 06 آذر 1384, 21:09 عصر
سلام
خیلی وقته که آپدیتی براتون ندادم ولی بهتون بگم که یه کار هایی تفریحی کردم
مثل ساخت باران.
کلاسهای جدید:
KgeParticles.Rain
که برای استفاده از باران هست در برنامه یه اسکرین شات هم براتون می زارم
کلاس های تغییر کرده:
KgeParameter
این کلاس را طوری ساخته ام که بشه با کلاس Kge2DSprite هماهنگی کامل داشته باشه و کلا با هر کلاس دیگری و این باعث می شه که با یه ورتکس بافر بتونیم خیلی اشکال را رسم کنیم.
مثال
dim param1 as new kgeparameter.Transform
param1.x +=1
...
Kge2DSprite.Draw(param1)
keg2dsprite.draw(param2)
...
خوب بید

aakh1361
پنج شنبه 10 آذر 1384, 03:36 صبح
خوب بید

اره جیگر http://asefsoft.com/qsimages/110.gif
ولی نمی دونم چرا به نظرم قطره ها رو به بالا میرن http://asefsoft.com/qsimages/31.gif

kochol
جمعه 11 آذر 1384, 10:59 صبح
سلام
شاید به خاطر این هست که قسمت پایین قطره ها یعنی انتها انها را با ابی پر رنگ پر کردم و قسمت بالایی آنها را با آبی کم رنگ پر کردم

Iran-PC
دوشنبه 14 آذر 1384, 00:01 صبح
خیلی خیلی عالیه.
کیف کردم.
ماشالا
ای ول
ادامه بده.

kochol
سه شنبه 15 آذر 1384, 20:14 عصر
خیلی خیلی عالیه.
کیف کردم.
ماشالا
ای ول
ادامه بده.
سلام
خیلی ممنون انتظار اینهمه تشویق را اصلا نداشتم خودم هم که این موتور را ساختم شاید قدر شما ذوق نکردم
ممنون از لطفتون

Moharram
یک شنبه 20 آذر 1384, 12:58 عصر
کوچول جون، خیلی کارت درسته، ادامه بده

kochol
سه شنبه 22 آذر 1384, 12:31 عصر
کوچول جون، خیلی کارت درسته، ادامه بده
سلام
خیلی ممنون ولی فکر نکنم دیگه زیاد ادامش بدم چون می خواهم نسخه بعدی را با سی ++ بسازم.
درضمن کدها را هم اپدیت کردم برای دانلود انها به صفحه اول این تاپیک بروید.

Ali Rahbar
جمعه 25 آذر 1384, 10:22 صبح
سلام کوچول.
من دوست دارم عضو تیم تو شوم.
من 15 سال دارم و با DirectX8 کار میکنم.
من خودم یک موتور سه بعدی طرای کرده ام.تحت سی++ و بوسیله ی DirectX8.
موتور من دارای AntiAlias نیز است.
و کلاس های آن عبارتند از:

IEngine
ICamera
IMesh
IMesh2
ILight_Omni
ILight_Spot
ILight_Directional
ILightCache
IMeshCache
من هنوز در حال کامل کردن آن هستم.
ولی ما چگونه میتوانیم با هم یک تیم شویم؟

kochol
جمعه 25 آذر 1384, 18:39 عصر
سلام
شما یه یک هفته ای صبر کن من ببینم وضعیتم چطوری می شه بعد از اول می خوام دایرکت ایکس 9 و سی ++ را یاد بگیرم و دو نفر هم هستیم بعد که ما هم یه خورده را افتادیم با هم شروع به ساخت یک انجین با دایرکت ایکس 9 می کنیم متاسفانه اینترفیس دایرکت ایکس 9 نسبت به 8 خیلی عوض شده است.
حتما با هم همکاری خواهیم کارد.

Ali Rahbar
یک شنبه 27 آذر 1384, 14:39 عصر
از این که به من جواب دادید ممنونم .
من چه طور میتوانم شما را ببینم .

kochol
دوشنبه 28 آذر 1384, 18:29 عصر
سلام
من می خواهم یه وب سایت بزنم و یادگیری را در اونجا شروع کنیم برای قرار حضوری به من ایمیل بزن یا پیام خصوصی بفرست. من دارم الان سی ++ می خونم.

kochol
دوشنبه 28 آذر 1384, 22:47 عصر
سلام به تمام دوستان
من شروع کردم به خوندن سی ++ و حالا هم می خواهم یه انجین با این سی ++ بسازم از اول احتمالا در سایت چیزهای مفید زیادی خواهیم داشت و الان 3 نفر هستیم.

یه فرصت استثنایی برای کسانی که می خواهند از اول شروع کنند به برنامه نویسی با سی ++ و بعد می خواهند بازی بسازن. اینو جدی می گم با ما رشد کنید

آدرس سایت kge.mybbland.com

البته علی آقا اگه دوست داری همکاری کنی به سایت بیا بعدا احتمالا مطالب سایت را به سایت حرفه ای که خودم ساختم خواهم برد پس برای همین فعلا با این سر کنیم.

Iran-PC
دوشنبه 28 آذر 1384, 23:32 عصر
سلام به همگی
خیلی عالیه
منم اینقدر دوست دارم بازی بسازم که نگو.
ولی خیلی سخته.
من بحثتونو دنبال میکنم و امیدوارم موفق بشید.

kochol
یک شنبه 04 دی 1384, 19:37 عصر
سلام
من به علت استقبال گسترده شما یک سایت مجزا ساختم که از اول شروع به یاد دهی بازی ساختن بکنم البته با کمک شما در سایت ما عضو شوید و با ما رشد کنید.
http://irangamedev.com

Iran-PC
پنج شنبه 10 فروردین 1385, 20:12 عصر
سلام.
جناب کوچول خان خسته نباشی.
متاسفانه نتونستم سایتتون رو باز کنم..
میشه بگید مشکل از کجاست؟
موفق باشید.

Ehsansh
جمعه 11 فروردین 1385, 22:12 عصر
کوچول خان.
میتونی یه مرجع آموزش DirectX راه بندازی که مثل آموزش OpenGL در سایت NeHe باشه؟

kochol
شنبه 12 فروردین 1385, 10:50 صبح
می تونم ولی خوب نمی خوام وقت بزارم چون که مقاله های خارجی خیلی هست و من می خوام بیشتر سطح خودمو بالا ببرم و به بقیه کمک بکنم.