Привет всем, и добро пожаловать на первый официальный Evades блог!

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

Изменения будут широко распространены, в том числе такие как:

  • Новый геймплей
  • Обновленный внешний вид
  • Новая музыка и звуки
  • Новые механики
  • Новые фишки и возможности

Во-первых, давайте поговорим о том, почему именно нужно производить подобные изменения. Что не так с текущей версией игры и почему? Ну, во-первых, у игры проблемы с производительностью. Особенно при нестабильном соединении. Задержка может как минимум раздражать, а в худшем - испортить игровой процесс.

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

Технологии

технологический стек

Серверная часть Evades работает с использованием нескольких асинхронных серверных программ Python. Сам игровой движок представляет собой кастомный движок, части которого обрабатываются через Rust, для производительности (а именно - обнаружение столкновений).

Серверы

Серверы

Есть два сервера, на которых работают эти программы Python.

Клиент

Клиент

Клиент относительно прост, он использует Canvas и WebSockets для рендеринга самой игры. Обработка информации

Обработка информации

Обработка информации

Обработка информации, учитывая все обстоятельства, проста, и в этом основная проблема игры.

Клиент отправляет входные данные на сервер, а сервер отправляет клиенту все игровое состояние. Типичных функций, необходимых для комфортного использования, здесь нет:

  • Нет предсказания на стороне клиента
  • Нет согласования серверов
  • Нет интерполяции данных

Все эти функции, конечно, имеют некоторые компромиссы, но без них неизбежна задержка.

Кроме того, это делает игру невозможной для одиночной или автономной игры.

Так в чем же проблема?

«Stovoy», спросите вы, «почему у нас нет этих функций?»

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

Чтобы сделать его способным к такого рода прогнозам, клиент должен иметь возможность моделировать игру (безошибочно!) самостоятельно. Однако это сложно, так как игровая логика написана на Python, а клиент - на Javascript.

На протяжении многих лет я баловался с несколькими возможными решениями, такими как использование Webassembly в качестве промежуточного звена или переписывание сервера на Javascript/Typescript и т. д.

У меня также было желание сделать Evades кроссплатформенным, на iOS, Android, ПК и т. д., и это еще больше усложняет ситуацию.

Создание игрового движка — очень большая задача. Набор функций для Evades широк, ну а для поддержки расширенного художественного стиля игровой движок должен быть достаточно сложным.

Использование Unity

Последние несколько месяцев я экспериментировал с использованием в качестве клиента Unity и C#, а не Javascript. Unity можно экспортировать на абсолютно любую платформу (включая встроенную в браузер через WebGL). Он так же обладает достаточной продвинутостью, необходимой для игрового движка такого типа.

Однако, поскольку это многопользовательская игра, Evades не сможет полностью полагаться на Unity для логики моделирования. Запуск Unity непосредственно на серверах невозможен, но Evades может запускать C# на сервере для симуляции игр. Логика сервера неигровой симуляции может быть написана на Go или, возможно, на C#.

Это позволило бы Evades иметь все сетевые функции, которые нам нужны, но переход от текущей архитектуры к этому решению Unity - это большой и тяжелый шаг вперед.

Первые шаги

Во-первых, необходимо тщательно изучить Unity и портировать весь код Evades на Unity.

Этим я сейчас и занимаюсь. Я работаю над полноценной одиночной игрой Evades, чтобы продемонстрировать, поэкспериментировать и в полной мере освоить Unity.

Этот проект уже запущен, и я буду регулярно обновлять его и показывать в будущих блогах!

Мои текущие оценки для завершения этой однопользовательской игры, это 3-4 месяца.

Когда все будет готово, игра будет размещена в Steam. Любые доходы от одиночной игры пойдут на расширение команды Evades и найм опытных разработчиков, которые помогут мне с дальнейшей разработкой проекта!

Как только это будет сделано, следующим шагом будет обновление существующего многопользовательского режима Evades до новой системы. Это можно делать параллельно с выпуском нового контента на основе Unity.

Оставайтесь с нами, потому что в следующих постах я более подробно расскажу о новом отдельном проекте, созданном на основе Evades!

Sneak Peek

-Stovoy