Мегапроекты, мегаобсуждения, огромная мотивация... Ну, конец истории вы уже поняли.
В этом посте посетим могилу Ethel — моей игры, которой было суждено не быть.
Начать надо с понятий. Ethel — это платформер. Естественно, 2D и скроллинговый.
На скрине выше:
- Красные — это враги. При контакте с ними персонаж дохнет.
- Жёлтый прямоугольник — это персонаж.
- Голубенький квадратик — это точка спаун поинта.
- Серенький — это каменья. По ним можно ходить.
А остальное — небо.
Затея сделать игру приняла форму действия 30 мая 2017 года и (моими усилиями) стремительно нарастала фичами.
Из реализованных фич:
- Самые тупейшие враги. Они идут в одну сторону — и в другую при коллизии о стену или своего товарища.
- Передвижение базовое. Можно прыгать и ходить.
- Дебаг-экран, отключаемый по F1.
- Загрузка всех ресурсов из файлов. Карта выше была загружена из файла с данными карты. И спрайты, и тайлы.
- Физика какая-то. Примитивная, конечно. Как-то коллизии умудряется определять и ускорение рассчитывать.
- Главное меню. Куда ж без него?
- 20 FPS на опенкомпе. Вроде бы. Хотя это, скорее, из-за того, что нереализованного дофига.
- 2D и скроллинг.
Для адекватности в скорости использовалась либа doubleBuffering. Все компоненты соединяются посредством либы событий libaevent, которую я тогда достаточно любил, потому что довольно удобная штука она есть.
Но тут параллельно мы поднимали свой сервачок MC, для которого, очевидно, нужен был свой сайт. Сисайт. Иначе несолидно. А так как 2 любительских проекта параллельно одновременно я вести не умею, выжить должен был один из них за счёт второго. И так получилось, что вторым стал ethel.
Уже через 3 недели после начала энтузиазм куда-то иссяк — и 27 июня был запушен коммит, который оказался последним. С тех пор обновлений не было.
Какую мораль я вытащил из этого потонувшего проекта?
- Я не умею делать нормальные архитектуры. Но это я и так знал.
-
То же для физики. Казалось бы, что там сложного-то: радиус-вектор, вектор скорости и вектор ускорения. Но вот я и в них как-то запутался. Там самым запарным было из этих трёх векторов сообразить нормальный интерфейс программный.
- Во-первых, действующих на спрайты сил было несколько. Как минимум, там есть гравитация. В теории могли бы быть всякие пружинки.
- Во-вторых, движение врагов, на самом деле, задаваться должно не ускорением, а простой скоростью. Я там как-то накостылял, и оно даже работало, но удовольствия от этого я не получил.
- И коллизии. Просто так на них прочекать тоже не столь и сложно, но запары все возникали при использовании результата проверки в методах, задающих поведение спрайтов.
- Костыли — это плохо.
Ну, то есть, всё как обычно.
Посмотреть на останки можно здесь. Можно даже попробовать запустить это — но сначала сделайте git checkout HEAD^^ (в мастере там какие-то блохи). А, ещё надо будет откуда-то достать либу буферную. И lua-objects скопировать в /usr/lib/lua-objects/lua_objects.lua.
Ethel — это лишь один из множества руин некогда поражавших воображение своей амбициозностью проектов. В этом элитном клубе мы намереваемся продолжить копаться в исторической пыли и вытаскивать на свет из-под неё и другие павшие проекты.
Поэтому ненастойчиво убеждаем вас подписаться на сей чудесный блог, тыкнув на соответствующую кнопку — ту, что повыше. А можно нажать и на обе. 🍪
- 4
2 комментария
Рекомендуемые комментарии