Суббота, 26.05.2012, 18:27


Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [170]
Статьи об общих понятиях связанных с созданием игр
Движки и Гейммейкеры [85]
Статьи о программах для создания игр
Игры [39]
Статьи об играх, в том числе и сделанных на гейммейкерах
Софт [25]
Различные программы, в том числе в помощь игроделам
Разное [61]
Статьи, которые не вошли в определённые разделы
Наш опрос
Как вы увлеклись геймкриэйтингом?
Всего ответов: 6443
Главная » Статьи » Движки и Гейммейкеры

Основы "Xtreme3D"
Всем привет.
Сегодня я расскажу вам основы Xtreme3D.dll в GameMaker.
Xtreme3D использует OpenGL, что делает его мощным 3D движком для ГМ.

На этом уроке мы реализуем:

  • 3D пространство;
  • возможность передвижения по нему игроком от первого лица;
  • добавление примитивов и моделей, а также, загрузку текстур для них.

    Итак, приступим. Для начала нам потребуются скрипты для работы с библиотекой. Скачать их можно здесь.
  • Теперь создаём отдельную папку для будущего проекта. Копируем в папку Xtreme3D.dll.
    Импортируем скрипты из архива. Создаём новый объект – o_main. Код в Create большой, поэтому, чтобы не было путаницы, буду объяснять код по частям. Первая часть:
    Code
    X = 1;
    Y = 2;
    Z = 4;
    dll_init();
    EngineCreate(window_handle());
    view1 = ViewerCreate(0,0,640,480);
    ViewerEnableVSync(view1,true);
    ViewerSetLighting(view1,true);
    ViewerSetBackgroundColor(view1,c_yellow);

  •  объявляем переменные, отвечающие за координаты модели, которую потом будем загружать;
  • подключаем dll первой функцией, чтобы использовать потом все остальные функции;
  • создаём 3D движок;
  • создаём первый вид, в котором будет отображаться пространство в 3D;
  • включаем вертикальную синхронизацию в пределах вида view1;
  • включаем освещение в пределах того же вида;
  • выбираем цвет фона для вида view1.

    Переходим ко второй части кода:
    Code
    scene = DummycubeCreate(0);
    Light = LightCreate(1,scene);
    ObjectSetPosition(Light,-10,20,50);
    matlib=MaterialLibraryCreate();
    MaterialLibraryActivate(matlib);

    MaterialCreate('texture','Dirt.jpg');

    Пояснение:

  • создаём сцену;
  • создаём свет на для сцены;
  • устанавливаем свету позицию (20,20,50);
  • создаём библиотеку материалов и записываем её индекс в переменную;
  • активируем созданную библиотеку материалов;
  • создаём материал (текстуру) из файла Dirt.jpg с именем texture.

    И, наконец, переходим к третьей части кода:
    Code
    MaterialCreate('texCube','BoxWalls.png');
    MaterialAddTextureEx('texCube','texCube');

    plane = PlaneCreate(1,40,40,8,8,scene);
    ObjectPitch(plane,90);
    ObjectSetMaterial(plane,'texture');

    MyCube = FreeformCreate('cube.obj',scene);
    ObjectSetMaterial(MyCube,'texCube');
    ObjectSetPosition(MyCube,X,Y,Z);

    Пояснение:

  • так же, как и создавали предыдущий материал, создаём следующий, только изменяем название материала и имя файла;
  • добавляем материал texCube как текстуру texCube;
  • создаём плоскость (пол) в координатах (1,40,40) размером 8х8;
  • поворачиваем плоскость так, чтобы она была перпендикулярна игроку;
  • выбираем текстуру texCube для плоскости;
  • загружаем модель cube.obj на сцену и записываем её индекс в переменную;
  • выбираем для загруженной модели MyCube текстуру texCube;
  • перемещаем модель в координаты, равные переменным – X,Y,Z.

    Всё, с событием создания закончили. Теперь нужно написать пару строк в событии шага (Step):

    Code
    Update();
    ViewerRender(view1);
    ObjectTurn(MyCube,1);


    Данный код выполняет следующее:

  • обновляет столкновения, изображение на экране, сцену и т.д.;
  • назначает вид для, используемый для рендера, чтобы отображать 3D сцену;
  • медленно вращает модель MyCube.

    С объектом o_main разобрались.
    Создаём объект o_cam. В событии создания пишем такой код:

    Code
    CamSpeed = 0.5;
    MouseSetPosition(room_width/2,room_height/2);
    CamPos = DummycubeCreate(o_main.scene);
    TheCam = CameraCreate(CamPos);
    ObjectSetPosition(CamPos,-4,2,3)
    ViewerSetCamera(o_main.view1,TheCam);


    Объясняю записанный код:

  • устанавливается скорость передвижения камеры;
  • смещаем курсор мыши в центр комнаты;
  • создаём основу для камеры и записываем её индекс в переменную;
  • создаём камеру для основы CamPos и, так же, записываем её индекс в переменную;
  • помещаем камеру в координаты (-4,2,3);
  • назначаем обзор в пределах первого вида (view1) камерой TheCam;

    Переходим к событию шага:

    Code
    MouseLook(CamPos,TheCam);
    if keyboard_check(ord('A')) ObjectStrafe(CamPos,CamSpeed);
    if keyboard_check(ord('D')) ObjectStrafe(CamPos,-CamSpeed);
    if keyboard_check(ord('S')) ObjectMove(CamPos,CamSpeed);
    if keyboard_check(ord('W')) ObjectMove(CamPos,-CamSpeed);

    Здесь первая строка отвечает за обзор мышью, а остальные – за управление.
    Со всеми объектами мы закончили.

    Создаём комнату, помещаем в неё созданные объекты, сохраняем проект в папку, которую мы создали в начале урока, запускаем и получаем такой результат:

    Вы создали 3D комнату. Спасибо за внимание. До новых встреч!
  • Категория: Движки и Гейммейкеры | Добавил: GameMix (27.08.2011)
    Просмотров: 2111 | Рейтинг: 5.0/5
    Теги: 3D, Game Maker 8, Xtreme3D, Движок, GML, DLL, GM, OpenGL, Урок, ГМ
    Дополнительные опции:
    Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

    Игровые объявления и предложения:
    Если вас заинтересовал материал «Основы "Xtreme3D"», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями. Для этого воспользуйтесь предлагаемой ниже кнопкой:
    Всего комментариев: 6
    0  
    6 GameMix   (25.03.2012 14:18)
    Если у вас нет скриптов для работы с Xtreme3D, тогда качайте здесь.

    +2  
    5 Make_gamer   (01.09.2011 14:47)
    Отличный урок!

    +2  
    4 AGENTX001   (29.08.2011 14:14)
    хорошо, пиши дальше.

    +2  
    3 GameMix   (28.08.2011 17:37)
    Указал модель и текстуры, но забыл выложить их. Вот. В архиве 2 текстуры и 1 модель. smile

    +2  
    2 GameMix   (28.08.2011 16:09)
    Спасибо, буду стараться.

    +4  
    1 Buran   (28.08.2011 15:14)
    Отлично, пиши дальше.

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Ссылки по теме
    Поиск
    10 случайных движков
    Maker3D
    Silent Walk: RENAISSANCE
    GameCore
    DX Studio
    ezRPG
    Ren'Py
    M.U.G.E.N
    Dimension3
    Rumblah!
    Racer
    Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр Разработка игр в СНГ Loadka.ru – загрузка файлов Игорный бизнес в России Реклама и заработок
    Все права сохранены. GcUp.ru © 2008-2012 Рейтинг