Работа дураков любит. Это я про себя конечно.
Сколько времени потрачено на написание совершенно бесполезного кода! Ну, не то, чтобы совсем бесполезного, скорее - невостребованного на данный момент.
Итак, главное противоречие было разрешено.
Гоночки. Изначально у меня в голове был некоторый гибрид из Micro Machines и какого-то очень навороченного определителя столкновений. Дороги должны были быть очень извилистыми, а любое столкновение должно было влиять на игрока снижением скорости (или остановкой). В качестве управления было решено использовать либо курсор мышки, либо движением пальца по экрану (для упрощения совместимости).
Проблемы показались сразу же. Во-первых, движение машины в разных направлениях приводило к трудностями с управлением, т.к. условные жесты должны были либо подстраиваться под новое положение машинки, что сбивало бы с толку, либо оставаться неизменными, что совсем не улучшало восприятие. От этого решено было отказаться.
Вторым подходом было решение, когда вращается и движется карта, а машинка стоит на месте. Хотя это решение было лучше первого, но не было достаточно хорошим. Это было понятно изначально - спасибо Contra 3: The Alien Wars. Не нравится мне такое.
Самым удачным вариантом гоночек было что-то вроде гонок с видом сверху-сзади, когда машина движется внутри некоторого коридора, может выбирать ту или иную дорогу, немного вилять по существующему пути, но в целом, всегда смотрит в носом в сторону финиша.
Короче говоря, было принято ряд решений, которые позволят сделать игру более привлекательной:
- Управление, как и планировалось, жестами; разгон до максимума автоматом, тормоз - принудительно.
- Поскольку у нас двумерный битмап, то вид, всё же, сверху, однако, машинка двигается только в горизонтальной плоскости.
- Также двигается вся карта целиком, т.е. не машинка едет, а карта.
- Система столкновений сильно упрощается - просто контакт 2 четырёхугольников: если пересекаются, значит есть контакт и машинку откидывает на границу пересечения (либо накладывается какой-то эффект).
Фух, наконец-то понятно, что делать.
Вот казалось бы, сделать простенькую игру - такое простое дело. Но как доходит до дела - сразу выясняется множество нюансов, которые, как обычно, совершенно упускаются из вида. И, вроде, решение какое-то получается, однако, всё равно приемлемый результат всё как-то не складывается. Что сильно помогает - это попытка предельно упростить все механики. И это срабатывает. Чем проще, тем лучше. Впрочем, не стоит забывать, что сложно сделать просто.
Также, хочется немного отвлечься и сказать пару слов про инструментарий. Фактически, игроделы могут пользоваться уже готовыми редакорами игровых миров. Давеча попалась мне брошюрка, с описанием создания игры (от начала и до конца) при помощи Construct 3. Надо сказать, что выглядит вполне впечатляюще. Но это не мой путь. Так что продолжу набивать шишки.