Здравствуйте!Мы рады вас приветствовать на нашем игровом портавле LP-GameHell!Здесь вы найдёте самые свежие новости игрового мира.Чувствуйте себя как дома)
Приветствую Вас, Гость | RSS
Четверг, 25.12.2025, 22:46
Главная » Статьи » Про игры

Движок Irrlight. Урок 1.

Совместный проект Silver Soft и Andrushka’s Software.

Irrlight - что это такое и с чем его едят.

Урок 1. Основы.

Здравствуйте. Начнём наш первый урок. Не будем рассусоливать и сразу возьмём быка за рога. Итак, что вы должны были уже сделать:

• Скачать движок ( скомпилировать, если надо ).

• Прописать все необходимые пути к .h и .lib файлам. Ну не маленькие думаю справитесь. Если всё же возникли затруднения, то пишите на e-mail.

• Достать компилятор.

• Выучить азы C++. :)

Поехали.

Игровой автомат. Что это?

По этому поводу написано много умных и толстых книжек, поэтому я не буду рассусоливать тонны теоретического материала, а возьму лишь самое главное.

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

Есть два варианта. Сделать всё hard-coded. Написать на чистом C, без классов. С огромным количеством if и switch. Господа, но мы же проживаем в век глобального господства ООП ;) ( некоторые извращенцы с этим не согласны, поэтому здесь надо осторожнее, могут побить ), поэтому будем писать с классами. :)

Итак, вернёмся к игровому автомату. У игрового автомата ( не АК-47, а автомат, который аппарат ) есть состояния, как и у автомата в реальной жизни. Состояние игры, состояние игрового меню, состояние меню настроек и так далее до бесконечности.

Каждое игровое состояние выполняет определённую работу. Игровое состояние позволяет нам играть, состояние меню позволяет нам тыкать по кнопочкам менюшки.

В определённый момент времени игровой автомат может находиться в определённом состоянии, и выполнять шаг игрового состояния.

Шаг – это набор действий которые выполняются за единицу времени, игровое состояние выполняет в бесконечном цикле шаг до тех пор, пока не поступит команда прекратить выполнения состояния. Состояние игры, например, за один шаг должно проверить какие клавиши тыкнул игрок, добавить монстров на экран, обработать действия игрока, отобразить летящие патроны ( конечно, это далеко не полный список ), после выполнения всех этих действий, если не поступило команды прервать игровое состояние, шаг повторяется с начала, т.е. проверяется ввод игрока и т.д.

В нашей игре эта штука будет реализована следующим образом. У нас имеется виртуальный класс CGameState. Остальные игровые состояния – его наследуют и используют свою реализацию методов класса. В класс CGame есть стек игровых состояний, куда состояния складируются в порядке их выполнения. ( например сначала CGameStateInit ( инициализация ), затем CGameStateLoadRes( загрузка ресурсов ), CGameStateLevel ( прождение по уровню, сам игровой процесс) ) . А в шаге CGame реализовано управление состояниями, вызовы OnCreate, OnDelete и Step, переход к следующему игровому состоянию.

Инициализация Irrlicht

Итак. Теперь будем разбираться с Irrlicht.

В NX++ существует самый главный объект – это NXRoot. С его помощью мы можем создавать окна рендеринга. ( вообще-то мы много чего можем с ним делать, но это разговор не этого урока ). Создать его можно только один экземпляр. NXRoot по научному – Singleton.

Всю реализацию инициализации движка я сделал в глобальном классе CGraph. Сама инициализация происходит в игровом состоянии CGameStateInit.

Итак как же провести инициализацию движка?

Сначала необходимо создать объект NXRoot.

NXRoot *root = new NXRoot();

Затем создать окно рендеринга. Окно рендеринга – это окно :). А если без шуток, то в нём собственно всё отображается, что нам захочется.

m_rwin = m_root->createRenderWindow( EDT_OPENGL, dimension2d( width, height ), bpp, fullScreen, true, vsync );

width/height – ширина, высота нашего окна.

bpp – цветность.

fullScreen - полноэкранный режим или нет.

vsync – включена ли вертикальная синхронизация.

EDT_OPENGL – обозначает, что мы будем использовать OpenGL рендерер, также существуют:

• EDT_DIRECTX9 – DirectX9

• EDT_DIRECTX8 – DirectX8

• EDT_SOFTWARE – Software rendering

• EDT_NULL – нулевое устройство. Ничего не выводит. Используется для тестирования.

dimension2d - это внутренний тип Irrlicht.

Здесь получаем указатель на IVideoDriver – видео драйвер. Нами будет использоваться редко.

IVideoDriver *driver = m_rwin->getVideoDriver();

Здесь получаем указатель на IResourceManager – менеджер ресурсов. Зугружает модельки, картинки, тексты. В ощем загружает всё, что загружается.

IResourceManager *rmgr = m_rwin->getResourceManager();

Здесь получаем указатель на ISceneManager – менеджер сцены. Используется часто. :) Добавляет в сцену новые объекты.

ISceneManager *smgr = rwin->getSceneManager();

На сегодня я думаю – всё. Внизу – ссылка на исходный код, мой e-mail и русский сайт. Исходник – просто показывает окно рендеринга. Пока разрещаю вам поиграться с параметрами и сконструировать свои игровые состояния.

До встречи. скачать исходники и текст урока. 

Категория: Про игры | Добавил: OlegN (24.07.2011)
Просмотров: 462 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
LP-GameHell © 2025 | Бесплатный конструктор сайтовuCoz