Здравствуйте, Сергей, Вы писали:
С>Добрый день!
Привет С> Как вообще по-хорошему можно сделать такую вещь, причем собственный физический движок писать не хочется?
Если не хочешь напрягать сервер — предлагаю следующий подход:
На сервере должен идти основной обьект управления — назовём его — "карта", распределительное ядро — скажем "синхронизатор" и информационный блок — пусть будет "телеком".
"карта" должна предоставлять публиц функции objectXY_changed, object_dissapiered ...
"телеком" получает сообщения от клиентов в виде двух пакетов: физика, персонаж.
оба передаются "синхронизатору".
В "синхронизаторе" всё разбивается по очередям и приоритетам,
Как только очередь прозесса приходит, изменение некоторых физических данных рассылается всем клиентам через "телеком", персонаж же когда подходит его очередь передаётся на "карту", а от туда и "телекому".
В это время на узерах логические движки принимают информацию и отстраивают миры — каждый локально.
Такой конструкт хорошим не назовёшь, потому что существует ни один мир а столько сколько клиентов подключено, таким образом больше вероятнасть ошибок и у каждого uzera дожна быть полная версия программы. Но эффект разгружения сервера на лицо — сервер в данном случае выполняйет лишь синхронизирующую роль — конструкт старых игрушек — "Warcraft I, Dune II"