Выпуск завершенного учебного игрового движка с примерами, документацией и репозиторием

+126
в блоге Gamedev is Friendship!
Картинка для привлечения внимания (тест движка)



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

Учебный движок предназначен для быстрой и легкой разработки простейших 2D-игр с использованием спрайтов, анимаций, надписей, графических примитивов и звуковых эффектов. Сама игра реализуется как программа на диалекте JavaScript путем создания файлов скриптов, каждый из которых содержит коды трех функций — инициализации игры, рендера игры и обработки состоянии игры. Для создания игры не требуется сборка движка из исходных текстов — всё, что нужно, уже находится в откомпилированном движке.

Предыдущий пост о данном учебном движке и его назначении:
tabun.everypony.ru/blog/gamedev/190959.html
И второй пост с примером более-менее серьезной игры:
tabun.everypony.ru/blog/gamedev/195505.html

Внесенные дополнения в движок к финальной версии:

  • Раздельное масштабирование спрайтов по вертикали и горизонтали
  • Работа с файлами — загрузка и сохранение данных в файловую систему, как в корень проекта, так и в каталог AppData/Local
  • Возможность считывать JSON-файлы произвольной сложности
  • Центровка текстовых меток
  • Работа не только с линиями, но и с прямоугольниками
  • Поддержка нескольких JavaScript-файлов, что позволяет работать с разными сценами в игре
  • Установка событий на интервалы времени
  • Разбиение исходников движка таким образом, что его можно использовать в собственных проектах на C++ Qt
  • Вторая версия исполняемого файла движка без управляющих элементов — для дистрибьюции созданных на движке игр



Движок доступен в виде zip-архива (демо-сцена уже включена в движок)
tereshenkov.ru/pubprogs/gamestudyjs.zip

Руководства разработчика отдельными файлами:
В формате MarkDown:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.md
В формате PDF:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.pdf
В формате HTML:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.html

Также движок, его исходники, равно как и документацию, можно получить на github

github.com/tereshenkovav/GameStudyJS

Как и сам проект, исходники доступны под лицензией CC0 — упрощенно, это означает, что вы можете делать с исходниками и проектом всё, что угодно. Это общественное достояние.

Пару слов в завершении о смысле и цели.

Данный движок — в первую очередь, конечно, для тех, кто хочет что-то сделать в плане игр, но не осилил по каким-то причинам ни низкоуровневые средства вроде C++/OpenGL, ни высокоуровневых монстров вроде Unity или UE. Тут же всё предельно просто — накидать спрайты, наполнить три функции JavaScript, получить результат.
С другой стороны, даже для опытных разработчиков, эта штука не бесполезна — тот же выпуск прототипов на нём идет легко и быстро, проверено лично.
Вот делал на нём прототип для квеста
tabun.everypony.ru/blog/gamedev/196737.html
А используя исходники движка и шаблон проекта на С++, еще и аркаду
tabun.everypony.ru/blog/gamedev/198903.html

То есть, я не хочу сказать, что эта поделка прям революция в разработке игр — но всё-таки, определенную пользу я вижу и для новичков, и для профессионалов.
Используйте на здоровье.

34 комментария

Да, я потихоньку закрываю свои висяки, дело медленное, но нужное :-)
NTFS
+3
— Отчет когда?
Rins
0
«Справедливый вопрос, господин!»©
Надо заняться.
NTFS
+1
KerHarrad
0
Мдя, это так уныло звучит, что даже пробовать не хочется.

Бери пример со скирры, их конструкт насквозь глючное говно на жабе, принципы работы которого даже создатели понять не в состоянии, но при этом расхваливают они свою химеру так, будто это чуть ли не лучший движок в мире, да ещё и требуют за его использование ежегодную абонплату.
vorodor
0
Да лан тебе — неофитам пойдет. Не сразу ж в Анрыл вкатываться, или там утекший киберпунк потрошить. Начнут с малого, а там как зайдет… так что дело пользительное.
KerHarrad
0
Для этого есть конструкт. Как раз, для попробовать совсем новичку самое оно. Удобный интерфейс, понятная даже нубу основа скриптового языка и уже готовые встроенные по умолчанию игровые механики.

Ох, не хотел я раскрывать свой гениальный бизнес план, но ладно.

Внимай NTFS моему гласу ибо то путь к славе и обогащению!!!
Просто берёшь конструкт,
И делаешь то же самое!
Только дешевле и что б работало по человечески.
vorodor
0
Для этого есть конструкт.

Это конструктор игр. А у меня — игровой движок. Разные вещи, разные ниши.
NTFS
0
Ну, как бы игровой движок это по сути и есть «конструктор игр». Чем конструкт принципиально отличается от того же юнити или анрила. Уж в том-то что последние являются игровыми движками надеюсь нет сомнений?
vorodor
0
Движок предоставляет API для программы пользовательского уровня на одном из стандартных языков программирования.
Конструктор игр предоставляет набор блоков для создания игры.

Некоторые вещи сочетают в себе функции движков и конструкторов, это верно.
NTFS Изменён автором
0
Движок предоставляет API для программы пользовательского уровня на одном из стандартных языков программирования.

Да, и в конструкте это джаваскрипт, просто что бы облегчить жизнь людям далёким от программирования всё самое нужное уже завёрнуто в удобный(относительно) и понятный(очень относительно) интерфейс с пояснениями нафига оно собственно нужно.
vorodor
0
людям далёким от программирования

