LXF81:Ogre
|
|
|
Ogre 3D 1.2
Мы не часто рассматриваем библиотеки, но не часто и библиотеки так хороши, пишет Пол Хадсон.
Явно по примеру Голливуда, бюджеты крупных игр вырвались из-под контроля. Каждому подавай кусочек пирога: от фирмы-разработчика кода до изготовителя компьютерного оборудования, лицензирующего свой бренд. А ну как исключить один из основных расходов: цену графического движка?
Игровая графика обязана постоянно обновляться и быть притягательной и реалистичной, поэтому хороший движок способен оттяпать изрядную долю расходов на разработку. Захоти вы построить свою игру на движке Quake 3 (до его открытия), пришлось бы заплатить $250000 плюс 5% от всего объема продаж. Ogre – сокращение от Object oriented Graphics Rendering Engine – предлагает высококачественную объемную графику «за так».
Благодаря лицензии LGPL, Ogre можно встроить в любое закрытое ПО без необходимости раскрывать исходный код. Некоторые коммерческие игры уже воспользовались этим преимуществом – а значит, игры подешевеют.
Знакомьтесь: Dagon
Инновации, введенные Ogre 3D 1.2 (кодовое название Dagon), стоят целого года трудов, и разработчики примут их с распростертыми объятиями. Главная из них – без сомнения, новая композиционная основа, позволяющая выполнять постобработку эффектов в реальном времени. Более того, новые композиции можно связать между собой с помощью скриптов, так что выход одной композиции послужит входом для другой.
Помимо крупных реформ, Dagon провел множество мелких API-поправок, благодаря которым Ogre стал более цельным внутренне – но здесь кроется и крупная проблема. Нельзя просто заменить Ogre 3D 1.0 на Ogre 3D 1.2 и скомандовать «Recompile»: даже простейшие игры Ogre не будут работать без серьезного пересмотра кода. Правда, поправки в общем невелики, и команда Ogre внятно их документирует, но как же это нудно – бесконечно менять getSceneManager на createSceneManager, GEOMETRY_QUERY_MASK на WORLD_GEOMETRY_TYPE_MASK, getSoftwareSkinningRequests на getSoftwareAnimationRequests, и т.п. Будем надеяться, что версии 1.4 этого не понадобится...
Миновав неприятности, вы снова погружаетесь в чудесный мир программирования Ogre – как приятно, что он поддерживает GLSL/Cg, прогрессивные сети, каркасную анимацию, системы частиц, пиксельные шейдеры и прочие функции, которые игроки уже привыкли воспринимать как должное. Больше того, Ogre делает до смешного простыми большинство основных действий: всего одна строчка кода на загрузку окружающего пейзажа, одна строчка на «включение» тумана, по одной строчке на загрузку облаков и отображение тени. Понятно, почему код игр, разработанных в Ogre, насколько компактен! Ogre 3D 1.2 Видимо, самое важное то, что Ogre полностью совместима с Windows, Linux и OS X и может работать и с OpenGL, и с Direct3D. Все особенности упрятаны с глаз долой, и о них даже не задумываешься.
Игра в безмолвии
Как ни хороша графика Ogre, здесь она буксует: с помощью Ogre не создать полноценную игру из-за недостаточной поддержки звука и функций ввода, не говоря уже о более сложных вещах, вроде отслеживания столкновений предметов в пространстве. Очень жаль, что работа над этими функциями вообще не планируется: разработчики охотно скинули их другим проектам.
Не успела выйти Ogre 3D 1.2, как уже начата работа над Ogre 3D 1.3 (из которой впоследствии вырастет Ogre 3D 1.4). Разработчики обещают усовершенствовать SSE/SSE2-оптимизацию для работы с новейшими чипами, включить поддержку Unicode и даже совместимость с Shader Model 3.0. А мы со следующего номера начинаем серию руководств по программированию 3D-игр с использованием Ogre 3D 1.2, чтоб не дать вам расслабиться…