Двое в одной комнате
MushRog стал онлайн. Один человек создаёт комнату через меню, до троих заходят по IP, и все сражаются с одной и той же Salamandra. Когда кто-то делает Sobrecarga, остальные видят взрыв и его название в углу экрана.
Зачем
Первая фаза нужна, чтобы ответить на один вопрос: выдержит ли боевая симуляция, которую мы сделали офлайн, превращение в серверную авторитетную модель без изменений? Выдержала. Код, который решает урон, реакцию, смену и уклонение, ровно тот же, изменилось только то, кто его вызывает.
Как это работает
Сервер гоняет симуляцию на 20 tick в секунду. Игроки шлют только намерение (идти туда, использовать скилл 2, сменить), а сервер проверяет дальность, перезарядку и ману и возвращает состояние комнаты и события этого tick. Клиент онлайн ничего не симулирует: хранит зеркало состояния и рисует, интерполируя позиции между tick, чтобы картинка не дёргалась.
Можно хостить и играть в одном процессе или поднять сервер без экрана, чтобы другие заходили. В меню три варианта: один, хостить, зайти.
Здоровье босса растёт по мере прихода людей: в 1,7 раза на двоих, в 2,4 на троих, в 3 на четверых. Комната сама перезапускается через несколько секунд после победы или поражения.
Для теста мы посадили на сервер двух ботов без экрана: они ходят, пускают Faísca и проверяют, что один видит другого. Этот тест запускается вместе с остальными при каждом изменении.
Пока нет логина, создания персонажа и города. Сейчас каждый заходит со стандартной командой Мага и Воина.
Следующий шаг
Логин и создание персонажа, чтобы каждый заходил со своей командой.
Изменения
- feat(client,net): online rooms for up to 4 players
Menu with solo, host-and-play and join. Listen host plays as p1; the room resets a few seconds after win or wipe; boss HP scales with the number of players. Client mirrors server state, interpolates between snapshots, renders every team with name and HP, and animates casts from a new cast event. tools/net_test.sh runs a dedicated server with two headless bots. Version 0.0.2.