3d game maker конструктор 3d игр

Обновлено: 25.04.2024

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);

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 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 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);
>
>
>

tm=d3d_model_create();
tsn=0;
d3d_model_primitive_begin(tm,pr_trianglelist);

for (fc=0;fc
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)));

tsn+=1;
if (tsn==999) <
tsn=0;
d3d_model_primitive_end™;
d3d_model_primitive_begin(tm,pr_trianglelist);
>
>

d3d_model_primitive_end™;
return tm;


Теперь сохраняем и можно считать что уже моделли можно подгружать.
Теперь скомпилируем на Максимке любую моделль, или на блендере!(Важно - сохраните моделль в формате obj!)
Через программу UVMapperClassic0.30а конвертируем моделль в читабельный гамаку формат obj.
Перейдем непосредственно к загрузке самой моделли, да и еще, если вы делаете текстурированную моделль, развертка должна быть умещена строго в среднее окошечко с текстурой!(Это я пользователям Максимки!).
Так-с. Загружаем текстуру в Backgrounds или Sprites(Для двух и более текстур на моделль, под тип анимации!)
Создаем объект моделли.
в Create пишем

****_texture = background_get_texture(название текстуры) //В случае со спрайтом sprite_get_texture(название текстуры,image_index)
****_model = MakeObj('имя моделли.obj',1)

d3d_model_draw(****_model,x,y,z,****_texture) //x,y,z - положение моделли.(Ставьте все ноль, если это не оружие для перса!)

Дальше вы пишите если хотите трансформировать моделль;
d3d_transform_set_identity() // обязательно в начало
d3d_transform_add_rotation_x(angle) //angle - поворот моделли в градусах;
d3d_transform_add_rotation_y(angle)
d3d_transform_add_rotation_z(angle)
d3d_transform_add_translation(x,y,z) // РАСПОЛОЖЕНИЕ НА КАРТЕ! Оставьте x и y что расставлять по разным координатам, а z (Высоту) - правьте на свое усмотрение!
d3d_transform_add_scaling(xs,ys,zs) // растяг по осям x,y,z
d3d_transform_set_identity()// обязательно в конец
На этом думаю можно окончить с добавкой 3д моделлей!
Примечание (Текстуру перевернуть сверху - вниз)!

Работа с освещением
В Draw постоянного объекта

- это можно и не писать, это просто эффект плавного затемнения;
Дальше в Draw объекта осветителя:
Если солнце

ind - номер осветителя
dx - поворот по x
dy - поворот по y
dz - поворот по z
col - цвет освещения (c_*****);

Если освещение по типу свечи

ind - номер осветителя
x - положение по x
y - положение по y
z - положение по z
col - цвет освещения (c_*****)
range - дальность освещения;

Есть так же пример со светящимися объектами - якобы отражающими свет
Ну тут я просто сделаю copy-past.

d3d_vertex_normal(x,y,z,nx,ny,nz) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz).

d3d_vertex_normal_color(x,y,z,nx,ny,nz,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с некоторым цветом и значением альфа.

d3d_vertex_normal_texture(x,y,z,nx,ny,nz,xtex,ytex) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) и с позицией (xtex,ytex) в текстуре, смешивающейся с цветом и с альфа значением, установленных прежде.

d3d_vertex_normal_texture_color(x,y,z,nx,ny,nz,xtex,ytex,col,alpha) Добавляет вершину (x,y,z) в примитив с обычным вектором (nx,ny,nz) с позицией (xtex,ytex) в текстуре, смешивающейся с некоторым цветом и альфа значением

Создание skysphere

Для начала создайте объект с имением obj_skysphere
Загрузите в background текстуру неба с разверткой под 360 градусов.
Назовите ее любым коротким именем.
Теперь перейдет к недавно созданному объекту obj_skysphere
В Draw объекта впишите код

d3d_draw_ellipsoid(x+290 ,y+290 , -370, x-290, y-290, 370, background_get_texture (тут название загруженной текстуры неба), 1, 1, 24);


написания кода идет в таком порядке d3d_draw_ellipsoid(x1 ,y1 , z1, x2, y2, z2, texid, hrepeat, vrepeat, steps);
x1, x2, y1, y2 - координаты сферы в пространстве;
z1, z2 - высоты сферы;
texid - id текстуры;
hrepeat - повтор текстуры по горизонтали;
vrepeat - повтор текстуры по вертикали;
steps - число сторон сферы;
Теперь сделаем сферу движимую за игроком, дабы не убежать за пределы
В Step


Быстрая и увлекательная реализация ваших игровых идей
Создание игр различных жанров (аркадные и гоночные игры, action и adventure)
Не требуется знание языков программирования
Полностью трехмерные сцены (около 100 различных сцен)
Свыше 500 3D объектов (машины, механизмы, враги во главе с ужасным "боссом", оружие, бонусы, препятствия и пр.)
Неограниченное количество сюжетов, сценариев и игровых опций (более 12 миллиардов!)
Свыше 320 звуковых эффектов и более 100 мелодий
Добавление собственных 3D моделей, звуков, музыки.
Использование собственного изображения в игре
Дополнительные объекты в Интернете
Поддержка парной игры
Редактор размещения объектов на сцене
Редактор Уровней
Использование различных устройств управления (мышь, джойстик)

"Конструктор 3D игр" устраняет из творческого процесса всю рутинную работу, поэтому вы можете сконцентрироваться только на игровом дизайне. Это позволит вам раскрыть свой творческий потенциал, создать замечательные игры и получить море удовольствия!

Процессор: Pentium II 400 МГц (Pentium III 600 МГц)
Операционная система: Windows 95/98/2000/ME/XP
Версия DirectX: 7.0a (8.0a)
ОЗУ: 64Мб (128Мб)
Привод CD-ROM: 4х (16х)
Пространство на жестком диске: 600Мб
Графический адаптер: 3D акселератор (8Мб+), совместимый с DirectX 3D (акселератор (16Мб+), совместимый с DirectX)
Звуковой адаптер: совместимый с DirectX






Now anyone can build their ideal game in seconds. With just one click of a mouse, you can create a uniquely playable game without needing any programming knowledge or artistic skills at all. Offering over 12 billion gaming options, The 3D Gamemaker opens up a whole new concept in gaming, providing fun for all the family.

Create lap based driving games and add in any hostile you like. Make Horror games with 3rd person controls and scare yourself silly! Create your own fast paced First Person Shooters. Build games within a virtual Cartoon Environment.

Глава I. Включение 3D режима
Итак, прежде чем начать расставлять объекты и подгружать в них 3D модели, необходимо включить режим 3D. Ведь вы не прочтете текст, написанный на скомканом листке бумаги, не выровняв его. Представим, что 3D режим - это тот самый скомканый листок, на котором написаны все 3D объекты, 3D модели и прочее, что нужно рисовать в 3D. Для того, чтобы разровнять наш листок, то есть включить 3D режим, создадим объект objCamera. В событии Create (создание) запишем код:

global.camsin = sin(direction*pi/180); //Эту строку можно просто запомнить.
global.camcos = cos(direction*pi/180); //И эту тоже

d3d_start() //Включаем сам 3D режим.
d3d_set_perspective(true) //Включаем перспективу
d3d_set_lighting(false) //Выключаем свет.
d3d_set_culling(false) //Выключаем НЕотрисовку сторон объектов, которые мы не видим (сложно объяснить, поэтому чтобы понять лучше поэкспериментируйте)

texture_set_interpolation(false) //Выключаем сглаженность текстур (можете включить, просто я предпочитаю выключать сглаженность)
z = 16 //Создаем новую координату Z (для простых игр без прыжков, поднятий по лестницам и тому подобным это можно не делать :D)


3D режим мы включили, теперь нам необходимо сделать прорисовку 3D объектов (чтение, уже выровненного листка).
Для этого, в событие Draw (рисование) напишем код:

d3d_set_projection(x, y, z, x+global.camcos, y-global.camsin, z, 0, 0, 1) //Эту строку можно также, просто запомнить. Ее изменение вам понадобится ОЧЕНЬ редко, если вообще понадобится

d3d_draw_floor(0, 0, 0, room_width, room_height, 0, background_get_texture(texture1), 16, 16) //Создаем плоскость. Синтаксис: d3d_draw_floor(x1, y1, z1, x2, y2, z2, текстура, hrepeat, vrepeat)

Вот и все.
Теперь осталось только создать фон, с названием texture1, загрузить в него любую текстуру и можете смело запускать ваше творение.
Позже выложу исходник к этой главе.

Глава 2 - Ходим
В этом уроке, я расскажу о том, как можно «заставить» камеру передвигаться по нашему миру. Вернее, как заставить мир передвигаться вокруг нашей камеры, ведь в 3D это так и происходит. Работать мы будем с тем исходником, с которым работали в предыдущем уроке. Откроем его.
Откроем наш объект objCamera и добавим в него событие Step (шаг). Введем следующий код:

