Pull to refresh

Comments 7

Тут, скорее, не разобрали, а написали и чуть-чуть описали — какой кусок кода что делает. В коде ни единого комментария. У людей, не знающих ни LÖVE, ни Lua, некоторые куски кода вызовут одно лишь непонимание и скорее всего, приведут к копипасту. Лично я так первое время и делал, когда читал статьи, а потом уже знающие знакомые и более подробные статьи смогли рассказать — почему именно так, а не иначе. Если же статья ориентирована на умеющих работать с данным движком, тогда все слишком просто.
Не лучше ли было бы описать подробнее некоторые элементы и добавить комментариев?

По мне, совершенно нормальная ситуация, что кому-то статья покажется сложной, кому-то простой, а кому-то придётся в самый раз. Мне нравится этот движок, отлично подходит для аркадного гейм-дева — и я пытаюсь участвовать в его развитии.
Совет про разбор отдельных интересных элементов игры вместо поверхностного описания всей игры — отличный, спасибо, как раз о чём я и думал для следующего раза.
Я и сам им пользуюсь уже относительно длительное время, начиная с версии 0.7.2. После перехода движка на LuaJIT вообще пока нет желания куда-либо переходить, ибо производительности хватает на всё, так ещё и официальный порт на Android есть, что вдвойне хорошо.
Удачи вам в разработках и последующих статьях, с интересом почитаю ещё.

Вцелом вроде норм. Есть, конечно, что доделывать, но начало положено.


Из "отзывов, комментариев, подсказок" есть следующее:


1) Нижняя граница для захватчиков проходит как-то неочевидно.
Есть ожидание, что для потери жизни они должны либо столкнуться с игроком, либо
дойти до нижней границы экрана. Сейчас же жизнь теряется, пока они висят довольно высоко.
Лучше либо поменять, либо визуально обозначить этот предел.


2) Думаю, лучше делать какую-нибудь проверку на версию интерпретатора.
Вначале попытался запустить на love 0.9 (дебиановские репы небыстро обновляются).
Не работала стрельба.
Чинится дополнительной проверкой в love.keyreleased: if key == 'space' or key == ' ' then .....
Также в love 0.9 пока пытался понять, как стрелять, нажал на 's'. Все упало с ошибкой:


Error: stats.lua:12: attempt to call field 'getStats' (a nil value)
stack traceback:
    stats.lua:12: in function 'draw_debug'
    stats.lua:58: in function 'draw'
    main.lua:82: in function 'draw'
    [string "boot.lua"]:437: in function <[string "boot.lua"]:399>
    [C]: in function 'xpcall'

В love-0.10.2 и стрельба и статистика вроде работают нормально.


3) В обучалке про арканойд, на которую есть ссылка, столкновения сделаны далеко не идеально.
Проверка столкновений выполняется довольно часто, поэтому все лишние действия в ней — арифметические, создание промежуточных таблиц — лучше свести к минимуму. См. обсуждение.

В проектах, идущих дальше обычных примеров, обычно пишется ещё файл conf.lua с таблицей параметров, где среди всего прочего можно указать версию LOVE, для которой это пишется. Правда, это только выдает предупреждение, мол, ваша версия LOVE неверная и это может повлечь за собой ошибки во время работы.

Можно, конечно, сделать проверку версии на запуске и несколько вариаций поведения, подходящих под разные версии API, но такое решение может быть слишком избыточным, да и я пока ни разу такого не встречал. Обычно либо всё пишется под последнюю версию и время от времени обновляется, либо опять же, указывается требуемая для адекватной работы версия (в документации, описании, или всё том же conf.lua), либо код просто уже никем не поддерживается и приходится переделывать места с ошибками вручную. Благо, что такими являются только места, где идет обращение к устаревшим love.* функциям, но иногда и там бывают свои проблемы, из-за которых приходится переделывать часть логики.
conf.lua — хорошее дело, мерси.
Проверка пары последних версий тоже будет полезно, и вряд ли сильно усложнит работу, если, конечно, разработчики движка полностью его не переделывают от версии к версии.
1) Да, тоже этот момент не нравился, но сперва не придумал, как должно оно быть, чтобы и понятно было и выглядело нормально, а потом привык к тому, что есть и забыл.
2-3) Спасибо за ссылку, почитаю. И за «тест» на обратную совместимость) Надо будет найти пару предыдущих версий движка и на них проверять перед окончанием работ.
Sign up to leave a comment.

Articles