Only One Man can DonСтатьи

Урок 0: Введение в Nutmeg::Core::Engine

Автор:

Использование движка Nutmeg::Core::Engine (Lesson00)

Урок 0: Введение в Nutmeg::Core::Engine

Здравствуйте :)
Вашему вниманию предоставляется вводная статья по использованию игрового движка
для создания игр с названием Nutmeg::Core::Engine.
Для начала скажу несколько слов о том, что это все-таки за движок, как был создан и для чего.


  Движок Nutmeg::Core (в переводе - ядро мускатника, мускатный орех) был создан
начинающей компанией One More Studio для разработки собственных коммерческих проектов.
В данный момент на этом движке ведется разработка нескольких проектов.
 
  Движок разрабатывался в течение полутора лет в процессе разработки проектов небольших игр,
концепции которых были созданы членами команды One More Studio. Некоторыми проектами,
демонстрационные версии которых были созданы на данном движке, заинтересовались
потенциальные издатели игр жанра casual.

  В процессе создания и развития движка пришло понимание, что важно не то,
чтобы движок обладал большим колличеством возможностей и продвинутой графикой,
сколько наличием удобного инструментария, позволяющего ускорить разработку
проектов. Именно поэтому при разработке большое внимание уделялось
редактору сцен Nutmeg::Core::Editor. Именно редактор является тем инструментом,
которым пользуются создатели игрового контента, поэтому было важно проработать
возможность быстрого и оптимального редактирования игровых уровней. В редакторе
даже без привлечения программистов можно быстро создать прототип будущей игры,
и сразу же проверить уже готовый контент на соответствие стилю придуманной
концепции.


Для чего?

  Движок предназначен для разработки небольших трехмерных игр. Тенденции таковы,
что нижняя планка возможностей железа казуальных игроков растет, поэтому
возможно в скором времени игроков будут привлекать игры не только в 2х
измерениях, но и игры в 3х измерениях с красочной графикой.

Для кого?

  Nutmeg предназначен для небольших команд разработчиков (примерно 1-7 человек)
для разработки проектов небольших игр (аркады, логические, поиск предметов и прочие
казуальные жанры). Для освоения и разработки требуются лишь начальные знания о 3д
графике и математике, поэтому движок будет интересен тем программистам,
которые в данный момент пользуются широко известным движком Blitz3d или его аналогами,
хотят совершенствовать свои навыки программирования и делать первые шаги в создании
программ на более серьезном уровне, используя мощный язык программирования C++.

Возможности движка

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

Возможности:
*Удобный редактор трехмерных пространств (освещение, визуализация в реальном времени)
*Редактор материалов.
*Скриптовая система на основе "Flow Graph" диаграмм.
*Встроенная физика на основе физической библиотеки Newton.
*Гибко настраиваемые системы частиц.
*Динамическое освещение.
*Импорт 3д моделей и анимации из пакета 3D Studio Max.
*Конвертор моделей из формата Blitz3d (для возможности использовать ранее наработанный контент)

Что необходимо для начала.
Для начала разработки игр с использованием движка Nutmeg,
вам потребуется:

NutmegSDK
3d Studio Max 9
Графический редактор (например, Photoshop)
Visual C++ или другой компилятор (например Borland C++ Builder)

Первая программа.

Ввиду наибольшего распространения рассмотрим создание проекта Nutmeg::Core::Engine для
Visual C++ 2008.
Для подготовки проекта необходимо проделать следующие шаги:

  • Скачать NutmegSDK и распаковать
  • Запустить Visual C++ 2008 и создать новый пустой проект win32 расположить его,
  •   например, в папке NutmegSDK/Projects

  • Добавить в проект все исходные файлы из каталога NutmegSDK/Source
  •   Прописать пути include в папку NutmegSDK/Source
  •   Прописать пути library в папку NutmegSDK/Library/VCpp9
  •   Прописать путь для выходного файла и рабочего каталога
  •   в NutmegSDK/Binary
  • Создать новый файл main.cpp следующего содержания
  • //------------------------------------------------------------------------------
    //
    // Простейшая программа Nutmeg::Core::Engine
    //
    //------------------------------------------------------------------------------
    
    // подключить главный заголовочный файл движка
    #include "Nutmeg.h"
    
    //------------------------------------------------------------------------------
    // класс приложения игры
    class Game : public Engine {
    
    public:
    
      //--------------------------------------------------------------------------
      // событие инициализации приложения
      void onStartup() {
        
        // инициализация рендера
        renderer.init();
        // инициализация физики
        physics.init();
    
        // установка шрифта
        renderer.setFont("Font00.png");
    
        // открывание консоли
        console.toggle();
    
        // вывод в консоль
        console.echo("Nutmeg kills...");
    
      }
    
      //--------------------------------------------------------------------------
      // событие рендеринга приложения
      virtual void onRender() {
    
        renderer.begin();
        renderer.clear();
        renderer.set2d();
        console.render();
        renderer.set3d();
        renderer.end();
    
      }
    
      //--------------------------------------------------------------------------
      // событие апдейта приложения
      virtual void onUpdate(float dt) {
    
        console.update(dt);
        
        if (keyHold(KEY_ESCAPE)) halt();
    
      }
    
      //--------------------------------------------------------------------------
      // событие изменения размера окна приложения
      virtual void onResize(int w, int h) {
        renderer.setResolution(w, h);
      }
    
      //--------------------------------------------------------------------------
      // событие повторения клавиши
      virtual void onKeyRepeat(int key) {
        console.processKey(key);
      }
    
      //--------------------------------------------------------------------------
      // событие генерации символа
      virtual void onKeyChar(char c) {
        console.processChar(c);
      }
    
      // -------------------------------------------------------------------------
    
    };
    
    //------------------------------------------------------------------------------
    
    int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    
      Game game;
    
      game.setVideoMode(VideoMode(800, 600, 32), false);
    
      game.main();
    
      return 0;
    }
    
    //------------------------------------------------------------------------------


    Все, можно комплилировать и запускать.

    SDK с движком
    http://disk.tom.ru/1ywehg6

    Спасибо за внимание.
    Алексей Егоров aka EvilSpirit.

    #engine, #nutmeg, #движок

    28 августа 2009

    Комментарии [5]