Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نويسي تخصصي DirectX و اصول برنامه نويسي تحت ويندوز -> آموزش ساخت يك بازي ساده توسط KGE
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

آموزش ساخت يك بازي ساده توسط KGE
نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


1 شنبه 8 آبان 1384 - 15:24
پاسخ بصورت نقل قول
سلام
بیایید با هم یه بازی ساده توسط Kochol Game Engine بسازیم تا ببینیم کار با این موتور تازه به اومده چه طوری هستش. این بازی که می خواهم بسازم یک بازی ساده هست که بر روی یک جاده صاف ماشینی حرکت می کند و باید از اشیایی که جلوی راهش سبز می شوند جاخالی بده و امتیاز بگیره و هر چه قدر که از زمان بازی می گذره سرعت حرکت ماشین تندتر می شه.

بیایید یک دفعه به سراغ کد نویسی بریم.
1. ابتدا یک پروژه جدید با VB.Net بازکنید اسمشو هر چی دوست دارید بذارید.
2. بعد در پنجره solution Explorer بر روی Add Reference کلیک کنید و فایل KGE.dll را به آن اظافه کنید.
3. در خط اول کدهای مربوط به فرمتون کد زیر را بنویسید تا به ویرایش گر بگویید که می خواهید از KGE استفاده کنید.
Imports KGE
4. با تعریف متغییرهای مربوط به موتور در فضای دید عمومی شروع کنیم.
Dim KgeX As KgeX
Dim Kge3D As Kge3D
این متغییرهای بالا در تعریف موتور بازی باید هر دفعه باشند هر وقت که شما بخواهید از موتور استفاده کنید باید یک متغییر از نوع کلاس اصلی موتور یعنی KgeX تعریف کنید و اگر هم بخواهید از گرافیک 3 بعدی استفاده کنید باید یه متغییر هم از نوع کلاس Kge3D تعریف کنید.

حالا می تونیم کار را شروع کنیم.
ما می خواهیم که جاده زیر ماشین حرکت کند نه ماشین را روی جاده حرکت بدیم این کار دو دلیل داره 1. اگر ماشین را جابجا کنیم باید دوربین هم جابجا کنیم که باعث محاسبات بشتری می شه که در ساخت این بازی احتیاج نیست. 2. اگر بازیکن بازیش خوب باشه و همین طور جلو بره می تونه خیلی از مرکز فضای 3بعدی ما دور بشه که این هم خوب نیست.

5. ما جاده ای که داریم اندازه هاش دقیقا 100*10 واحد هست که یه متغییر تعریف می کنیم تا با اون بتونیم فایلی که مربوط به جاده هست را لود کنیم و نمایش بدیم.
Dim Road as KgeMesh

6. چون که ما می خواهیم در هر ثانیه جاده مان 30 واحد حرکت کند پس به یه تایمر نیاز داریم که بفهمیم که چه قدر از زمان گذشته و برحسب همون جاده را حرکت بدیم.
Dim t As New KgeTimer

7.محل اولیه جاده ها بر روی محور زدها را تعریف می کنیم و همینطور هم سرعت اولیه را
Private RoadDepth0 As Single = 0.0F
Private RoadDepth1 As Single = -100.0F
Private RoadSpeed As Single = 30.0F

8. شروع به لود کردن مقادیر اولیه مان می کنیم.
دقت کرده باشید شما یک بار که دوربین را تعریف کنید دیگر جای ان در رم ذخیره می شه مگر انکه شما بگویید که نمی خواهم فعال باشد. فایل جاده هم باید در شاخه ای باشد که سورس برنامه قرار دارد. دستور آخر هم به برنامه می گویید که تمام ترسیم های مربوط به فرم در روال paint انجام می شه و فرم هم شفاف نیست.
Private Sub dodger_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
KgeX = New KgeX
Kge3D = New Kge3D(KgeX, Me)
Dim Cam As New KgeCamera(Kge3D, New KgeVector3(0.0F, 9.3F, 17.0F), New KgeVector3)
Road = New KgeMesh(Kge3D)
Road.LoadFromFile("..\road.x")
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True)
End Sub

9. هر بار که فریم جدید نمایش داده می شه باید مکان جاده ها محاسبه شود پس از این روال قبل از ترسیم هیچ چیزی در صفحه استفاده می کنیم.
کاربرد تایمر را در اینجا به وضوح ببینید.
Private Sub OnFrameUpdate()
Dim elapsedTime As Single
' First, get the elapsed time
elapsedTime = CSng(t.MillisecondsPassed) / 1000
Me.Text = elapsedTime
RoadDepth0 += (RoadSpeed * elapsedTime)
RoadDepth1 += (RoadSpeed * elapsedTime)

' Check to see if we need to cycle the road
If RoadDepth0 > 75.0F Then
RoadDepth0 = RoadDepth1 - 100.0F
End If

If (RoadDepth1 > 75.0F) Then
RoadDepth1 = RoadDepth0 - 100.0F
End If
End Sub
10. نوبت به رسم تصاویر می رسه.
پس در روال Form_Paint کدهای ترسیم را قرار بدید.
OnFrameUpdate()
Kge3D.ColorFill(Color.Black)
Road.Draw(0, 0, RoadDepth0)
Road.Draw(0, 0, RoadDepth1)
Kge3D.Flip()
Me.Invalidate()
خط اول که مکان جاده ها را تغییر می دهد چرا ما این کار را توسط تایمر انجام دادیم چون اگر ما دستی این کار را می کردیم وقتی بازیمان روی یه کامپیوتر کندتر می رفت بازی ما هم بسیار کند می شد و برعکس برای همین از تایمر استفاده کردیم تا بر حسب میلی ثانیه هایی که گذشته اون رو حرکت بدیم تا در یک ثانیه دقیا 30 واحد جابجا شود.
خط دوم هم که صفحه قبلی را پاک می کنه و با رنگ سیاه ضمینه را پر می کنه.
دو خط بعدی هم که جاده را در دو مختصات متفاوت می کشن.

امیدوارم که کار با این موتور ساده باشه.

براي دريافت فايلها هم به اين آدرس مراجعه كنيد.
http://www.barnamenevis.org/forum/showthread.php?t=31494

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Sirus-v
کاربر اخراج شده


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 325


3 شنبه 10 آبان 1384 - 19:27
پاسخ بصورت نقل قول
واقعا" که حرف نداشت . امیدوارم به پیشرفت موتورت ادامه بدی . Laughing
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


3 شنبه 10 آبان 1384 - 20:28
پاسخ بصورت نقل قول
سلام
خیلی ممنون از حمایت شما

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


3 شنبه 10 آبان 1384 - 21:38
پاسخ بصورت نقل قول
Laughing
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
داوود خفن
کاربر جدید
کاربر جدید


تاريخ عضويت: 3 شنبه 18 مرداد 1384
تعداد ارسالها: 18


جمعه 13 آبان 1384 - 18:06
پاسخ بصورت نقل قول
ايول Laughing
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
MANI_CHET
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 9 آبان 1384
تعداد ارسالها: 82


جمعه 13 آبان 1384 - 19:38
پاسخ بصورت نقل قول
ميشه عكسي از اين بازي بزاريد ؟
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


شنبه 14 آبان 1384 - 18:14
پاسخ بصورت نقل قول
سلام
شما صبر كنيد من يك هفته و دو روز هست كه اين انجين را شروع كرده ام بگذاريد يه خورده كميل ترش كنم بعد اين موتور را در عمل ببينيد.

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
MANI_CHET
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 9 آبان 1384
تعداد ارسالها: 82


شنبه 14 آبان 1384 - 20:19
پاسخ بصورت نقل قول
تا اونوقت حداقل عكسي از بازي بزاريد
شخصا دلم ميخواد بدونم انجينت در چه سطحيه
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


1 شنبه 15 آبان 1384 - 09:13
پاسخ بصورت نقل قول
سلام
خيلي ممنون از لطف شما فقط بگم كه در سطح پاييني هست و هنوز خيلي قابليت هاي كمي داره و اين بازي هم فقط يك جاده متحرك هست كه حركت مي كند در صفحه.
بازم مي گم به من وقت بدهيد.

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
MANI_CHET
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 9 آبان 1384
تعداد ارسالها: 82


1 شنبه 15 آبان 1384 - 13:59
پاسخ بصورت نقل قول
هر طور راحتي
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |