مشاهدة النسخة كاملة : [درس]عمل لعبة 3Dعلى الجيم ميكر
بسم الله الرحمن الرحيم
]درس[عمل لعبة 3Dعلى الجيم ميكر
هذا الدرس أخذتة من بعض الأجانب المحترفين في الجيم ميكر
المهم......نبدأ:-
1-أدرج سبعة sprites ويجب أن يكونTransparent غير مفعل
وأيضن يجب ألا يكون في أي سبرايت صح في مربعة
إلا السبرايت الأول sprite1
http://www6.0zz0.com/2008/06/24/13/792006039.jpg
أ-السبرايت الأول:
الاسم: sprite1
اللون:أصفر
الحجم:(W:32) (H:32)
Bonding box:Manual
ب-السبرايت التاني:
الاسم: spr_corners_1
اللون:أسود
الحجم:(W:800) (H:600)
Bonding box:Automatic
ج-السبرايت الثالث:
الاسم: spr_player
اللون:أسود
الحجم:(W:6) (H:6)
Bonding box:Automatic
د-السبرايت الرابع:
الاسم: spr_wall_16
اللون:أسود
الحجم:(W:16) (H:16)
Bonding box:Automatic
س-السبرايت الخامس:
الاسم: spr_wall_8
اللون:أسود
الحجم:(W:8) (H:8)
Bonding box:Automatic
ص-السبرايت السادس:
الاسم: spr_wall_hs
اللون:أسود
الحجم:(W:12) (H:4)
Bonding box:full image
و-السبرايت السابع:
الاسم: spr_dot
اللون:أخضر غامق(مثل اللون الأصلي)
الحجم:(W:1) (H:1)
Bonding box:Automatic
2-أضيف الصوت
أنا عندي صوت
تحميل (http://www.zshare.net/download/14132116f3f4d0f4/)
يجب أن يكون الصوت على اسم النغمة
3-أضف Background
أنا عندي
تحميل (http://www.zshare.net/download/14132084c348e704/)
يجب أن تكون الصورة على اسم الصورة المرفقة
4-أضف إسكربت
أ-الاسم: scr_compare_angles
النص:
//angle_dist(ang1,ang2);
return ((((argument0 - argument1) mod 360) + 540) mod 360) - 180;
يحدد مساحة السطح ورؤية الكميرا
ب-الاسم: createFromObj
النص:
// MOSAIC Light 3D OBJ IMPORTER
// (c) 2006. Zoltan Percsich. All Rights Reserved.
// Don't edit this script
filename=argument0;
flipnormals = 1;
if (argument1>0) flipnormals=-1;
vertex_list1=ds_list_create();ds_list_clear(vertex_list1);ds_list_add(vertex_list1,0);
vertex_list2=ds_list_create();ds_list_clear(vertex_list2);ds_list_add(vertex_list2,0);
vertex_list3=ds_list_create();ds_list_clear(vertex_list3);ds_list_add(vertex_list3,0);
normal_list1=ds_list_create();ds_list_clear(normal_list1);ds_list_add(normal_list1,0);
normal_list2=ds_list_create();ds_list_clear(normal_list2);ds_list_add(normal_list2,0);
normal_list3=ds_list_create();ds_list_clear(normal_list3);ds_list_add(normal_list3,0);
texture_list1=ds_list_create();ds_list_clear(texture_list1);ds_list_add(texture_list1,0);
texture_list2=ds_list_create();ds_list_clear(texture_list2);ds_list_add(texture_list2,0);
faces_list=ds_list_create();ds_list_clear(faces_list);
fp=file_text_open_read(filename);
for (i=0;file_text_eof(fp)==false;i+=1) {
row=file_text_read_string(fp);row=string_replace_all(row," "," ");
if (string_char_at(row,1)=="v" && string_char_at(row,2)==" ") {
row=string_delete(row,1,string_pos(" ",row));
vx=real(string_copy(row,1,string_pos(" ",row)));
row=string_delete(row,1,string_pos(" ",row));
vy=real(string_copy(row,1,string_pos(" ",row)));
row=string_delete(row,1,string_pos(" ",row));
vz=real(string_copy(row,1,string_length(row)));
ds_list_add(vertex_list1,vx);
ds_list_add(vertex_list2,vy);
ds_list_add(vertex_list3,vz);
}
if (string_char_at(row,1)=="v" && string_char_at(row,2)=="n") {
row=string_delete(row,1,string_pos(" ",row));
nx=real(string_copy(row,1,string_pos(" ",row)));
row=string_delete(row,1,string_pos(" ",row));
ny=real(string_copy(row,1,string_pos(" ",row)));
row=string_delete(row,1,string_pos(" ",row));
nz=real(string_copy(row,1,string_length(row)));
ds_list_add(normal_list1,nx);
ds_list_add(normal_list2,ny);
ds_list_add(normal_list3,nz);
}
if (string_char_at(row,1)=="v" && string_char_at(row,2)=="t") {
row=string_delete(row,1,string_pos(" ",row));
tx=real(string_copy(row,1,string_pos(" ",row)));
row=string_delete(row,1,string_pos(" ",row));
ty=real(string_copy(row,1,string_length(row)));
ds_list_add(texture_list1,tx);
ds_list_add(texture_list2,ty);
}
if (string_char_at(row,1)=="f" && string_char_at(row,2)==" ") {
row=string_replace_all(row," "," ");
row=string_delete(row,1,string_pos(" ",row));
if (string_char_at(row,string_length(row))==" ") row=string_copy(row,0,string_length(row)-1);
face_num=string_count(" ",row);
face_division=1;
temp_faces[0]=0;
for (fc=0;fc<face_num;fc+=1) {
f=string_copy(row,1,string_pos(" ",row));
row=string_delete(row,1,string_pos(" ",row));
temp_faces[face_division]=f;
face_division+=1;
}
f=string_copy(row,1,string_length(row));temp_faces[face_division]=f;
if (face_division==3) {
f1=temp_faces[2];
f2=temp_faces[3];
f3=temp_faces[1];
ds_list_add(faces_list,f1);
ds_list_add(faces_list,f2);
ds_list_add(faces_list,f3);
} else {
f1=temp_faces[2];
f2=temp_faces[3];
f3=temp_faces[1];
ds_list_add(faces_list,f1);
ds_list_add(faces_list,f2);
ds_list_add(faces_list,f3);
for (t=0;t<face_division-3;t+=1) {
f1=temp_faces[4+t];
f2=temp_faces[1];
f3=temp_faces[3+t];
ds_list_add(faces_list,f1);
ds_list_add(faces_list,f2);
ds_list_add(faces_list,f3);
}
}
}
file_text_readln(fp);
}
file_text_close(fp);
tm=d3d_model_create();
tsn=0;
d3d_model_primitive_begin(tm,pr_trianglelist);
for (fc=0;fc<ds_list_size(faces_list);fc+=1) {
sub_face=ds_list_find_value(faces_list,fc);
if (string_count("/",sub_face)==0) {
f_index=sub_face;
t_index=-1;
n_index=-1;
}
if (string_count("/",sub_face)==1) {
f_index=string_copy(sub_face,1,string_pos("/",sub_face)-1);
sub_face=string_delete(sub_face,1,string_pos("/",sub_face));
t_index=string_copy(sub_face,1,string_length(sub_face));
n_index=-1;
}
if (string_count("/",sub_face)==2 && string_count("//",sub_face)==0) {
f_index=string_copy(sub_face,1,string_pos("/",sub_face)-1);
sub_face= string_delete(sub_face,1,string_pos("/",sub_face));
t_index=string_copy(sub_face,1,string_pos("/",sub_face)-1);
sub_face= string_delete(sub_face,1,string_pos("/",sub_face));
n_index=string_copy(sub_face,1,string_length(sub_face));
}
if (string_count("/",sub_face)==2 && string_count("//",sub_face)==1) {
sub_face=string_replace(sub_face,"//","/");
f_index=string_copy(sub_face,1,string_pos("/",sub_face)-1);
sub_face= string_delete(sub_face,1,string_pos("/",sub_face));
t_index=-1;
n_index=string_copy(sub_face,1,string_length(sub_face));
}
vx=ds_list_find_value(vertex_list1,floor(real(f_index)));
vy=ds_list_find_value(vertex_list2,floor(real(f_index)));
vz=ds_list_find_value(vertex_list3,floor(real(f_index)));
if (floor(real(n_index))!=-1 && ds_list_size(normal_list1)>=1) {
nx=flipnormals*ds_list_find_value(normal_list1,floor(real(n_index)));
ny=flipnormals*ds_list_find_value(normal_list2,floor(real(n_index)));
nz=flipnormals*ds_list_find_value(normal_list3,floor(real(n_index)));
} else {
nx=0;
ny=0;
nz=0;
}
if (floor(real(t_index))!=-1 && ds_list_size(texture_list1)>=1) {
tx=ds_list_find_value(texture_list1,floor(real(t_index)));
ty=ds_list_find_value(texture_list2,floor(real(t_index)));
} else {
tx=0;
ty=0;
}
d3d_model_vertex_normal_texture(tm,vx,vy,vz,nx,ny,nz,tx,ty);
tsn+=1;
if (tsn==999) {
tsn=0;
d3d_model_primitive_end(tm);
d3d_model_primitive_begin(tm,pr_trianglelist);
}
}
d3d_model_primitive_end(tm);
return tm;
أما هذا فهو للتحكم بالأبجكت و اللاعب
ج-الاسم: build_models
النص:
global.tracer = d3d_model_create();
d3d_model_wall(global.tracer,-20,0,.5,20,0,-.5,1,1);
d3d_model_wall(global.tracer,-20,.5,0,20,-.5,0,1,1);
//create the tree model
global.tree1 = createFromObj("models/tree1.obj");
global.tree2 = createFromObj("models/tree2.obj");
global.treetex1 = background_get_texture(bg_wood);
global.treetex2 = background_get_texture(bg_tree);
كي يحدث إصتدام مع الجسم المستظم
د-الاسم: scr_find_z
النص:
var grid,temp_x,temp_y,temp_z,temp_gridx,temp_gridy,temp_offsetx,temp_offsety,temp_z1,temp_z2,temp_z3,te mp_z4;
temp_x = argument0;
temp_y = argument1;
grid = 50;
//determine which grid the instance is in
temp_gridx=floor(temp_x/grid)
temp_gridy=floor(temp_y/grid)
//determine where in the grid the instance is
temp_offsetx= temp_x-grid*temp_gridx
temp_offsety= temp_y-grid*temp_gridy
temp_z1=ds_grid_get(global.termap,temp_gridx,temp_gridy)
temp_z2=ds_grid_get(global.termap,(temp_gridx+1),temp_gridy)
temp_z3=ds_grid_get(global.termap,(temp_gridx+1),(temp_gridy+1))
temp_z4=ds_grid_get(global.termap,temp_gridx,(temp_gridy+1))
if temp_offsetx>temp_offsety {
temp_z = temp_z1-temp_offsetx*(temp_z1-temp_z2)/grid-temp_offsety*(temp_z2-temp_z3)/grid;} else {
temp_z = temp_z1-temp_offsetx*(temp_z4-temp_z3)/grid-temp_offsety*(temp_z1-temp_z4)/grid;}
return temp_z;
مهم لجعل اللاعب يلمس الأرض
س-الاسم: svplay
النص:
sound_volume(argument0,argument1);
sound_play(argument0);
يعمل عل خلق مشهد حقيقي للعبة بدمج الصوت و الحركة
ص-الاسم: svrand
النص:
var temp_snd,rand;
temp_snd = ds_list_create();
if (argument1){ds_list_add(temp_snd,argument1);}
if (argument2){ds_list_add(temp_snd,argument2);}
if (argument3){ds_list_add(temp_snd,argument3);}
if (argument4){ds_list_add(temp_snd,argument4);}
if (argument5){ds_list_add(temp_snd,argument5);}
rand = floor(random(ds_list_size(temp_snd)));
sound_volume(ds_list_find_value(temp_snd,rand),argument0);
sound_play(ds_list_find_value(temp_snd,rand));
ds_list_destroy(temp_snd);
مهم جدا لعمل أرضية اللعبة
و-الاسم: build_sky
النص:
sky_up_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_up_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_up_ID0,-1000, 1000, 1000,0,0);
d3d_model_vertex_texture(sky_up_ID0, 1000, 1000, 1000,1,0);
d3d_model_vertex_texture(sky_up_ID0,-1000,-1000, 1000,0,1);
d3d_model_vertex_texture(sky_up_ID0, 1000,-1000, 1000,1,1);
d3d_model_primitive_end(sky_up_ID0);
sky_down_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_down_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_down_ID0,-1000,-1000,-1000,0,0);
d3d_model_vertex_texture(sky_down_ID0, 1000,-1000,-1000,1,0);
d3d_model_vertex_texture(sky_down_ID0,-1000, 1000,-1000,0,1);
d3d_model_vertex_texture(sky_down_ID0, 1000, 1000,-1000,1,1);
d3d_model_primitive_end(sky_down_ID0);
sky_east_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_east_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_east_ID0, 1000,-1000, 1000,0,0);
d3d_model_vertex_texture(sky_east_ID0, 1000, 1000, 1000,1,0);
d3d_model_vertex_texture(sky_east_ID0, 1000,-1000,-1000,0,1);
d3d_model_vertex_texture(sky_east_ID0, 1000, 1000,-1000,1,1);
d3d_model_primitive_end(sky_east_ID0);
sky_west_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_west_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_west_ID0,-1000, 1000, 1000,0,0);
d3d_model_vertex_texture(sky_west_ID0,-1000,-1000, 1000,1,0);
d3d_model_vertex_texture(sky_west_ID0,-1000, 1000,-1000,0,1);
d3d_model_vertex_texture(sky_west_ID0,-1000,-1000,-1000,1,1);
d3d_model_primitive_end(sky_west_ID0);
sky_north_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_north_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_north_ID0,-1000,-1000, 1000,0,0);
d3d_model_vertex_texture(sky_north_ID0, 1000,-1000, 1000,1,0);
d3d_model_vertex_texture(sky_north_ID0,-1000,-1000,-1000,0,1);
d3d_model_vertex_texture(sky_north_ID0, 1000,-1000,-1000,1,1);
d3d_model_primitive_end(sky_north_ID0);
sky_south_ID0 = d3d_model_create();
d3d_model_primitive_begin(sky_south_ID0,pr_trianglestrip);
d3d_model_vertex_texture(sky_south_ID0, 1000,1000, 1000,0,0);
d3d_model_vertex_texture(sky_south_ID0,-1000,1000, 1000,1,0);
d3d_model_vertex_texture(sky_south_ID0, 1000,1000,-1000,0,1);
d3d_model_vertex_texture(sky_south_ID0,-1000,1000,-1000,1,1);
d3d_model_primitive_end(sky_south_ID0);
يتحكم بالسماء أي عندما تنحني يمينا أو شمالا تضهر لك السماء على شكل متناسب و متسلسل
4-نضع الأبجكت
وهذا في الملف المرفق
5-ثم ننشىء الروم
بأي شكل بشرط أن تكون الأبجكت جميعها في الروم
لكي تتناسق الصور و الؤرسمات وحركة اللاعب
وليس هذا فقط هناك مثال على ذلك
تحميل المثال (http://www.zshare.net/download/14132333a00a2539/)
أو
الملف المرفق
يجب ن يكون لك برنامج لصنع أجسام الثلاثي الأبعاد (لصنع لعبة)
مثل
Cenima 4D
3D Max
Maya
لصنع الأشجار و السطوح كما في المثال الذي أرفقت معه بعض الأجسام
وعفوا على الطول هذا
أرجو أن يكون الدرس مفهوما
ملاحظة هامة جداً:-
سيعمل المثال مع البرنامج المرفق بكرارك
تحميل الكراك (http://www.keygen.ms/crack/99163/)
سامي.خ
24-06-2008, 07:15 PM
بارك الله فيك
الدرس هذا كثير يبحثون عنه
وخاصة ان مشكلة توريد الموديلات في الجيم ميكر إنحلت في الإصدار السابع
شكراً لك
ديمو1
24-06-2008, 09:36 PM
مشكور اخوي ولك جزيل الشكر دروس متعوبة صراحه أستمر........
اسود الرافدين
25-06-2008, 12:59 AM
ممتاز عاشت ايديك اخوي ولو الشرح مختصر جدا جدا لكن ايضا مفيد
MASO2008
25-06-2008, 04:12 PM
مشكور أخي على هذا الدرس
من زمان وانا ابحث عنة
شكرا على المرور
وهذا الدرس ينفي كلام كل من يقول أن الجيم ميكر غير قادر على صنع ألعاب الثري دي
والمثال دليل على ذلك
تحميل المثال (http://www.zshare.net/download/14132333a00a2539/)
iraqihaya
25-06-2008, 05:11 PM
مشكووور والشرح روعة
firon12
27-08-2012, 10:30 AM
تسلم يا غالى, انا عمرى مهلائى شرح احسن من كدة والمثال شغال 100%100 شكراً بجد على المجهود الرائع وكنت بطلب يريت تحتلنا شرح لصنع الأشكال ال3d وربنا يديك كمان وكمان:)
جميع حقوق برمجة vBulletin محفوظة ©2024 ,لدى مؤسسة Jelsoft المحدودة.
جميع المواضيع و المشاركات المطروحة من الاعضاء لا تعبر بالضرورة عن رأي أصحاب شبكة المنتدى .