Sqworld - спустя год

Добавлен , опубликован
Доброе время суток всем, а особенно тем кто еще помнит о проекте!
Проект потихоньку развивается и сейчас я расскаже о двух важных событиях. Игра начинает приближатсья к альфа версии, поэтому возникла необходимость структурировать гейм-дизайн документ. В рамках этой задачи и из интереса я сделал диаграмму (UML Component Diagram) структуры кода Sqworld. Она уже немного устарела, но в принципе верно отражает суть.
После этого уже можно было начинать работу над альфа версией, но так как проект для души, то захотелось все-таки прикрутить развернутый боевой режим. Идеи на этот счет были давно. Основная концепция следующая - каждые 1000 юнитов армии отображаются небольшой иконкой и двигаются на поле. Вот так это выглядело год назад, все очень просто.
Чтобы добавить развернутый боевой режим пришлось немного изменить интерфейс. Теперь, когда армия Вашей страны натыкается на другую, автоматического сражения не происходит, а выскакивает что-то вроде popup-а (что это такое можно почитать в других ресурсах проекта), где Вы можете выбрать - хотите ли Вы провести быстрый бой как раньше или же посмотреть симуляцию.
Если выбрать симуляцию, то появляется такое нехитрое поле боя. Слева и справа информация об армиях двух стран. Вообще говоря информация справа должна была быть внизу. И я был уверен, что оно так и есть. Вот только сейчас смотрю и понимаю, что это не так. И теперь неочевидно какая армия к какой стране относится. Но давайте притворимся, что нам все понятно. Особо любопытные могут посчитать количество кружочков (это кстати иконка пехоты) и сопоставить с числами. Получится интересная закономерность о которой написано выше.
При нажатии кнопки начать бой, как ни удивительно, бой начинается. Но давайте пока поговорим о нем алгоритмически. Была поставлена задача придумать велосипед простую, но более-менее функциональную схему. Каждый юнит-пехотинец имеет 4 состояния:
  1. Стоит - ну тут все не очень хитро, он просто стоит
  2. Движется со всеми - тут ребята собираются вместе в стройные ряды и маршируют
  3. Движется один - наш маленький круглый герой чует ближайшего врага и идет тернистыми путями, чтобы надрать ему задницу
  4. Сражается - если поблизости враг, то он вступает с ним в схватку. Пока все не очень зрелищно, но есть одна идейка
В процессе боя юниты переходят из одного состояния в другие и перемещаются по немного замысловатым схемам. Но это не так интересно. Вот примерчик как армия стоит "под углом". Выглядит не очень эпично, но над этим пришлось повозиться.
После чего возникала задача научиться двигать шеренги. Внимательный читатель возразит - да как так же! Посмотрите, год назад, на предыдущей гифке все движется и вроде вполне сносно. Однако там это делалось "в тупую" и под текущие требования не подходило. На самом деле заставить толпу двигаться не сложно, но это не помешало мне облапошиться и получить вот такой забавный косяк.
Чтобы лучше понять что тут вообще такого, посмотрите на следующую гифку. Притворимся богами и уничтожим несколько юнитов во время их передвижения. Это их не смутит и они плавно, как в балете, перестроятся. Пока такого быть не может. Но когда появится артиллерия может быть. А может и нет. Но перестраивать армию все равно нужно.
Проблемы все-таки удалось решить и получилось это. В приницпе это уже почти конец. Две армии сталкиваются и начинается бодрое пехотное рубилово. В какой-то момент они решают пересобраться. Это прикольно смотрится, но на самом деле это проблема. Потому что из-за этого они слипаются. Но в данной версии они и так слипались.
Ну, немного пошаманив, получился уже вот такой результат - юниты храбро кидаются друг на друга, набигают и начинают активно выяснять отношения, вытанцовывая фигуры (на самом деле эта гифка, как и предыдущие, ускорена. В игре все не так быстро). Лично мне это нравится, но может у вас альтернативное мнение.
Вот в принципе и все на данный момент. Нужно будет доделать боевой режим до чего-то играбельного, доделать другие модули и начинать таки пилить альфу. Графика все еще на прототипном уровне. Настоящего художника у проекта пока не появилось. Может он найдется вместе с альфой или придется нанимать. Кстати если есть желание порисовать, может не очень много и долго, а просто побаловаться, то можно написать в личку или по адресу gologames@bk.ru
Также можно написать и самое главное посмотреть больше информации по следующим адресам (в прицнипе в группе и твиттере появилось пара интересных других проектов за год):
В ресурасах проекта
Группе ВКонтакте
В Твиттере
Благодарю за внимание!