Категории раздела
Программирования [69]
разные языки программирования
Создания игр [10]
Статьи о создании игр
Движки [0]
Статьи о программах для создания игр
Игры [1]
Статьи об играх
Приложения (софт) [0]
Програми в помощь игроделу
Главная » Статьи » Создания игр

Основы "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);

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

    Создаём комнату, помещаем в неё созданные объекты, сохраняем проект в папку, которую мы создали в начале урока, запускаем и получаем такой результат: 
  • Категория: Создания игр | Добавил: graimp (17.11.2011)
    Просмотров: 610 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 1
    1 GameMix  
    0
    graimp, ты забыл указать автора статьи. Посмотри в первоисточнике - http://gcup.ru/publ/osnovy_xtreme3d/2-1-0-329

    Имя *:
    Email *:
    Код *:
    Наш опрос
    На каком языке лучше программировать
    Всего ответов: 38
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0