tengine

Nov 01, 2012 02:33

С этого дня решил делиться информацией о своем хобби, тем, чем я занимаюсь в свободное от работы время, о своем долгоиграющем проекте под названием "tengine".

Немного истории, вернее о себе: первую свою игру я написал где-то так в 1991 году, это была простенькая, но все же игра под названием «baraban» для zx-spectrum. С этого момента мне надоело лазить с помощью copy-copy по чужим играм и выискивать места, где можно вставить больше жизней…

Серьезно все началось в 2003 году, когда я окончательно и бесповоротно решил связать свою жизнь с gamedev'ом. Днем я ваял скучные sql запросы, писал корпоративный софт, отчеты и прочее, но вечерами…

Сначала был brew, потом j2me, потом смена работы, потом снова j2me и brew как junior, потом renderware, directx, win32, sony, nitendo, xbox уже как более матерый девелопер…

Вечерами я делал то, что было мне интересно, а не то, за что платили. Так появился сначала tengine + me на j2me, выпущено порядка 5 коммерческих игр. Спустя некоторое время, после паузы, я опять вернулся к своим наработкам, перевел все на с/с++, начал совершенствовать код эдитора (me) и сам tengine.



Сейчас tengine представляет собой:

- эмулятор для win32, упрощающий разработку и отладку приложения

- (почти) готовый кроссплатформенных функционал для nintendo ds (при условии, что есть nitro sdk), android и win32

- использование памяти по принципу frame allocator, делающие невозможными memory leaks, архитектурное ограничение создания динамических объектов, что позволило отказаться от использования скриптовых языков

- два альтернативных взаимозаменяющих рендеринга: openGL es 1.1 и самописный кастомный блиттер

- поддержка тайловой карты бэкграундов с возможностью присвоению группе тайлов неких свойств

- (частично реализованная )система коллижн-линий, с помощью которых можно задавать границы или места «проходимости» под произвольным углом

- поддержка полупрозрачности

- поддержка путевых нод (по которым могут двигаться объекты)

- система эвентов (окончание анимации, достижение ноды и т.д.)

- (примитивная) система партиклов

- поддержка мультитача, dpad, клавиатуры

- поддержка мультипоточности pthread (система jobs’ов -task‘ов, на данном этапе используется только для подгрузки
текстур в стримовой анимации)

- поддержка абстракций tengine «экран» (render screen) и «слой» (layer). «Экран» представляет собой абстракцию физического экрана (например 1 или 2 экрана (bg2, bg3) nintendo ds), а «слой» -- инстанс загруженного в память игрового уровня, причем на один «экран», можно завязать (рендерить) один или несколько «слоев» (например игровой уровень и hud)

- простой интерфейс для работы с игровыми объектами: позиции, свойства, состояния

- собственный формат графических ресурсов, r5g5b5a1 (основной) и r8g8b8a8 (вспомогательный)

- конвертор ресурсов с 256i/bpp24/bpp32 BMP или PNG, оптимизация работы с индексированным цветом в кастомном рендеринге

Эдитор (me3) представляет собою утилиту для создания «уровней» для tengine и включает в себя:

- подсистему работы с графическими ресурсами

- подсистему создания сложной покадровой анимации, включая коллижн-зоны, пользовательские события, точки прикрепления (для динамического прикрепления других игровых объектов, например оружие к руке)

- подсистему создания тайловой карты бэкграунда

- подсистему триггеров, с помощью которых можно менять свойства объектов по определенным условиям

- подсистему путевых нод

- подсистему создания коллижн-линий

- подсистему создания логических состояний объектов, завязывание их на анимацию

- подсистему создания свойств объектов и работы с ними

- менеджер объектов

- превью готовой карты, отслеживание работы триггеров, пользовательских событий

- поддержка шрифтов, текстовых полей (текстовые объекты), внутренний текстовый редактор

- поддержка мультилэнгвиджа

- создание готовых файлов с данными для tengine, экспорт в xml

Не все еще идеально, не все еще работает как я хочу, но я работаю. И получаю удовольствие от этого, потому для меня это хобби. Так что, кому интересно, читайте...

tengine

Previous post Next post
Up