PDA

مشاهده نسخه کامل : ساخت بازي با تري دي گيم استوديو



M O H 3 N
07-10-06, 18:17
اول از همه بايد تنظيمات صفحه ي نمايش را درست كنيم براي اين كار دستور زير را مي نويسيم :



var video_mode = 6 ;


اين دستور رزولشن 640 * 480 مي كند ... !

حال براي چه 6 ؟

مي توانيد از براي هر اندازه اي يك عدد بزنيد كه در ليست زير اندازه ها نوشته شده است :



320x200 - 1
320x240 - 2
320x400 - 3 (not supported by some graphics adapters)
400x300 - 4 (not supported by some graphics adapters)
512x384 - 5
640x480 - 6 (default mode)
800x600 - 7
1024x768 E - 8
1280x960 P - 9
1400x1050 P - 10
1600x1200 P - 11


حال با استفاده از اين دستور بيت هاي صفحه را به 16 تغيير بدهيد ( به هر چيزي كه مي خواهيد تغيير بدهيد ولي بهتر است همون 16 باشد البته غير از 16 فقط 32 مي توانيد بگذاريد ) !



var video_depth = 16 ;


ليست بيت هايي كه مي توانيد بگذاريد همراه با توضيح :



16 - 16 Bit Farbetiefe (65536 Farben)
32 - 32 Bit Farbtiefe P /16,7 Millionen Farben


يك تابع هست كه مي گويد وقتي صفحه ي بازي باز مي شود چه اطفاقي بيفتد ... مثلا مي شه گفت كه مرحله اي كه در Level Editor ساخته ايم رل بيا ورد براي اين كار مثلا اسم مرحله اي كه درست كرديد Level 1 هست كه ما براي اينكه اين مرحله در اول بازي بيايد دستور زير را بدهيد :



function main () {
level_load('level1.wmb');
}


دقت داشته باشيد :



level1.wmb نه level.wmp


اين را گفتم كه شايد خيلي ها دقت نكنند !

روش تعريف متغيير :



var Name = Integer ;
يا
var name ;


به جاي :
name :
نام متغيير
Integer :
مقدار متغيير

روش تعريف function يا همان تابع :



function Name () {
دستورات
}


name :
نام تابع

روش تعريف اكشن :



action Name {
دستورات
}


name :

نام اكشن

متغير چيست ؟

متغير يا مي تونه يك عدد يا يك رشته باشه كه در طول برنامه مرتب عدد آن تغيير مي كند ... يعني ما مي توانيم به آن عدد دهيم و عدد داخل آن را تغيير دهيم ... ( در طول آموزش بشتر متوجه مي شوديد ) !

اكشن چيست ؟

اكشن يعني برنامه نويسي كه براي يك شي ء در LEVEL EDITOR مي كنيم ... براي نام اكشن بايد نام شي ء‌مورد نظر ما در LEVEL EDITOR باشد ... براي تعيين نام يك شي ء در level editor بايد روي شي راست كليك و گزينه ي Properties رفته و سپس به تب Behaviour كليك كرده و در قسمت Action براي شي يك نام بر گزينيد !
توجه : اگر نام اكشن درون Level editor نباشد برنامه پيغام خطا مي دهد !

تابع چيست ؟

تابع ها يك سري عوامل هستند كه قسمتي از آنها را خود برنامه تعريف كرده مثل تابع :

Main

خوب ... !

حال براي برنامه نويسي درون اكشن مورد نظرمان آماده مي شويم !

براي اين كه يك كاري را به يك شي نصب بدهيم اول بايد نام اكشن را در داخل اكشن مورد نظر به همراه يك نقطه ي كوچك همراه با مشخصات براي آن بنويسيم ... مثلا اسم اكشن ما محسن است :



Mohsen.x = 25 ;


اين دستور به برنامه مي گويد كه آبجكت محسن را در مختصات 25 بردار X قرار بده ... !

حال ما براي اينكه نخواهيم اسم اكشن را تايپ كنيم از پسوند MY استفاده مي كنيم كه My به جاي نام مي آيد مانند دستور زير !



My.x = 25 ;


بعضي از خصوصيات MY :



My.pan گردش دور خود
My.tilt چرخش به بالا و پايي
My.roll چرخش به چپ و راست
My.flare براق كردن شي
My.x كنترل محور x
My.y كنترل محور Y
my.z كنترل محور Z


و ... !

حلقه هاي تكرار :

آموزش دستور While :

اين دستور شرط يك نوع دستور شرطي مي باشد كه بوسيله ي آن مي توانيد يك حلقه ي تكرار درست كننيد كه به آن بگوييد تا شرط برقرار هست دستوري كه به آن داديد را اجرا كند ... روش تعريف كردن حلقه ي تكرار :



While ( *) {
دستورات
}


در پرانتز به جاي علامت * شرطي مورد نظر خود را قرار دهيد !

توجه :

اگر مي خواهيد حلقه ي شما بي نهايت باشد به معني اينكه حلقه اي كه برايش تعريف كرديد هيچ وقت تمام نشود به جاي * در داخل پرانتر يك عدد مثل 1 بگذاريد ... !

مثال :



action Mohsen{
while(1) {
My.pan +=1 ;
}
}


اين دستور آبجكت محسن را تا بينهايت دور خود مي چرخاند !

دقت كنيد به دستور :




My.pan +=1 ;


اين دستور به برنامه مي گويد هر دفعه به مقدار X يكي اضافه كن !

