Настало время рассказать. чем я занимался на этих выходных.
Я и Артем решили поучаствовать в Game Jam
“I Can't Draw But Want To Make A Game (Again)”#icantdraw
Игру решили делать на ЯП Lua, с использованием фреймворка LÖVE.
Начали с генерации идей для игры. Остановились на платформере с необычным управлением. Сюжетную часть же пока раскрывать не буду, да и нет пока полного представления о сюжете.
Игру решили делать в организации xecut (читается то ли как “хесут”, то ли как “ксекут”, не помню). Исходный код игры, соответсвенно, располагается
тут. Название, как видно в репозитории — The Bears And The Ducks.
Далее расскажу о этапах разработки, которые мы прошли к данному моменту.
1. Задали большинство функций, которые ожидает от нас LÖVE — то есть функции для загрузки игры, обработки ввода, обновления модели и отрисовки. Еще мы хотели чтобы переменная
love
не помечалась IDE как неопределенная, поэтому все функции создавались как замыкания внутри другой функции, в которую передавался
love
. Таким образом
love
помечался как неопределенный только в корневом файле
main.lua
. Впоследствии мы поняли, что можно вместо этого оставить
love
глобальной переменной, но заставить ее соблюдать конвенцию о именовании глобальных переменных. Поэтому мы превратили все замыкания в обычные функции и к
love
в них обращались как к
Love
(глобальные переменные называются с большой буквы). А в
main.lua
мы просто написали
Love = love
.
2. Сделали прямоугольник, следующий за курсором. Мы хотим чтобы мышь была основным управлением для игры. Скорость движения прямоугольника зависит от расстояния между ним и курсором.
3. Добавили камеру, следующую за прямоугольником, использовав модуль
camera
библиотеки
hump.
4. Реализовали отрисовку красивой сетки из точек для удобства отладки, а так же добавили контроль zoom и rotation камеры.
5. Начали подгонять существующий код под ООП. Это было сделано немного некорректно, но работало.
6. Добавили возможность рисовать “толстые” платформы, которые являются не линиями, а занимают целые клетки. Пока что без коллизий. Так же добавлены сами клетки.
7. Добавлена графика, загрузка атласа текстур и определений какая часть атласа является каким спрайтом. Добавлена отрисовка спрайтов в клетках или по произвольным координатам. Персонаж и платформы теперь рисуются спрайтами, а не прямоугольниками.
8. Реализована базовая физика движения (вручную) и физика столкновений (с использованием библиотеки
bump).
9. Добавлены уровни, загрузка уровней из файла и переключение уровней. Добавлен документ с подсказками по Lua,
последняя версия (версия
на момент написания). Улучшен ООП (хотя все еще возможны глупые ошибки и есть потенциал для улучшения).
10. Обновлена отрисовка платформ. Теперь все платформы добавляются в обработчик физики одновременно и целиком, но вот для отрисовки они разбиваются на клетки, и для каждой клетки проверяется, какие клетки соседствующие с ней тоже заняты платформами. С этого момента платформы при отрисовке автоматически визуально объединяются друг с другом (и текстуры содержат все возможные варианты соединения платформ).
Спасибо Артему что согласился со мной этим заниматься, мне очень нравится.
Когда-нибудь потом еще сделаю пост, когда наберется достаточно новых изменений. Вообще, цель привести “это” в играбельное состояние в течение 10 дней (то есть до окончания Джема).
А сейчас, возможно, покидаю немного картинок или видео.
P.S. На самом деле название организации xecut читается как “zee-CUT”.
#dev