Пробовал ли ктонибудь связать два игровых мира разных клиентов?
Там скриптовый язык питон - есть модуль сокетов.
Базовый алгоритм такой:
1. Игра загружается и запускает сервер как задание с обновлением через определенный интервал.
2. Клиент подключается и синхронизирует с сервером базовые переменные квестов - запускает задание по отправке своих координат на сервер и обьектов
3. При получении координат от клиента - сервер отправляет состояние бижайщих обьектов клиенту.
но боюсь скриптовых функций може не хватить для этого.
Вопросы читерства не рассматриваю - просто фанатский кооперативный мултиплеер.
Пока что можно связать лишь по таймеру и некоторые callback.
Думаю клиенту нужно получать список NPC с сервера при загрузке карты и синхронизировать локальных NPC - убитых удалять суть в том чтобы играя за разных героев можно было наблюдать действия друг друга. Тоесть ты будешь в команде своего друга - можно обьединить события атаки, убийства(так как элемент случайности в атаке не даст результата в один момент времени), посадки в машину, движения машины и общий лут.
1. Загрузка - клиент сообщает серверу за кого играет и параметры своего персонажа, получает от сервера его персонаж, получает список NPC, лут, переменные data("zone")
1. Атака - один игрок начинает атаковать - срабатывает on_attack() и у другого игрока вызывается attack().
2. Убийство - нужно просто выполнять синхронизацию хп по событию on_hit() - приоритет оставить за сервером - как быть с хедшотом на стороне клиента не ясно...
3. все функции on_xxxx() из скрипта синхронизируюся между клиентом и сервером с подменой "ALTER_EGO" на ид аватара
4. дополнительно синхронизируются положения обьектов раз в секунду
5. Даже игровой чат можно сделать через консоль