در آخرين پست آموزشيم استفاده از حلقه ي While را درس دادم ولي يه چيز يادم رفت بگم :



action Mohsen{
while(1) {
Wait(1) ;
My.pan +=1 ;
}
}


ملاحظه مي كنيد كه درون حلقه ي While من دستور Wait را اضافه كردم و داخل () عدد يك را گذاشتم ... حال اين دستور چيست :

اگر اين دستور را نزنيد برنامه فقط آخر حلقه را به شما نمايش مي دهد ولي اگر اين دستور را بزنيد لحظه به لحظه ي حلقه و تغييرات آن را نمايش مي دهد ... !

استفاده از دستور Wait درون حلقه ي While ضروري است !

جملات شرطي :

براي تعريف يك شرط براي ايجاد يك دستور به شكل زير عمل مي كنيم :


if (*) {
دستورات
}


در داخل پرانتز بالا به جاي علامت * يك شرط قرار دهيد ... براي مثال در دستور زير گفته ايم اگر متغيير U مقدارش به 20 رسيد شكل شي محسن شروع كند دور خود بچرخد !



While(1) {
wait(1) ;
if ( U ==20) {
mohsen.pan +=1 ;
}
}


در دستور بالا دقت كرديد كه ما در اول جمله ي شرطي خود دستور While را به كار برديم !

حال براي چه ؟

براي اينكه اگر ما اين دستور را بزنيم به برنامه گفته ايم كه هر وقت كه U به 20 رسيد در غير اين صورت اگر ما از دستور While استفاده نمي كرديم برنامه ي ما هيچ وقت اجرا نمي شد !

در پست قبلي آموزش استفاده از دستور IF را توضيح دادم و مجبور شدم اين نكته را در يك پست ديگه قرار بدم :

در مثال ديديد گه من دستور زير را دادم :



if ( U == 25) {
}


علامت == يعني مساوي !
علامت != يعني نامساوي !
علامت && يعني و !

يه نكته ي ديگر هم بگم :

براي اينكه به برنامه بگوييد اگر شرط اجرا شد اين كار و اگر شرط اجرا نشد كار ديگري انجام شود بايد از دستور زير استفاده كنيد :



if (*) {
دستوراتي كه در صورت درست بودن شرط مي خواهيد اجرا شوند .
}else{
دستوراتي كه در صورت اشتباه بودن شرط مي خواهيد اجرا شوند .
}


خوب اين دستور به واضحي معلوم است و فقط بايد به جاي * شرط خود را بنويسيد !

آموزش كنترل توسط صفحه كليد :

براي اينكه بفهميم كليدي فشار داده شده است از دستور زير استفاده مي كنيم :



while (1) {
wait (1) ;
if (key_any == on ) {
دستورات ;
}
}


حال براي اينكه مثلا بخواهيم بگوييم اگر كليد M فشار داده شد دستورات اجرا شود بايد از دستور زير استفاده كنيد :



While (1) {
wait(1);
if (key_m == on ){
دستورات ;
}
}


نكته : ديديد كه من براي هر دستور اولش حلقه ي While + Wait را تعريف كردم چون اگر تعريف نمي كردم اين دستورات فقط يك بار اجرا مي شدند .

مطابق دستور به جاي M مي توانيد كليد هاي ديگري را نيز جايگزين كنيد اما براي كليد ها ي بالا و پايين و چپ و راست بايد اين جمله ها را قرار دهيد :

كليد چپ : Key_cud
كليد راست : key_cuu
كليد بالا : Key_cur
كليد پايين : key_cul

خوب رسيديم به يكي از سخت ترين قسمت هاي بازي سازي يعني ايجاد يك شكل در طول بازي :

شما بعضي از وقت ها مثلا مي خواهيد از تفنگي تير شكليك شود يا مثلا ايجاد يك سيستم ذره اي كنيد ... براي اين كار ها شما بايد ابتدا آموزش زير را بخوانيد :

براي ساختن اشياء در طول و در حين بازي بايد از دستور Ent_create استفاده كنيد :



ent_create(*,#,%) ;


* :

شما بايد به جاي اين علامت آدرس شي خود كه با فرمت Mdl در فولدر مخصوص بازي خودتان ذخيره كرديد بدهيد براي اين كار بايد اول يك رشته تعريف كنيد ( فرض مي گيريم فايل MDL شما محسن نام دارم و اسمي كه مي خواهيد براي رشته بگذاريد هم محسن نام دارد ) !



String Mohsen = <Mohsen.mdl>;


حال شما با تعريف كردن اين رشته به جاي علامت * فقط بايد اسم رشته اي كه تعريف كرديد و ما در اينجا محسن تعرفي كرده ايم را قرار دهيد !

# :

به جاي اين علامت بايد شما محله ساخته شدن شي خود را تعريف كنيد ... براي اين كار بايد از دستور زيد استفاده كنيد :



Vector(x,y,z) ;


كه به آنها مقدار بدهيد ... مي توانيد از دستور بالا هم استفاده نكنيد و هرچي خودتان خواستيد بزنيد ... !


% :


شما در اين قسمت بايد نام تابع كنترل كننده ي اين شي ساخته شده را بگوييد ( در مورد تابع قبلا حرف زده شده بود ) ! اگر هم تابعي نداريد از دستور زير به جاي % استفاده كنيد :



Null



حال يك مثال :



ent_create(Mohsen,vector(20,50,70),Null);


اين مثال نيازي به توضيح ندارد چون كامل درس داده شده !

XFXForce
08-10-06, 00:07
دستت درد نکنه واقعا خوب بود.