Это ключевая разница. Движок — для программистов. Начинающих, или уже опытных — но для тех, кто в состоянии скомпоновать цикл, ветвление и пару переменных.
NTFS
+1
И чем позвольте узнать компоновка циклов и ветвлений странными англицкими буквами принципиально отличается от точно того же, но понятными словами через удобный интерфейс?
vorodor
0
Всего одно принципиальное отличие — текстовая форма записи алгоритма является неограниченно расширяемой, в то время как визуальное представление рано или поздно выстрелит себе в ногу.
Но я не хочу сказать, что визуальное программирование — есть что-то плохое, оно позволяет делать проекты и это хорошо.
NTFS
+1
Всё на что не хватает встроенных комманд легко и непринуждённо дописывается рученьками на жабе.
vorodor Изменён автором
0
О чем и говорю — что некоторые системы сочетают функции движка и конструктора.
NTFS
0
Всего одно принципиальное отличие — текстовая форма записи алгоритма является неограниченно расширяемой, в то время как визуальное представление рано или поздно выстрелит себе в ногу.

Ну тогда анрил это конструктор, там есть блупринты.
StaSyaN
+2
анрил это конструктор

некоторые системы сочетают функции движка и конструктора.
NTFS
0
Не, такой критерий все равно посос. Я больше придерживаюсь трактовки, когда движок — инструмент общего назначения, а конструктор — позволяет сделать только что-то одно. Поэтому всякие юнити/анрилы/годоты являются движками — в них можно запилить в принципе что угодно. А всякие рпгмейкеры и прочие штуки (коих не так много, на самом-то деле) — конструкторы — за пределами их жанра ты особо ничего и не сможешь выдать.
StaSyaN
0
Поэтому всякие юнити/анрилы/годоты являются движками

Само собой. Движок понятие более высокого уровня. Может включать в себя и конструктор. А может и не включать.
NTFS
0
уныло

Я просто стараюсь быть честным, а то люди загрузят движок, ожидая там второй Unity, а получат то, что получат.
На днях сайт для движка сделаю, там чуть более живее всё изложу.
NTFS
0
Да, но можно это делать как-то пободрее и позитивнее. Ты уж постарайся.
vorodor
0
Выбирая между преуменьшением и преувеличением достоинств программы — я выберу преуменьшение. Это ж не платный проект, ну. Кому зайдет, тому зайдет.
NTFS
0
Речь не о приувеличении или преуменьшении, а о самом духе подачи, его настрое.

А ладно, думаю ты и сам разберёшься.
vorodor Изменён автором
0
«Покупайте наши плюшки!»?
NTFS Изменён автором
0
Скорее что-то типа: «Мой Движок Пронзит Небеса!!!»
vorodor
0
Сложилось впечатление, что это полностью на JavaScript движок. А тут как-то через скрипты, странно.
Что-нибудь на Rust пробовали делать? А то увлекся им в последнее время, очень интересно.
BoneStone
0
На JavaScript пишется игра, а сам движок на C++.
Rust — нет, не изучал. Очень много новых языков, я сторонник концепции, что нужно изучать предметные области, а не языки. 80% задач можно решить на объектном Паскале 90-х годов, а если брать расширенные реализации с генериками, то и 90%.
NTFS
0
Ну так-то 100% задач можно решить на ассемблере =) Вопрос в удобстве и скорости написания, и степени риска отстрелить ноги =) А в паскале/дельфях до сих пор руками free ставить надо, насколько я помню.
KerHarrad
0
Вопрос в удобстве и скорости написания

Всегда есть что-то удобней и быстрее, важно, вовремя остановиться, иначе всю жизнь только и будешь новые удобные и быстрые языки учить вместо работы на них.
руками free ставить

Просто привыкаешь парно к Create писать Free, и не присваивать динамику в Result без крайней нужды. Не так и сложно, а менеджер утечек памяти подскажет, если всё-таки налажал.
NTFS
0
Просто привыкаешь парно к Create писать Free
Если развесистая функция с кучей точек выхода, эксцепшенами и прочим, то… то еще удовольствие, отслеживать. В плюсах я могу определить тип через unique_ptr или scope_exit влепить, и голова вообще не болит — статика или динамика, и каким путем выход будет. Все автоматически освободится что нужно.
KerHarrad
0
Если развесистая функция с кучей точек выхода, эксцепшенами и прочим

try...finally в ObjectPascal есть
NTFS
0
О каких предметных областях идёт речь? Новые языки сами по себе это не предметные области?
Ну и например, новые языки открывают новые взгляды на решение старых проблем, о которых раньше не знал.
BoneStone
0
О каких предметных областях идёт речь? Новые языки сами по себе это не предметные области?

Автоматизация бизнеса. Разработка игр. Парсеры сайтов. Обработка данных. Какие-то задачи, за решение которых заплатят. Потому что за написание кода, к сожалению, еще не заплатили никому ни рубля. Только за решение проблем с помощью этого кода.
Ну и например, новые языки открывают новые взгляды на решение старых проблем, о которых раньше не знал.

Это верно.

Я если что, не сторонник кодирования в машинных кодах. Тот же C#, освоенный десять лет назад, дал мне бездну возможностей по сравнению с классическим ObjectPascal.
NTFS
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать