Краткая история создания «клона» slither.io
Главное верить 🙂
Worms Zone – игра про червяков или slither.io на стероидах
Изначально я даже не думал, делать игру. Просто мне захотелось попробовать реализовать плавное движение червя, у которого сочленения движутся не по строго заданной игроком траектории, а ведут себя более естественно. Да, это немного сложнее и требует больше вычислений, зато выглядит такое движение приятнее и интереснее. Первые тесты я сделал на Java-подобном языке в Processing. Через час был готов первый набросок – проект на GitHub.
Понаблюдав за результатом проделанной работы в виде червей поедающих «яблоки» я и решил заняться разработкой полноценной игры.
Вначале в лоб переписал алгоритм движения червя на C++, после чего начал дорабатывать алгоритм.
Самое важное – пройти тест на «закручивание» – когда игрок закручивает червя в кольцо минимально возможного размера. Большинство подобных игр фейлятся на этом тесте, т.к. хвост червя перестает двигаться, а движется только голова и пару сочленений за ней. Выглядит ужасно.
Реализовав алгоритм, проходящий тест на «закручивание», я столкнулся с новой проблемой – у длинного червя много «невидимых» сочленений на экране, перекрытых другими сочленениями. Пришло время доработать алгоритм – хвост не только ползет за головой, но и количество видимых и участвующих в расчетах сочленений уменьшается. А когда червяк ползет прямо, то количество сочленений снова увеличивается до актуального значения.
Осталось сделать мелочи – червяк на ускорении должен терять свою массу и, соответственно, его длина и толщина должны уменьшаться. А при нормальном движении и поедании всяких вкусняшек, червяк должен расти и в длину, и в ширину. Эти мелочи оказались не столь просты в реализации, хотя поначалу выглядят простыми – всегда есть нюанс. А тут их было много 🙂
Развитие игры и геймплея
На игровую арену добавлялись черви-боты и постепенно улучшался их AI. Первые версии AI были мягко говоря отвратительны, сейчас боты стали смышленее, а иногда и наглее.
Проводил эксперименты с интерфейсом. Увы, дизайнер и художник из меня никакой. Так что получилось то, что получилось.
Постепенно добавлялась поддержка различных платформ – iOS, Apple TV, Android, Android TV, Web, Linux, Facebook Instant Games, ОК, ВК и прочие платформы. Поскольку разработка велась под macOS, то это и была первая платформа, на которой работала игра.
Реализовал различные способы управления – мышка, пульт ДУ, геймпад, клавиатура.
Развивался геймплей – появлялись новые поверапы: временный удлинитель червя; радар для отображения чужих червей на карте; x5 множитель, позволяющий быстро вырастить червя и заработать очки.
Над балансом геймплея приходится работать до сих пор. Никак не найду оптимальные параметры для: размера арены и максимального количества червей на ней; скорость роста и скорость потери веса червя; стоимость скинов и кастомизации червячка.
Постепенно игра обрастала различными возможностями. Добавлялись различные текстурированные скины. Для упрощения создания текстурированных скинов был написан простейший плагин для Photoshop. Простейший он потому, что выполнял мало работы и часть действий все равно приходилось выполнять врукопашную.
Немного технических деталей
Все спрайты (интерфейс, элементы скина, эффекты, поверапы) хранятся как отдельные файлы, а на этапе сборки ресурсурсов создаются атласы и описания для них. Делается это все из консоли. Да, я люблю консоль. Упаковщик атласов, конечно, свой.
Написал простенький шейдер, реализующий “круговой индикатор” для отображения оставшегося времени действия поверапа. Этот шейдер я сделал на базе моего старого шейдера, доступного на Shader Toy. Ничего особенного, можно было обойтись и без него.
Игра поддерживает несколько языков – Английский, Русский, Французский, Испанский, Вьетнамский. Добавить новый язык не проблема – нужно лишь заказать у кого-либо перевод. В игре используется TTF-шрифт Noto. Это свободный для использования шрифт от Google, содержащий глифы для множества языков, а атлас с нужными символами создается в рантайме.
Ссылки на игру
- Официальный сайт Worms Zone и игра для браузера
- Worms Zone для Android и Android TV
- Worms Zone для iOS
- Worms Zone для Linux
- Worms Zone для Facebook Instant Games
- Worms Zone для CrazyGames
- Worms Zone для Kongregate
- Червячная зона в Вконтакте
- Червячная зона в Одноклассниках
- Червячная зона в Яндекс.Игры
Для любителей червяка самое то!