
Dreemchest Engine
Привет!
Не сочтите мой пост на главной за откровенную рекламу, просто хочу рассказать вам о том, на что я во время учебы в университете потратил уйму времени (и продолжаю тратить сейчас, но не так активно… надеюсь, это временно:))
Кому-то нравится делать игры на флеше, кому-то кодить сайты на PHP, ну а я — любитель монументального строительства :)))
Итак, разговор пойдет о движке, который я написал. Я постараюсь вкратце рассказать о том, что это такое, как он устроен, что умеет и главное, нафига оно все надо :)
Ядро занимается обновлением и рендерингом сцены (рендерит по всем православным канонам: текстуры в атласах, спрайты в батчах и т.д), расчетом физики, пользовательским интерфейсом, локализацией и т.д.
Редактор используется для работы над проектом и подготовки данных для ядра. В нем происходит создание уровней и сцен, редактирование физики, скриптов и т.д. Выглядит редактор примерно вот так (скриншот достаточно старый, но это не суть важно)

2. Такая модная нынче штука, как WYSIWYG-редактор — собираем в нем меню и уровни, настраиваем графику, пишем код, жмем кнопку Play и смотрим что получилось, если что-то не нравится — давим Stop, правим, и опять на Play. Редактор использует кеш, в котором хранит скомпиленные ресурсы, поэтому запуск происходит достаточно быстро, что очень сильно сокращает время разработки.
3. Локализации. Все чаще сейчас встречаются игры с поддержкой нескольких языков, без нормальной поддержки локализаций в движке, разработка игры с поддержкой 9 языков (да-да, такое тоже бывает, сам видел:)) может превратится в адъ. Мой движок использует электронные таблицы .ods для хранения текстов, с ними легко работать и удобно отдавать не перевод. Вот, например, абстрактная таблица с текстом для 3 языков.

4. Пользовательский интерфейс на базе Flash. На проработку UI может уйти куча времени, интерфейс хочется иметь красивый редактируемый и с анимациями, а расставлять кнопки из кода неудобно и очень плохо, поэтому нужен какой-то инструмент. И тут на помощь приходит Flash IDE и библиотека аля Scaleform:) Flash IDE позволяет за несколько часов из готовых картинок собрать интерфейс, написать часть логики на ActionScript 2 (AS3 у меня пока не поддерживается) и закинуть в движок.
Желающие могут скачать демку с рендером векторной графики в моем движке отсюда: скачать
5. Потоковая загрузка ресурсов и DLC. Это, наверное, самая молодая фишка из всех. Находится на стадии прототипа, но скоро будет внедрена в ядро. Собственно, тут особо расписывать нечего: потоковая загрузка нужна для экранов загрузки, ну а DLC — это загружаемый контент.
6. Работа в нескольких разрешениях. Для работы приложения на устройствах с различным разрешением, нужно либо параллельно вести несколько проектов (что очень плохо), либо извращаться с выбором нужных ресурсов в коде (куча проверок, префиксы/суффиксы аля @x2 на андроидах/ифонах), либо иметь возможность как-то настроить все это на кнопках, чтобы оно само… или почти само выбирало нужную графику :) Мой движок поддерживает это и позволяет настроить поведение изображений и Flash интерфейсов в различных разрешениях: где-то они будут подменяться на другие, где-то масштабироваться, а где-то использоваться как есть.
7. Простота использования. Движок специально заточен под 2д игры, поэтому, делать на нем пазлы/матч-3/хидден обжекты/и прочее 2д получается невероятно легко. Убедился сам, пока портировал матч-3 :) На данном этапе развития доступно лишь Lua API. Я знаю, что кому-то это не понравится, уже слышу возгласы «Гавно, а не язык!», «Дебажить не возможно!», «Синтаксис — калл!!111одинодин», я и сам предпочитаю писать на С++ в Visual Studio, но Lua очень люблю и считаю, что для написания игровой логики он один из лучших. Ну а насчет сложности дебага — попробуйте подебажить C++ в XCode :)
8. И все остальное :) Такое как анимированные изображения, обычное и потоковое проигрывание звуков, физика, автоматическая упаковка текстур в атласы, etc
Может я очень сильно заблуждаюсь, но мне кажется, что мой тул имеет ряд преимуществ перед другими подобными решениями и имеет право на жизнь :)
-------------------------------------------------------------------------
Движок, как я уже писал, находится на стадии бета-версии, но мне хотелось бы обкатать его на реальных проектах, поэтому если кому-то понравился — берите используйте как хотите :) Кроме того, готов либо поспособствовать портированию вашей флеш игры на iOS/Android, либо сам сделать все с нуля :)
Так же интересен ваши отзывы и мысли в комментариях :)
---------------------------------------------------------------------------
Всякие разные ссылки
Для скачивания доступны сборки движка (редактора с экспортерами) под Win/Mac:
Windows v0.79 (32.9MB)
MacOS v0.71 (33MB)
Тут лежит документация на русском
Всех желающих приглашаю к себе на пока ещё пустеющий форум :)
Мой топик на геймдеве :)
Спасибо за внимание! :)
Не сочтите мой пост на главной за откровенную рекламу, просто хочу рассказать вам о том, на что я во время учебы в университете потратил уйму времени (и продолжаю тратить сейчас, но не так активно… надеюсь, это временно:))
Кому-то нравится делать игры на флеше, кому-то кодить сайты на PHP, ну а я — любитель монументального строительства :)))
Итак, разговор пойдет о движке, который я написал. Я постараюсь вкратце рассказать о том, что это такое, как он устроен, что умеет и главное, нафига оно все надо :)
Что это и как оно работает
Dreemchest — кросс-платформенный 2д движок, написаный на языке C++, который на данный момент компилируется под 5 платформ — Windows, MacOS, iOS, Android и Flash Player 10 и состоит из ядра(~80K строк кода) и редактора (~20K строк).Ядро занимается обновлением и рендерингом сцены (рендерит по всем православным канонам: текстуры в атласах, спрайты в батчах и т.д), расчетом физики, пользовательским интерфейсом, локализацией и т.д.
Редактор используется для работы над проектом и подготовки данных для ядра. В нем происходит создание уровней и сцен, редактирование физики, скриптов и т.д. Выглядит редактор примерно вот так (скриншот достаточно старый, но это не суть важно)

Основные фишки движка
1. Кросс-платорменность. Хоть движок и находится в фазе бета-версии, примеры, которые идут вместе с движком, экспортируются под все 5 платформ, кроме того в фоновом режиме (не по моей вине) идет портирование одной match-3 игры на iOS/Android, которая уже экспортируется и вменяемо работает на iOS (iPhone 3gs/iPhone 4/iPad 1,2,3), а также на моем Galaxy Tab 10.1 под управлением Android.2. Такая модная нынче штука, как WYSIWYG-редактор — собираем в нем меню и уровни, настраиваем графику, пишем код, жмем кнопку Play и смотрим что получилось, если что-то не нравится — давим Stop, правим, и опять на Play. Редактор использует кеш, в котором хранит скомпиленные ресурсы, поэтому запуск происходит достаточно быстро, что очень сильно сокращает время разработки.
3. Локализации. Все чаще сейчас встречаются игры с поддержкой нескольких языков, без нормальной поддержки локализаций в движке, разработка игры с поддержкой 9 языков (да-да, такое тоже бывает, сам видел:)) может превратится в адъ. Мой движок использует электронные таблицы .ods для хранения текстов, с ними легко работать и удобно отдавать не перевод. Вот, например, абстрактная таблица с текстом для 3 языков.

4. Пользовательский интерфейс на базе Flash. На проработку UI может уйти куча времени, интерфейс хочется иметь красивый редактируемый и с анимациями, а расставлять кнопки из кода неудобно и очень плохо, поэтому нужен какой-то инструмент. И тут на помощь приходит Flash IDE и библиотека аля Scaleform:) Flash IDE позволяет за несколько часов из готовых картинок собрать интерфейс, написать часть логики на ActionScript 2 (AS3 у меня пока не поддерживается) и закинуть в движок.
Желающие могут скачать демку с рендером векторной графики в моем движке отсюда: скачать
5. Потоковая загрузка ресурсов и DLC. Это, наверное, самая молодая фишка из всех. Находится на стадии прототипа, но скоро будет внедрена в ядро. Собственно, тут особо расписывать нечего: потоковая загрузка нужна для экранов загрузки, ну а DLC — это загружаемый контент.
6. Работа в нескольких разрешениях. Для работы приложения на устройствах с различным разрешением, нужно либо параллельно вести несколько проектов (что очень плохо), либо извращаться с выбором нужных ресурсов в коде (куча проверок, префиксы/суффиксы аля @x2 на андроидах/ифонах), либо иметь возможность как-то настроить все это на кнопках, чтобы оно само… или почти само выбирало нужную графику :) Мой движок поддерживает это и позволяет настроить поведение изображений и Flash интерфейсов в различных разрешениях: где-то они будут подменяться на другие, где-то масштабироваться, а где-то использоваться как есть.
7. Простота использования. Движок специально заточен под 2д игры, поэтому, делать на нем пазлы/матч-3/хидден обжекты/и прочее 2д получается невероятно легко. Убедился сам, пока портировал матч-3 :) На данном этапе развития доступно лишь Lua API. Я знаю, что кому-то это не понравится, уже слышу возгласы «Гавно, а не язык!», «Дебажить не возможно!», «Синтаксис — калл!!111одинодин», я и сам предпочитаю писать на С++ в Visual Studio, но Lua очень люблю и считаю, что для написания игровой логики он один из лучших. Ну а насчет сложности дебага — попробуйте подебажить C++ в XCode :)
8. И все остальное :) Такое как анимированные изображения, обычное и потоковое проигрывание звуков, физика, автоматическая упаковка текстур в атласы, etc
Нафига это все?
Первая строка кода в движке появилась ещё в 2006 году, когда я ещё учился в универе и не ходил на пары, у меня было оочень много свободного времени и писал я ради удовольствия :) Теперь времени стало намного меньше, но я решил довести начатое до ума. Сейчас достаточно много различных решений подобного рода, но UDK/CDK просто огромные, Unity 3d заточен под 3д, и когда я года полтора назад захотел на нем сделать кое-что двумерное и с физикой, мне стало грустно :( в Corona SDK только сейчас планируют добавить какой-то редактор, а без него на мой взгляд слишком уныло.Может я очень сильно заблуждаюсь, но мне кажется, что мой тул имеет ряд преимуществ перед другими подобными решениями и имеет право на жизнь :)
-------------------------------------------------------------------------
Движок, как я уже писал, находится на стадии бета-версии, но мне хотелось бы обкатать его на реальных проектах, поэтому если кому-то понравился — берите используйте как хотите :) Кроме того, готов либо поспособствовать портированию вашей флеш игры на iOS/Android, либо сам сделать все с нуля :)
Так же интересен ваши отзывы и мысли в комментариях :)
---------------------------------------------------------------------------
Всякие разные ссылки
Для скачивания доступны сборки движка (редактора с экспортерами) под Win/Mac:
Windows v0.79 (32.9MB)
MacOS v0.71 (33MB)
Тут лежит документация на русском
Всех желающих приглашаю к себе на пока ещё пустеющий форум :)
Мой топик на геймдеве :)
Спасибо за внимание! :)
- +42
- _dm_
Комментарии (45)
Слежу за твоим движком, и все хочу что-то похожее на игру попробовать сделать, но руки пока не доходят.
Очень интересно попробовать, но надо сначала разобраться с текущими проектами.
PS:
Chain reaction пол flash вызывает ошибку после первого клика.
В коммерческой версии лучше объединить графику и физику в один «обект» в редакторе и отображать с наложением во время редактирования. (Для упрощения создания физики)
Как ты это сделал, демон? Больше технических подробностей!
где? :)
Вот это очень и очень расстроило… Всё-таки AS3 в 2006-м году уже вышел, и я (как и многие) считаю, что писать в 2012-м на AS2 — не камильфо.
Есть конечно ряд неудобств, но для UI за глаза хватает :)
на форуме зарегался и кое-чего запостил.
сообщи тут когда версия с поддержкой Android появится, плиз. будет интересно потестить и сравнить с NME и AIR, которые для меня пока основные решения при выборе технологии для кросс-платформенных дел.
Ок :) Думаю, выложу ближе к концу недели.
Насчет сравнения, то я думаю на синтетических тестах типа «1000 думающих зомби», мой двиг сейчас проиграет, просто потому что у них код скорее всего компилится сразу в натив, а у меня натив(ядро) + виртуальная машина(скрипт). Хотя кто его знает :)
А вот позиция — «тут вот один парень сделал движок мультиплатформенный. Бесплатный. Без комьюнити и проектов выпущенных. Дайка я его буду использовать его для своих проектов. Наверняка в нем минимум багов и отличный саппорт. Есть и другие, более развитые мультиплатформенный движки, но я их брать не буду… уж не знаю почему». Это не странная позиция?
Ну а ещё я никого не заставляю использовать этот движок, я же сказал, что писал его долгое время ради интереса, а сейчас решил — чо добру пропадать :)
Просто непонятно, кто будет на этом движке работать.
С такой логике вы бы еще сидели в пещере и ели сырое мясо
И в любом случае у автора будет полезный опыт.
Через два года нету ни денег ни проекта. Это точно удачный пример?
А насчет успешности уже написали, что выстреливают немногие, угадать невозможно.
Хороших мультиплатформенных движков, вообще говоря очень мало, и у всех разная концепция, разная область применимости и даже идеология в некотором смысле.
Хорошо, что есть разные и хорошо, что кто-то делает новые, доводя работу до конца. Бета для большинства таких проектов недостижимый идеал :)
Сегодня уже засыпаю, может что и напорол, но пробовал 3 раза разные проекты стандартные. Если это моя кривизна, то подскажи что делать
Пишет ли оно выше какие-то ошибки? Какая у тебя ОС? Какой абсолютный путь к редактору и есть ли в нем пробелы кириллица? Что лежит в папке проекта temp/android?
www.emanueleferonato.com/2012/08/30/create-cross-platform-application-and-games-with-dreemchest/