Доброго времени суток, пользователи хабрахабра. В ответ на инициативу по разработке игры REFLECT мне захотелось выразить несколько мыслей по поводу происходящего на текущий момент, так как разработчики сами сказали, что ратуют за здоровую критику.
Я узнал о проекте в обед в воскресенье, когда 1-й день разработки уже прошел, и начался 2-й. Посмотрев текущую версию, я сходу не понял, в чем была задумка игры, поэтому пришлось возвращаться на главную и вчитываться, что же все-таки планируется сделать.
Поясню. На тот момент результатом был квадрат, с вращающимся вокруг него прямоугольником, управляемым мышкой, и wasd, перемещающие квадрат (игрока) по территории с фоном.
Заглянув в список разработчиков, я удивился, что собралась такая серьезная команда. Я подумал, что неужели разработка такой игры, судя по текущему результату, — сложное занятие, и пошел посмотреть на исходники в github.
И вот тут хочется перейти к сути моего послания. Это хорошо описано тут (перестаньте писать классы).
В исходниках я увидел огромное количество файлов, папок. Всё разбито на классы, большинство из которых занимало несколько строчек. Для такой ранней степени готовности игры их было уже очень много, из-за этого разбираться с текущей реализацией было проблематично.
На мой взгляд, разработчики увлеклись декомпозицией и создали классы в невероятных количествах. Вообще — это хорошие навыки (в разумных пределах). Но я убежден, что для разработки игры в кратчайшие сроки «just for fun» используемый подход не годится.
Как мне кажется, более правильным и, может быть, более интересным подходом было бы как можно быстрее сделать рабочую демку проекта – примерными набросками. Тогда сразу будет видно, что необходимо будет реализовать, и в чем могут возникнуть проблемы. И только после этого можно сделать некоторый рефакторинг и углубляться в детали.
Чтобы не быть голословным, в тот же вечер, вдохновившись идеей разработчиков, я решил пойти своим путем в разработке. И где-то за 3 часа, отвлекаясь на домашние дела и своих детей, удалось реализовать такую штуку.
Хочу обратить внимание на то, что в некоторых местах есть откровенный копи-паст. И это сделано отчасти специально, так как все это рефакторится за полчаса, но во время разработки я не запаривался за красивости, и процесс для меня был реально «for fun». К тому же, я не заморачивался за фон, не делал главное меню игры и тому подобное.
Искренне сожалею, что не успел доделать уменьшение жизни при попадании снаряда в «тело» и отражение от щита.
В итоге сделаю небольшое резюме — не усложняйте себе жизнь, не плодите сущности в самом начале разработки и как можно скорее доводите проект до состояния минимальной играбельности.
Автор: amiqrious