Клиентский Godot-проект всегда находится у игрока на диске. Любой «секрет» в ресурсах или скрипте — это лишь вопрос времени. Поэтому в тайловом мультиплеере опора на авторитет сервера — не паранойя, а инженерная база.
1. Три уровня доверия
- Только отображение — анимации, частицы, звук: можно считать клиентский ввод «желанием» и не спорить, пока не затрагивает правила.
- Проверяемые действия — движение по сетке, подбор, урон: только сервер фиксирует итог.
- Экономика и редкие предметы — если ценность высокая, продумайте журналирование и лимиты (cooldown, максимум стака), чтобы откатить аномалии.
2. Валидация движения по тайлам
Алгоритм прост: известная клетка A, заявка «идти в B». Сервер проверяет смежность (или допустимый прыжок по вашим правилам), проходимость, состояние (дверь открыта?). Если всё ок — обновляет клетку и рассылает новое положение. Любой «шаг» на 3 клетки за один тик без умения — отбрасывается.
3. Скорострельность и flood
Ограничьте частоту сетевых команд с одного peer: анти-спам на уровне сервера. Это защищает и от ошибок ввода, и от наивных ботов.
4. Что оставить клиенту
Камера, UI, локальные подсказки, даже лёгкое предсказание позиции — да. Но никогда не принимайте от клиента голый «я нанёс 999 урона» без проверки по статам на сервере.
5. Итог
Чем проще ваши правила (тайловая сетка уже упрощает физику), тем дешевле сделать честный сервер. Начните с жёсткой сетки и одного типа взаимодействия — остальное нарастите поверх.
