Dreemchest Engine

Привет!

Не сочтите мой пост на главной за откровенную рекламу, просто хочу рассказать вам о том, на что я во время учебы в университете потратил уйму времени (и продолжаю тратить сейчас, но не так активно… надеюсь, это временно:))
Кому-то нравится делать игры на флеше, кому-то кодить сайты на 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

Комментарии (45)

0
Держи плюс.
Слежу за твоим движком, и все хочу что-то похожее на игру попробовать сделать, но руки пока не доходят.
0
Звучит круто, мультиплатформенность сейчас очень и очень кстати.
Очень интересно попробовать, но надо сначала разобраться с текущими проектами.
0
Плюс за долгострой.

PS:
Chain reaction пол flash вызывает ошибку после первого клика.
В коммерческой версии лучше объединить графику и физику в один «обект» в редакторе и отображать с наложением во время редактирования. (Для упрощения создания физики)
+1
Слушай, ты очень крут! Кто так не считает — пусть удалится с сайта )
0
физика — box2d?
0
да, box2d
+5
Дорогой камрад, да ты же потрясающ.
0
Упаковка под iOs происходит из-под винды?
Как ты это сделал, демон? Больше технических подробностей!
0
Из-под винды пока что нельзя экспортировать под iOS, только под маком :(
0
ух ты, заинтересовал! Ковыряю
0
который на данный момент компилируется под 5 платформ — Windows, MacOS, iOS, Android и Flash Player 10



где? :)
0
Сейчас под OS X/iOS только из-под мака можно экспортить
0
а Андроид? Я так обрадовался, хотел уже запилить жене чтонить простенькое)
+1
Андроид есть в 75 версии, которую я щас пилю =) На днях залью апдейт и все будет :)
0
жду с нетерпением!
+3
AS3 у меня пока не поддерживается

Вот это очень и очень расстроило… Всё-таки AS3 в 2006-м году уже вышел, и я (как и многие) считаю, что писать в 2012-м на AS2 — не камильфо.
+1
Да, есть такое, в дальних планах стоит реализация AVM2, есть даже наработки, но оно очень сырое. Ну и ты ж ещё учти, что это только для интерфейса используется, соответственно код достаточно простой. Вот например класс главного меню из игры match-3 — everfall/paste
Есть конечно ряд неудобств, но для UI за глаза хватает :)
0
задумка отличная. по реализации конечно много еще предстоит и есть шероховатости.
на форуме зарегался и кое-чего запостил.

сообщи тут когда версия с поддержкой Android появится, плиз. будет интересно потестить и сравнить с NME и AIR, которые для меня пока основные решения при выборе технологии для кросс-платформенных дел.
0
задумка отличная. по реализации конечно много еще предстоит и есть шероховатости.
на форуме зарегался и кое-чего запостил.
Ответил на твои вопросы на форуме :)

сообщи тут когда версия с поддержкой Android появится, плиз. будет интересно потестить и сравнить с NME и AIR, которые для меня пока основные решения при выборе технологии для кросс-платформенных дел.
Ок :) Думаю, выложу ближе к концу недели.
Насчет сравнения, то я думаю на синтетических тестах типа «1000 думающих зомби», мой двиг сейчас проиграет, просто потому что у них код скорее всего компилится сразу в натив, а у меня натив(ядро) + виртуальная машина(скрипт). Хотя кто его знает :)
0
Scaleform… Долго ищу для движка Cryengine3… Можешь выслать библиотеки на мыло?
0
Я не использую Scaleform, у меня GameSWF переделанный
+1
Чувак! Ты невероятно крут! Желаю тебе закончить свой движок и занять с ним достойное место среди других движков! Кстати, попробуй найти инвестора? Уверен это вполне реально, ведь уже много сделано. Удачи.
+2
Кому может понадобиться этот движок? Я серьезно. Есть юнити, мармелад, корона. Этот чем будет лучше?
0
Странный вопрос.
+3
Странный чем?
А вот позиция — «тут вот один парень сделал движок мультиплатформенный. Бесплатный. Без комьюнити и проектов выпущенных. Дайка я его буду использовать его для своих проектов. Наверняка в нем минимум багов и отличный саппорт. Есть и другие, более развитые мультиплатформенный движки, но я их брать не буду… уж не знаю почему». Это не странная позиция?
+5
Баги есть везде, это раз. Юнити/мармелад тоже не из воздуха появились, это два. Да и зачем нужен юнити/мармелад, если появились UDK/CDK?
Ну а ещё я никого не заставляю использовать этот движок, я же сказал, что писал его долгое время ради интереса, а сейчас решил — чо добру пропадать :)
0
Да я-то что. Работа проделана безусловно большая. И выглядит редактор приятно.

Просто непонятно, кто будет на этом движке работать.
+3
Люди будут работать.
+2
Все вышеперечисленные движки начинались с малого.
С такой логике вы бы еще сидели в пещере и ели сырое мясо
0
*логикой.

И в любом случае у автора будет полезный опыт.
0
Кому может понадобиться этот движок?
У меня знакомый чувак из Израиля придумал сервис для изучения английского языка. Казалось бы, нафига он нужен, их же дофига. Он грамотно составил документацию, все просчитал, продумал и расписал, парню 22 года. Он пошел к инвесторам с предложением и нашел деньги. Проект назывался English World и походу все дело уже загнулось, причин не знаю, но факт в том, что он нашел инвестора на проект существовавший только на бумаге, собрал команду и 2 года разрабатывал этот сервис. Я сам рисовал некоторые иллюстрации для этого сервиса, инвестиции на разработку выделялись исправно. Поэтому я тоже серьезен говоря что инвестора найти можно, тем более уже большая работа проделана и проект уже далеко не на бумаге.
+3
Я правильно понимаю — был проект у которого много аналогов? Но парня это не смутило, он нашел деньги и начал его делать.

Через два года нету ни денег ни проекта. Это точно удачный пример?
0
Ну может не очень удачный в конечном итоге, но кто знал тогда выстрелит или нет, не всегда наши надежды и труды оправдывают ожидания. Это нормальная практика, всяких стартапов огромное количество и только единицы выстреливают. Тем не менее 2 года он был обеспечен работой, ему за неё хорошо платили и он занимался интересным ему делом. Не знаю чем он щас занимается, давно не общался…
0
Инвесторы не дураки, и если вложились, значит видели перспективу.
А насчет успешности уже написали, что выстреливают немногие, угадать невозможно.
+2
Мармелад, по моим впечатлениям, это вроде и не движок, а по сути framework, даже я бы сказал, абстракция над железом. Да и писать игры на C++, это мазохизм на ценителя. :)

Хороших мультиплатформенных движков, вообще говоря очень мало, и у всех разная концепция, разная область применимости и даже идеология в некотором смысле.

Хорошо, что есть разные и хорошо, что кто-то делает новые, доводя работу до конца. Бета для большинства таких проектов недостижимый идеал :)
+6
Залил новую 77 версию, с экспортом под андроид — Кочадь! :)
  • _dm_
  • _dm_
0
спасибо, тестю!
+5
и тещё тоже!
0
что-то не получилось ничего экспортировать на Андроид, пишет
cArchive::OpenFile: cZipFile::Open: failed to locate file 'assets/res/drawable-xhdpi/icon.png'
cDiskFileSystem::OpenFile: file 'projects/Game Objects/temp/android/src/com/dreemchest/Game_Objects/Game_Objects.java' not found
cDiskFileSystem::OpenFile: file 'projects/Game Objects/temp/android/src/com/dreemchest/Game_Objects/Game_Objects.java' not found
cDiskFileSystem::OpenFile: file 'projects/Game Objects/temp/android/src/com/dreemchest/Game_Objects/RenderingFrame.java' not found
cDiskFileSystem::OpenFile: file 'projects/Game Objects/temp/android/src/com/dreemchest/Game_Objects/RenderingView.java' not found
background.png packed to atlas 0
box.png packed to atlas 0
Caching asset atlas1…

Сегодня уже засыпаю, может что и напорол, но пробовал 3 раза разные проекты стандартные. Если это моя кривизна, то подскажи что делать
0
Перед заливкой лично проверил все проекты на своем Galaxy Tab =) Надо подумать.
Пишет ли оно выше какие-то ошибки? Какая у тебя ОС? Какой абсолютный путь к редактору и есть ли в нем пробелы кириллица? Что лежит в папке проекта temp/android?
+1
сейчас на форуме твоём тему оформлю
+5
Про твое творение сам Феронато написал :) Респект :)
www.emanueleferonato.com/2012/08/30/create-cross-platform-application-and-games-with-dreemchest/
0
дада, поздравляю
0
Пасиба 8)
0
Присоединяюсь, успехов!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.