Найти в Дзене
Я же программист

Релиз 0.1.25

Оглавление

Переодически я запускаю написанный мной скрипт для того, чтобы собрать новую версию приложения и выложить её на сервер. По-хорошему, новые версии должны выходить раз в 1-2 недели, это, на самом деле, довольно распространенная практика. Я и стараюсь выдерживать ритм разработки. Да, может быть сделано не все что хотелось, да, это немного отрывает меня от разработки, но я так привык делать на работе, так же буду делать и дома. Правда дома я могу сдвигать немного время релиза, когда мне это кажется уместным. Итак, сегодня, очередная порция изменений отправлена на сервер, где все желающие(все те 2 человека, которых я прошу посмотртеь все ли ок) могут посмотреть что получилось. А что у нас получилось?

Статистика

Если раньше чтобы посмотреть статистику, да хотя бы понять, сколько у нас производится продукции и еды, приходилось лезть в меню и получать статистику поверх всей карты

Раз и все перкрыто, кстати тут уже видно новую статистику слоем ниже
Раз и все перкрыто, кстати тут уже видно новую статистику слоем ниже

Теперь она всегда видима, и нужды куда-то лезть нету. Это одна из тех вещей, после добавление которой становится непонятно как можно без этого обходиться. Тут показывается текущее место, чтобы добавить интереса, и количество еды и производства, без значения которых заказ новых юнитов был лотореей: хватит - не хватит. Кстати, когда заканчивается какой-то ресурс - случаиный юнит исчезает.

Статистика всегда видима. Цветами подсвечиваются параметры которые изменились, голубым - что стало лучше, красным - что хуже.
Статистика всегда видима. Цветами подсвечиваются параметры которые изменились, голубым - что стало лучше, красным - что хуже.

Убраны стрелочки

Еще одно важное изменение, влияющее на внешний вид. Теперь вместо стрелочек, подсказывающих движение юнита, стал рисоваться его планируемый путь

А вот так выглядят пути юнитов сейчас. Также тут видна проблема с блокировкой у бота.
А вот так выглядят пути юнитов сейчас. Также тут видна проблема с блокировкой у бота.

Путь выделенного юнита показывается более жирной линией с более жирной точкой. Кстати цвета точки и линии это цвета юнита, об этом ниже.

Лечение

Теперь раненый юнит будет лечиться если находится на своей территории и уровень морали больше 50. Конечно же лечение происходит за счет населения в этой клетке. Это новобранцы включаются в отряд. На юните, который лечится рисуется сердечко. Возможно, иконка еще переедет в другое место. Каждый ход, один человек с территории переходит в юнит, а у юнита, каждый ход растет здоровье. Понятно, что это все до какого-то предела.

Показ территории

После того как боты стали часто сражаться друг с другом, стало интересно, а как они там, кто побеждает и вся ли территория захвачена. Для этих целей и просто чтобы повысить интересность сделать возможность подсветить территорию выбранного игрока

Видно что этот бот, даже несмотря на срезмерные блокировки смог отхапоть большой кусок территории.
Видно что этот бот, даже несмотря на срезмерные блокировки смог отхапоть большой кусок территории.

Соглашусь что видно не очень хорошо, этот момент будет доработан, в конце концов, если показывать площадь, то содержимое карты не очень интересно.

Показ блокировки

Теперь показывается значек блокировку и юнита, который не может двигаться из-за друго дружелюбного юнита. На самом деле эта фича не только для людей, которые играют, но и для ботов, чтобы добавить эту фичу пришлось менять код и, вуаля, у бота есть способ проверить юнит, заблокирован он или нет. Возможно надо еще доработать фичу, потому что блокирвка может быть разные. Например, когда быстрый юнит движется за медленным, перый переодически будет блокироваться, но это не значит, что нужно принимать кардинальные меры!? Нужно знать как долго юнит заблокирован.

Разрешение блокировок

Решена ситуация когда 2 юнита хотят занять одну клетку
Решена ситуация когда 2 юнита хотят занять одну клетку

Вообще, проблема с блокировками является следствием тех правил которые я задал. Главный вопрос такой: Если игрок направил юнит двигаться к заданной клетке, но на пути юнита встречается другой дружественный юнит, должен ли наш юнит остановиться и ждать дальнейших указаний, или же он имеет право обойти препятствие? Да, наверное это должно настраиваться, и настраиваться для каждого юнита отдельно, и возникает второй вопрос, а не слишком сложно ли это будет?

Баг со строительством юнита

Теперь юнит строится не бесконечно, а до 100%, после этого строительство прекращается. А вот поддержка юнита начинается с момента его строительства. Это нужно для того, чтобы заставлять игрока выбирать более лучшее место для строительства, и реже пользоваться тактикой строительства юнита на замену(под живым юнитом). Да, это до сих пор можно делать и юнит появится на месте убитого, но все это время ресурсы будут потребляться.

Боты: второй бот и улучшения

Несколько улучшений у ботов

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

2 - 4 потока на обработку ботов. Теперь боты обрабатываютяс в разных потоках и это делается быстрее. Да, боты должны быть потокобезопасными. не знаю к чему это приведет, но считаются они теперь быстрее.

3 - добавлен второй тип ботов, который должен быть поумнее, по факту не сильно, есть идеи как его усилить, но, учитывая, что я не всегда могу победить ботов, нужно ли что-то с ними делать?

Добавлен Юнит: Берсек

Когда долго ничего не происходит я просто добавляю юнит. Добавить юнит не сложно, гораздо сложнее сделать его сбалансированным.

Что еще делать

  • Очень хотелось решить проблему с блокировкой, но пока она решена не до конца.
  • Показывать погибшие юниты, сейчас на просмотре последнего хода погибшие юниты совсем не показываются и это надо исправлять.
  • нужен лог хода, чтобы знать где и какой юнит погиб. Или нехватает еды и юнит погиб.
  • нужен плеер. Т.е. какая-то возможность повторить/проиграть ход. Мне это нужно для отладки и исправления ошибок. Просто увидительно, как мне удавалось что-то исправлять до этого. Видимо хорошее логирование какое-то программерское чувство ошибок. В любом случае у всех есть предел, и лучше иметь инструмент, который позволит повторить ситуацию.
  • Таблица результатов, что-то, где можно посмотреть на какой позиции находишься ты и другие участники боты. Также их параметры производства населения и... в общем вся статистика. Сейчас для этой цели я использую дипломати, до нормальной реализации которой еще рановато.

Возможно что-то из этого списка я сделаю через пару недель,

Скрипт для релиза

Упомянутый вначале скрипт представляется из себя скрипт на баше, который собирается приложение. Запускается правку ресурсов: картинки уменьшаются до заданных размеров, юниты центрируются, аудио пережимается. Собирается приложение для java машины, собирается android приложение и сервер.

Потом все это копируется на удаленную машину, где запущен игровой сервер.

Здорово? в общем да, но чтобы написать скрипт и все настроить ушло какое-то количествовремени и сил. Стоило ли оно того? Лучше бы был отдельный человек, который бы этим занимался, но что поделать, пока приходится во всем разбираться самому.

Как отображать 100 с лишних игроков

Сначала в голову поселяется идея, потом она растет и из неё рождается какая-то реализация. Иногда реализация бывает плохая, иногда приходится выбросить реализацию с идеей. Но главное, идея должна повариться.

Когда я решил что у меня должно быть много доновременных игроков я не сразу понял к чему эт оприведет. Оказалось, что чтобы отобразить такое количество игроков, нужно нечто большее чем сотня цветов. Сто цветов сложно сделать различимыми. Первая идая была сделать 2 цвета на игрока. В большинстве случае, нужно показывать границу территории, ну и как-то обозначать юнит. Я предположил, что если взять 2 различных цвета, то имея 15 базовых цветов, можно задать примерно 15*14=много игроков. И в принципе это все было хорошо, кроме юнитов, которые ходили без опозновательных знаков, да, их можно было определять по территории откуда они идут, но знаете... пропадало ощущение игры. Это была больше демка чем игра. Однажды выбирая иконки я наткнулся а иконку животного, и в голове поселилась мысль, а не интереснее ли будет каждому игроку присвоить иконку, вместо того чтобы делать им похожие флаги. И, мне кажется, это был тот момент который делит историю на до и после. После этого у мне стало интереснее двигать юниты и исправлять баги. Это очень интересный момент, когда какая-то визуальная состовляющая все меняет.

Не лишним будет посчитать а сколько мы можем отобразить юнитов теперь? 15*14*30 = явно больше тысячи, наверное даже больше пяти. К слову максимальное количество ботов, которое я запускал -1500, да, самая большая карта, да, притормаживало, но работало же. Теперь все ограничиваю, чтобы не тормозило.

Другое

Наверное у многих есть какая-то своя игра, которую они запускают когда они устали и им хочется отвлечься. У меня такая игра шахматы. На самом деле выбор обусловлен тем, что в шахматы можно сыграть быстро минут 5 и готово. Если за эти 5 минут никто тебя не побеспокоит, то это получится отдыхом. Что такое отдых? По сути это времяпрепровождение, в течение которого тебя никто не побеспокоит, ты знаешь как потратить это время и у тебя есть планы. Если все срастается получается отдых, если нет - усталость. Еще одна игра, за которой я люблю проводить время - Project zomboid. Игра про выживальщика в мире зомби. Кругом опасность, выживать сложно, а когда привыкаешь к условиям они начинают меняться, становится холоднее и зомби сбиваются кучи. Так же здесь можно заниматься крафтом, и фермертсовм, к чему я, в принцпе, и прихожу, играя в эту игру. Да, большой забор, или 2 забора. И, на своей земле уже фермерство. На эту игру, конечно, требуется больше времени и внимания, так что играю в неё реже. С нетерпением жду, когда выйдет новая версия игры с поддержкой сети, потому что игра по сети с людьми это... это особый вид удовольствия.

P.s. Уже час ночи, желаю хорошей трудовой недели и до встречи через пару недель ;).