Приветствую всех, кому было интересно узнать о моем небольшом проекте, которым я занимаюсь в свободное время, о моем долгосрочном проекте под названием «тенгин».
Какова цель этого поста? Ответ прост – ищу единомышленников.
Я верю, что есть еще много людей, которым нравится старое доброе добро.
В этом и вся миссия — написать ради развлечения ради чего-то небольшого, но вполне функционального, платформы для «консольных» игрушек в 8/16-битном стиле.
tengine ДЕМО-игра (веб-версия) управление: клавиши со стрелками, Ctrl. Полная концовка.
Главная особенность, отличающая Тенгине от сотен подобных поделок, — это не совсем стандартная идеология:
- В архитектуре проекта особое внимание уделяется минимизации использования динамической памяти.
Если память выделена, то она выделяется исключительно для инициализации подсистемы.
- Вам нужно использовать динамическую память так, как будто операционной системы не существует, постоянно помня о фрагментации.
Память удаляется строго в порядке, обратном созданию (за этим следит простой механизм контроля удаленных указателей)
- использование сторонних библиотек сведено к минимуму и должно быть оправдано; это часто является потенциальным источником фрагментации памяти.
- игровая сцена — это готовая к использованию память, сгенерированная редактором уровней
- работа с объектами игровой сцены осуществляется исключительно через идентификаторы; невозможно динамически создать объект
- использование фиксированной точки вместо числа с плавающей запятой
- мультиплатформенность
- Официальный язык проекта — C.
Но времена меняются и все пришлось перенести в более популярный мир технологий.
Так появилась ветка для Android, которая впоследствии стала основной.
Версия Win32 играет большую роль в отладке.
По задумке игра написана и отлажена на win32, а затем скомпилирована на других платформах (все это, конечно, условно, весь функционал полностью работает на win32).
С появлением одного очень хорошего энтузиаста проект обзавелся и платформой NIX, за что ему огромное спасибо.
Хотя Nintendo ds больше не поддерживается, я сознательно не стал удалять из проекта код платформы под ключом препроцессора.
Также остались некоторые специфичные для Nintendo архитектурные особенности, такие как поддержка нескольких экранов и слоев логического рендеринга.
Все это описано в скудной, но все же документации.
Сейчас тенгине это:
- готовый мультиплатформенный функционал для android ndk, ios, win32, nix, kolibriOS, Emscripten (также был функционал для nitro-sdk (Nintendo ds), но я решил не продолжать разработку этой ветки из-за нехватки времени, она вполне вероятно, что кому-то сейчас будет интересна нитро очень маленькая)
- браузерная версия js/html на основе Emscripten ( https://github.com/kripken/emscripten/wiki ), хорошая производительность даже на ie11
- использование памяти по принципу распределителя кадров (удаление памяти в строго обратном порядке создания)
- архитектурное ограничение на создание динамических объектов, позволившее отказаться от использования скриптовых языков
- использование openGL es 1.x/2.0, а также самописного блиттера для рендеринга
- использование openAL (openSL es для Android NDK) для звука
- поддержка мультитач, dpad, клавиатуры
- поддержка многопоточности на основе pthread (загрузка потоковой анимации, работа с файлами, звуком)
- функционал для работы с сетью на начальном этапе
- (примитивная) система частиц
- преобразователь графических ресурсов (основной r5g5b5a1 и вспомогательный r8g8b8a8)
- простой интерфейс для работы с игровыми объектами: позициями, свойствами, состояниями
- события (окончание анимации, достижение узла и т. д.)
- поддержка применения базовых аффинных преобразований к кадрам анимации игровых объектов
- возможность попиксельной проверки границ игрового объекта сложной формы
- поддержка тайловой карты
- поддержка полупрозрачности
- поддержка смешивания данных изображения с указанным цветом
- поддержка логики узлов пути (по которым могут перемещаться объекты)
- (частично реализована) система линий столкновения, с помощью которой можно задать границы или места «проходимости» под произвольным углом
- эмулятор для win32/nix, упрощающий разработку и отладку приложений
- основная документация
Достаточно зарегистрировать любой игровой объект в gui-контейнере и указать, какое поведение от него ожидается.
Обо всем остальном позаботится дополнение.
Редактор уровней (me3) — это утилита для создания «уровней» для Tengine, включающая в себя:
- подсистема работы с графическими ресурсами
- подсистема создания сложной покадровой анимации, включая зоны коллизий, пользовательские события, точки крепления (для динамического прикрепления других игровых объектов, например, оружия к руке)
- подсистема создания тайловой фоновой карты
- подсистема триггеров, с помощью которой можно изменять свойства объектов при определенных условиях
- Подсистема путевого узла
- подсистема создания линий столкновения
- подсистема создания логических состояний объектов, привязка их к анимации
- подсистема создания свойств объектов и работы с ними
- менеджер по объектам
- отладка готовой карты, мониторинг работы триггеров и пользовательских событий
- поддержка шрифтов, текстовых полей (текстовых объектов), внутренний текстовый редактор
- поддержка функционала локализации текстов на разные языки
- создание готовых бинарных файлов с данными для tengine, экспорт в xml
Но в папке с образцами есть примеры, а также интерфейс на русском языке, который, на мой взгляд, вполне интуитивно понятен.
К сожалению, документацию написать пока не могу.
Для тех, кому еще интересно, все доступно на https://bitbucket.org/pascualle/tengine В качестве бонуса я давно не занимаюсь спортом.
верлет библиотека описанная в посте habrahabr.ru/post/178135 .
Пока стоит немного особняком, но уже проверен на работоспособность (см.
пример в семплах/пауке) Читайте также небольшой туториал (внимание, в нем нет картинок!) «Создание небольшой игры с помощью tengine» habrahabr.ru/post/180443 Теги: #C++ #tengine #verlet #openal #Opensl es #OpenGL ES #win32 #Android #NDK #iOS #*nix #KolibriOS #emscripten #multiplatform #gamedev #Разработка игр
-
«Компаниям Нужно Больше Менеджеров»
19 Oct, 24 -
В Англии За Шумку Можно Попасть В Тюрьму.
19 Oct, 24 -
Обновление Плагина Mctube
19 Oct, 24