Делаем простой редактор бликов.
Интерфейс редактора
Вывод бликов с помощью OpenGL
Функциональность интерфейса
Интерфейс редактора
В процессе разработки игры, часто возникает ситуация необходимости компоновки уровня. Это когда все материалы созданные разработчиками( модели, ландшафт и т.д) собираются в одно целое, получается игровой уровень. Начинающие кодеры думают, что с помощью своего редактора можно сделать все, включая уровень. Но это только доля правды. На самом деле разработчики не использую свои редакторы для создания моделей, брашей к уровням (теоретически - геометрический объект с наложенной заранее текстурой) и тем более ни звуков, ни музыки они там тоже не делают.
Такой редактор как UnrealEditor может рисовать, но, боюсь даже сам Клиффи не сделает такими инструментами (кубиками и плоскостями) ничего путного.
Но бывают и исключения. Некоторые часто повторяющиеся элементы в игре можно объединить в один редактор, который мог бы ими управлять, создавать и редактировать. Так, если у вас есть компоновщик ресурсов (читай редактор уровней), то можно расширить кругозор его возможностей, добавив, например, такие редакторы как:
- редактор оружия
- редактор систем частиц
- редактор событий
- редактор интерфейса
- редактор бликов :) Мелочь пузатая, а приятно.
Вот о последнем редакторе мы сегодня и поговорим. Только не путайте менеджеры ресурсов (текстуры, звуки) и редактор оружия, например. Это совсем разные вещи.
Сразу без лишних слов поделим работу на четыре части:
1. Определиться с интерфейсом редактора, определить окна редактора.
2. Организовать вывод графики с помощью библиотеки OpenGL.
3. Реализовать функциональность интерфейса.
4. Реализовать возможность сохранения проекта и его загрузку.
А теперь подробно по всем пунктам.
Интерфейс редактора.
За основу интерфейса мы возьмем стандартную схему окон. У нас будет одно окно просмотра изображения и одно окно для управления проектом. Так же у нас будет меню с опциями открытия и сохранения проекта, а также выход и меню помощи. Все банально. Кстати, чтобы пристыковать меню к форме нужно всего лишь вписать идентификатор меню в поле Menu вашего диалога.
Теперь определимся с интерфейсом на самой форме (еще по VB помню это слово, обычно в VC++ его не говорят, заменяя его на более "сурьезное" - Dialog). Определим все, ну или почти все функциональные части интерфейса и выделим их в группы, то есть визуально объединим их. Это придаст интерфейсу более собранный вид. Итак, мы определили шесть групп функционалов и что мы имеем:
1. Главное - здесь у нас по идее можно регулировать количество бликов, но за нехваткой времени я это не доделал. Еще у нас есть регулятор размера бликов, этот регулятор - обычное текстовое окно, куда можно вводить только цифры, а после нажатия кнопки "Применить" все блики будут иметь заданный размер.
2. Проект - ничего особенного, вводим имя проекта и все. Бесполезная вещь, так как при сохранении проекта мы все равно можем ввести его имя. Но для разнообразия - пусть будет.
3. Параметры области просмотра - здесь мы можем показать задний фон (типа как наши блики будут на деле смотреться). Кстати, картинка взята из нашего проекта, которому уже года четыре (самый живучий проект инета), точно уже никто не знает. Еще мы можем показать текстуру блика, но она немного глючит, так как не перерисовывается при смене текстуры.
4. Параметры проекта.
4.1. Блик/Текстура - здесь можно выбрать текущий блик для работы именно с ним, а также сразу применить к нему текстуру.
4.2. Установки блика - здесь можно выбрать цвет блика (при помощи диалогового окна выбора цвета) и установить размер текущего блика (только текущего, а не всех, как в пункте Главное)
4.3. Метод создания - не работает, подразумевалось, что это будет мощный инструмент для редактирования расположения бликов.
Чтобы параметры текущего блика вошли в силу, нужно нажать кнопку "Применить установки".
Кстати, если некоторые элементы не удается реализовать (времени, например, нет), а если их убрать, то может пострадать весь интерфейс, то лучше временно выключить их. Можно сослаться на шароварность продукта или просто beta версию. Хотя это просто отговорки.
Ну, вот мы и определили функциональную часть редактора. Осталось только сказать пару слов об области вывода графики. Это такое же окно (диалог), только мы не будем помещать на него никаких компонентов, там у нас будут рисоваться наши жареные блики.
26 марта 2003
Комментарии [3]