nonoengine

For a gamedev.ru contest

Движок "НЕТТОЛЬКОНЕЭТО"

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

Чего НЕ должно быть в этом движке:

  • привязки к одному языку. Я не знаю на чем меня угораздит писать в следующий раз. Поэтому максимально простой сишный API - ни структур и массивов указателей (боль в управляемых языках), ни работы с указателями на выделенную в движке память (боль в гц-языках), по возможности без каллбаков, хотя совсем без них скорее всего не выйдет (боль во всех языках, трамплины и подобные извращения).
  • базового игрового объекта, хранения внутри себя карты и графа сцены. Мне не нужно чтоб он диктовал мне структуру игры, я сделаю ее сам, мне нужно чтоб он избавлял от рутины и позволял реализовать все пожелания
  • общего префикса, просто потому что движок с таким названием, так что префиксом для него выбрана пустая строка.
  • загрузки ресурсов по имени файла. У меня всегда в играх есть папка ресурсов и я всегда использую все что в ней находится. Поэтому я не хочу писать имена файлов из этой папки еще и в коде. Я хочу чтоб все из нее было загружено и я мог этим пользоваться.
  • урезанных функций с ограниченной применимостью, которые при развитии проекта надо выкидывать и заменять на нормальную систему. Например велосипедных коллизий с квадратичной сложностью, которые потом надо выкидывать и заменять на полноценный физдвижок. Не могу сказать что сейчас это выполняется (например сейчас можно рисовать линии, но ни пунктирными ни толстыми их не сделать, т.е. годятся они только для тестовых демок), но буду к этому стремиться.

Что там есть\должно быть:

  • непосредственный режим. Непосредственный режим рулит. Движок должен сам мучаться с кешированием и обеспечением быстродействия, а не перекладывать это на пользователя заставлять его следить за тем что б спрайты создавались и удалялись когда надо. ГУИ и даже звук используют похожую идеологию.
  • достаточная производительность. Не "максимальная" или "бескомпромиссная", просто достаточная для моих целей. Это 2д игра, мне не нужны миллионы спрайтов на Rawsberry Pi, но сотни на слабом компе она должна отображать с приемлемой скоростью. Кеширование, быстрый поиск отличий должны обеспечивать производительность несмотря на непосредственный режим.
  • все полезные штуки для игр. Рисование, ввод, физика, звук, гуи, поиск пути, возможно генерация текстур и карт, частицы, возможно система теней, возможно генератор названий, все что не относится к непосредственно игре. Нет смысла ограничивать сферу чем-то одним. Единственное требование - если подсистема есть, она должна быть достаточно гибкой чтобы использовать ее в разных играх а не заменять на более сложную при малейшем усложнении задачи.

"TZ" Demo uses gui elements by Buch (http://opengameart.org/users/buch)

Repository

nonoengine

Owner
Statistic
  • 1
  • 1
  • 8
  • 0
  • 0
  • 9 months ago
  • June 6, 2018
License

GNU General Public License v3.0 only

Links
Synced at

Mon, 23 Dec 2024 01:34:55 GMT

Languages