Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > помогите определиться с архитектурой


Автор: JohnTravolta 3.9.2010, 13:35
добрый всем день. я новичок в Java.
пытаюсь реализовать реалтайм игру между двумя клиентами. 
посоветуйте как оптимально передавать данные о состоянии игрового мира из сервлета клиенту? и принимать сигналы клиентов?
чтоб если в будущем будет 500 человек онлайн, было меньше проблем.
есть ли возможность использовать 1 сервлет для 2х клиентов?

пакеты около 100байт.
в результате наблюдений выяснил что поступать данные должны каждые 100мс и уже на клиенте корректироваться(интерполяция, экстраполяция и т.д)
выяснил что есть такое понятие как сокет.
но я не представляю как отправлять данные через определённый интервал времени. 


Автор: Nofate 3.9.2010, 14:22
Сервлеты вам скорее всего не пригодятся, если только это не браузерная игра.

Для начала посмотрите как реализовать при помощи сокетов простенький клиент и сервер, попробуйте сделать чат на несколько человек. Обдумайте, какие данные стоит передавать, а какие могут просто храниться на клиенте. 
Для многопользовательской игры сервер в первом приближении будет выглядеть как бесконечный цикл примерно следующего содержания:
  • Принять новые подключения
  • Прочитать данные с клиентских сокетов (действия игроков)
  • Обновить игровой мир в соответсnвии с действиями игроков
  • Разослать необходимую обновленную информацию в клиентские сокеты

Автор: JohnTravolta 3.9.2010, 14:30
спасибо. Нашёл некоторые примеры.Запустил.
Не ясно могут ли несколько клиентов соединиться с одним портом указанном на сервере? 
или нужно для каждого соединения организовывать на сервере свой сокет типа new ServerSocket(N)? N-номер порта для очередного клиента.
если так то как эти номера выбрать клиенту и серверу?

Автор: kosmonaFFFt 4.9.2010, 06:18
Несколько клиентов могут коннектиться на один порт сервера...
На сервере при приеме соединения создается отдельный сокет для работы с каждым клиентом...

Автор: JohnTravolta 4.9.2010, 10:52
спасибо вам за ответы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)