if(keyboard_check(ord("W"))) //Если нажата клавиша W
<
speed = 3 //Идем вперед
>
if(keyboard_check(ord("S"))) //Если нажата клавиша S
<
speed = -3 //Идем назад
>

//Далее начется "самый пугающий код", его можно просто запомнить
if(keyboard_check(ord("A"))) //Если нажали A
<
var xn,yn; ///Инициализируем новые переменные, действующие только в этом скрипте.
xn = x - sin(direction*pi/180); //Вычисляем где у нас лево
yn = y - cos(direction*pi/180); //Вычисляем где у нас лево
if not place_meeting(xn,yn,sblock) //Если ничего не мешает идти (sblock заменить на название родительского объекта всех ваших твердых объектов)
< x = xn; y = yn; >//Идем влево
>
if(keyboard_check(ord("D"))) //Если нажали D
<
var xn,yn; //Инициализируем новые переменные, действующие только в этом скрипте.
xn = x + sin(direction*pi/180); //Вычисляем где у нас право
yn = y + cos(direction*pi/180); //Вычисляем где у нас право
if not place_meeting(xn,yn,sblock) //Если ничего не мешает идти (sblock заменить на название родительского объекта всех ваших твердых объектов)
< x = xn; y = yn; >//Идем вправо
>
//Конец пугающего кода
if(keyboard_check(vk_nokey)) //Если ниче не нажимали
<
speed = 0 //Не двигаемся
>
global.camsin = sin(direction*pi/180); //Обновляем значение для global.camsin (ОБЯЗАТЕЛЬНО. )
global.camcos = cos(direction*pi/180); //Обновляем значение для global.camcos (ОБЯЗАТЕЛЬНО. )

//Данный код можно не запоминать а просто копировать
//Он нужен для создания свободного обзора мышкой .
xx = (display_mouse_get_x()-(display_get_width()/2))/16 //16 – скорость поворота по X, можно экспериментировать
yy = (display_mouse_get_y()-(display_get_height()/2))/16 //16 – скорость поворота по Y, тоже можно экспериментировать

objCamera.direction -= xx
objCamera.zdir -= yy/32 //С числом 32 можно экспериментировать

Конструктор Game Maker призван максимально упростить создание игр, чтобы у каждого пользователя появился шанс воплотить свои идеи в жизнь. По сравнению с классической разработкой игр, данная программа значительно облегчила данный процесс, но из-за его многогранности и сложности, сама превратилась в инструмент, требующий изучения.

Если вы ни разу не сталкивались с визуальными игровыми конструкторами, то врятли сможете разобраться в Game Maker самостоятельно. Эта программа заменила ввод кода, множеством готовых функций, в разнообразии которых, легко теряются начинающие разработчики.

Чтобы помочь вам быстрее овладеть инструментами Game Maker, мы собрали 2 сборника видеоуроков, где по шагам, наглядно, демонстрируется процесс создания игр.

Изучаем основы Game Maker

Базовый курс уроков Game Maker, поможет новичкам освоиться в программе и создать свою первую 2D игру. Автор видео подробно рассказывает, что нужно делать, как и зачем.

Учимся настраивать движение персонажей (влево, вправо, вниз и вверх).
Предназначение переменных в конструкторе Game Maker. Очень полезный урок.
Задаем параметр прочности (здоровья) для врагов.
Данный видеоролик расскажет вам, как добавить в игру экшена в виде перестрелок.
Задаем своему персонажу уровень здоровья и выводим его на экран.
Учимся основам создания искусственного интеллекта, на правдивых и ложных значениях.
Рандомные, или случайные события, помогут вам создать игру, где каждый уровень будет уникален. Смотрим и вникаем.
Настраиваем автоматическое движение за любым объектом. Пригодиться для создания виртуальных спутников.
Задаем дистанцию для определенных объектов.
Чтобы объекты не пропадали за пределами окна, стоит заранее настроить область их движения.
Учимся создавать многопользовательские игры, в которые можно играть с друзьями через интернет.
Даем врагам возможность вести прицельный огонь по заданным целям.
Добавляем в игру окно инвентаря для хранения и использования виртуальных объектов.
Добавляем возможность сохранения данных игры в отдельный документ.
Подробное объяснение понятия “цикл” и примеры его использования в разработке игр.

Знакомимся с жанрами

Сборник уроков для любителей. В данных видеороликах демонстрируется процесс разработки игр разных жанров. На наглядном примере показывают, как создаются TDS-стрелялки, платформеры, раннеры, стратегии и редакторы карт.


Программа Game Maker Studio 2.1.4.285 – это новая версия всем известного инструмента, в котором разрабатываются несложные игры на различный мотив. Отличительной особенностью данного приложения является то, что абсолютно все средства данной студии визуализированы, то есть пользователь не должен знать языки программирования для работы с конструктором. Это делает утилиту одинаково доступной как для опытных юзеров, так и для начинающих. Большое количество обучающих материалов в виде пошаговых инструкций, статей и даже видеоуроков, позволяет за короткий срок ознакомиться со всеми возможностями данной программы.

С выходом новой версии приложение претерпело множество полезных изменений и стало еще более функциональным, нежели прежде. Во второй версии Game Maker Studio вы с лёгкостью освоите все механизмы современных компьютерных игр. В визуальном конструкторе вам не потребуется прописывать программный код, приложение всё произведет за пользователя. Разработчики позаботились, чтобы работать в редакторе виртуальных игр было максимально просто. Именно поэтому пользователь только задает события и соответствующие реакции героя или окружающего мира на них, остальную работу делает Game Maker.

В конструкторе пользователей ждут максимально гибкие настройки, позволяющие воплотить практически любую затею в виртуальном мире. Тонкая подстройка может быть осуществлена с помощью соответствующих фильтров и параметров, без необходимости прописывания дополнительных скриптов. Если же уровень пользователя позволяет внедрить определенные особенности в создаваемую игру, тогда можно воспользоваться инструментом под названием Game Maker Language, позволяющем добавить часть собственного кода. Несмотря на все старания разработчиков избежать необходимости использования языка программирования, в реальных ситуациях всё же встречаются неординарные случаи, когда это требуется сделать.

Инструментарий новой версии программы Game Maker Studio 2.1.4.285 поражает своим разнообразием и ассортиментом. Разработчики хорошо потрудились, создавая конструктор. Огромное число вкладок, всплывающие панели, большая рабочая зона, удобно расположенное меню, вынесенные ярлыки для наиболее часто используемых функций на главную панель, полностью настраиваемая область с инструментами – всё это позволяет продуктивно трудиться во время создания двухмерной компьютерной игры. Разработчики решили глобально переработать весь интерфейс редактора, при этом, по умолчанию в программе нет поддержки русского языка. Внедрить перевод можно с помощью специального файла-русификатора, который также присутствует в архиве с программой. В новой версии также появился собственный движок под названием BOX2D и новая физика. Еще одним новшеством является возможность выбора операционной системы, под управлением которой будет работать создаваемая игра.

Особенности программы Game Maker Studio

  • Последняя версия конструктора дает возможность создавать расширения для большого количества платформ на соответствующих языках программирования.
  • Game Maker имеет все необходимые компоненты для того, чтобы создаваемые игры запускались на iOS, Xbox, Windows PC & Phone, Linux, Android, PS4, PSVita, HTML5.
  • Имеется поддержка шейдеров для эффективного управления процессом отрисовки, преобразований и графических эффектов.
  • Внедрено огромное число математических функций для обработки векторных и скалярных величин.
  • Используется компилятор кода, что позволяет увеличить производительность в играх.
  • Внедрена поддержка множества сервисов для монетизации.
  • Имеются опции для отладки в специализированном окне The Debug Module.
  • Программа поддерживает большое число библиотек и расширений на всевозможных языках.
  • Существует бесплатная и платная версии конструктора.
  • Разработчики позаботились о создании собственного языка программирования, схожем с C++ и Pascal.
  • Имеется поддержка работы с трехмерной графикой, однако её использование весьма неудобно.
  • Недостатком данного продукта является возможность его использования исключительно на платформе Windows.

Особенности установки Game Maker Studio

1. Запустите инсталляцию, кликнув по исполняемому файлу с наименованием Game Maker Studio 2.14.285 Setup.exe.
2. В случае, если после установки программа автоматически запустилась, необходимо закрыть её.
3. Скопируйте файлы с именами «CorePlugins.DLL» и «IDE.DLL» из папки Crack в папку с установленным приложением.
4. От имени администратора запустите файл «DelAssem.cmd».
5. Запустите приложение, завершите установку.
6. Скопируйте файлы «GMAssetCompiler.exe» и «igor.exe» из папки Crack в папку C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-x.x.x.xxx\ bin\
7. Конструктор готов к работе.

Русификация Game Maker Studio


1. Поместить файл «russian.csv» в папку «Languages», которая находится в установочном каталоге приложения (по умолчанию путь C:\Program Files\GameMaker Studio 2\).
2. Перейдите в настройки программы, затем «установка языка» и выберите русский.шаблоны для dle 11.2

Читайте также: