Поиск:

Ответ в темуСоздание новой темы
> Networking 
:(
    Опции темы
Domestic Cat
Дата 3.11.2004, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



В общем, сделал я сервер... Даже на лупбаке на локал хост движение получается весьма дерганым :(
Сегодня еше подолблю и выложу что получится.


--------------------

PM   Вверх
Kurt
Дата 3.11.2004, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Может, нужно более детализировать пересылаемые координаты?
Т.е. отсылать их чаще - поидее движения станут более плавными..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Domestic Cat
Дата 3.11.2004, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172





Цитата(Kurt @ 3.11.2004, 11:51)

Т.е. отсылать их чаще - поидее движения станут более плавными..


Сервер отсылает столько, что с головой хватит. А вот клиент не успевает получить ВСЕ пакеты, успевает обработать раз в 10 меньше. Надо думать либo о пуле тредов для клиента, чтобы они по очереди получали пакеты; либo отказе от сериализованных объектов; либo сглаживании движния тараканa - тогда таракан клиента будеt двигаться "сам" дo получния новогo пакета.

было бы хорошо если бы все посмотрели тест и высказали свое мнение.


--------------------

PM   Вверх
Kurt
Дата 3.11.2004, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Цитата
либo сглаживании движния тараканa - тогда таракан клиента будеt двигаться "сам" дo получния новогo пакета.

Тем самым увеличится нагрузка на клиент - ведь нужно будет постоянно просчитывать траекторию между точками..
Или тока по прямой? Т.е. между точками двигаться по прямой?


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Domestic Cat
Дата 3.11.2004, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



Да, таракан движется по прямой до получения новых данных. Такая штука использовалась в ряде игр, например в ThinkTanks при сильnom лаге видно, каk некоторые танки движутся в одном направлении, а затем бац- оказываются в совершенно другом месте.


--------------------

PM   Вверх
Domestic Cat
Дата 5.11.2004, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



Значится, идея такая:

За проход gameLoop сервер спит 30 ms. После вызова update(elapsedTime) сервер отсылает клиентам HashSet, содержащий набор ValueObject объектов.
Для получения такого объекта от Sprite сервер вызывает метод getValueObject, который возвращает объект класса наследующего от ValueObject. У таракана этот класс называется RoachValueObject и содержит координаты и направление.
Каждый объект в игре имеет свой ID, этот ID копируется в ValueObject. Если ничего за проход цикла с объектом не произошло, то метод возвратит null, и сервер не поместит его в HashSet.
Клиент получает пакет с HashSet'ом, и по ID, хранящемся в ValueObject, находит нужный объект, передавая ValueObject в метод setValueObject(ValueObject) . Если такого объекта нет, он создается. Клиентский объект устанавливает себе координаты и пр.
Клиентский gameLoop вызывает только updateAnimation(elapsedTime) и draw().
Если юзер произвел какое-то действие, например кликнул мышкой, создается объект класса,
наследующего от Event. В него помещается, помимо параметров, ID клиента, точнее его таракана.
Когда сервер получает Event, он находит таракана по этому ID и передает ему событие в метод
doEvent(Event).
И сервер, и клиент имеют 2 дополнительных треда : сендер и рисивер; которые и занимаются всеми этими делами.



--------------------

PM   Вверх
Ответ в темуСоздание новой темы
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Игра на JAVA | Следующая тема »


 




[ Время генерации скрипта: 0.1283 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.