Разработка боевой системы и ботов
29.08.2024 07:34:34
29.08.2024 07:34:34
Конечно ни о какой архитектуре, автоматических тестах и прочем речи на этом этапе не шло, все делалось максимально быстро, чтобы вообще что-то сделать, пока не иссяк запал. Это, кстати, породило и архитектурные проблемы проекта, над исправлением которых мы работаем и по сей день.
Основной моей ошибкой было писать много логики в базе. Тогда это казалось очевидно правильным решением, ведь чем ближе к базе — тем меньше проблем синхронизации и устаревших данных. Более того, в то время я работал в компании, которая разрабатывала финансовый софт, а там самое главное — надежность и точность, а этого проще всего добиться, работая с данными прямо в хранимых процедурах. Вот только есть большая разница между разработкой игры и софта, где на кону миллионы долларов. Я еще вернусь к этому позже.
В целом разработка почти всего вышеперечисленного не вызвала вообще никаких проблем, за исключением поведения ботов на карте. Конечно я не рассчитывал на то, что сразу будет куча игроков и боев между ними будет достаточно. Нужно было делать ботов, которые будут развлекать игроков на начальных этапах, а боты должны уметь ходить по полю боя, и делать это логично. Раньше я не имел дел с подобными алгоритмами, и никаких готовых библиотек и фреймворков в то время на этот счет не было. Пришлось изучать теорию и реализовывать ее в коде. Тут мой мозг покипел больше всего... Алгоритм А* я тогда вообще не понял, алгоритм Дейкстры (видео) был хотя бы примерно понятен, но из-за отсутствия примеров кода на любом языке для меня и это было крайне сложным в реализации.
Несколько дней кипел мой мозг, но в итоге алгоритм был реализован... в хранимке, ага. Жесть, конечно. Позже я переписал этот же алгоритм на JavaScript и C# и написал статью, в которой поделился кодом на всех трех языках, чтобы другим, таким же как я, не пришлось также страдать в будущем, а также чтобы лишний раз оставить ссылку на игру в надежде на пополнение базы игроков


Gentyx
