Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Игра на JAVA > Тестирование


Автор: Domestic Cat 5.11.2004, 16:20
ээ... а работает ли сервер у вас? Если да, то хорошо бы протестить все не через локал хост smile
кто хочет - ищите меня в icq.

Автор: Kurt 6.11.2004, 02:18
У меня есть две машины, соединенные через lan.
Завтра опробую обязательно, просто сегодня очень-очень занят - запарка на работе. Конец недели, блин.
Сорри. smile

Автор: Domestic Cat 6.11.2004, 22:41
ОК, не горит все равно smile

Автор: Sun 8.11.2004, 11:23
Я тестировал под Linux и Windows. В Linux не грузилась карта, так как она называлась "Test" а директория с имеджами "test", поэтому просто не могло найти файлы.
Игра запустилась, но загрузка процессора была очень высокая. Я нашел что в методе AbstractGame.gameLoop() используется бесконечный цикл без задержек, он и приводит к перегрузке. Даже задержка в 1 миллисекунду существенно улучшает работу. Такая ситуация происходит как на Linux так и на Windows. Нужно будет либо вставить задержку в этот цикл, либо ожидание какого-то события.

Так-же заметно неприятное мерцание таракана при движении, особенно под Linux. Думаю необходимо ввести буфферизацию изображения. То-есть вставить отрисовку изображения карты и других объектов не в методы draw(), а в update методы. Заранее подготовить изображение видимой части карты и поместить как растр в BufferedImage, затем в методе draw() выводить ранее сформированный растр. Update по идее вызывается реже чем draw() и мерцание будет устранено.

Автор: Domestic Cat 8.11.2004, 16:40
Насчет задержки в клиентском gameLoop убедили smile я сам на масдае попробовал - действительно мерцает, а со слипом все ок. Нужно раскомментить один блок в gameLoop в том варианте, что я в пятницу сливал.
Цитата
Так-же заметно неприятное мерцание таракана при движении, особенно под Linux. Думаю необходимо ввести буфферизацию изображения. То-есть вставить отрисовку изображения карты и других объектов не в методы draw(), а в update методы. Заранее подготовить изображение видимой части карты и поместить как растр в BufferedImage, затем в методе draw() выводить ранее сформированный растр.
'

Но ведь и так все draw рисуют в буфер, который прорисовывается при вызове panel.repaint() в Game.

Цитата
Update по идее вызывается реже чем draw() и мерцание будет устранено.


Хм. update в Game вызывается столькo жe раз, сколькo draw smile

А вообще подумать надo smile Нe пойму я почему он мерцаеt, ведь и таракан, и фон прорисовываюся одинаковое количествo раз.

Автор: Kurt 9.11.2004, 01:51
Опробовал последню версию.
Со слипом все ОК - таркан не моргает. smile
Попробовал запустить на двух машинах. Результат - фиг с маслом.
Сервер и клиент не видят друг друга.
Причина (ИМХО!): когда мы посылаем udp-пакеты, нигде не указан IP-адрес - т.е. куда посылать-то?
Считаю, что на клиенте нужно указывать адрес сервера, а сервер пусть либо вещает на всю подсеть, либо что клиент передавал ему свой IP при коннекте.
..
Или я не то говорю?

З.Ы. Сервер сильно тормозит систему.

Автор: Domestic Cat 9.11.2004, 01:59
Цитата
Сервер и клиент не видят друг друга.


Дык нужно исправить локалхоста нa нужные ип в ServerSender и Sender. В дальнейeм sервер будет получать ип клиента прi егo подклюхении, ну a покa таk smile
Цитата
З.Ы. Сервер сильно тормозит систем


Он просчитываеt движениe + рассылаеt кучу удпшек, тут уж ничего не поделать.

Автор: Sun 9.11.2004, 15:53
У меня таракан тоже не моргает, после того как я раскоментил код в Game.update(), так что мой предыдущий месседж считать недействительным smile Видимо до этого я ставил задержку в неудачном месте.

Автор: Kurt 10.11.2004, 11:46
Цитата
Дык нужно исправить локалхоста..

Блин, а я думал, что все просмотрел. smile
Сорри - как-то пропустил эти файлы.
Исправил IP-шники, запустил - все работает.
Тока почему-то таракан при запуске клиента появляется лишь при клике на фрейм.
Т.е. запускается клиент, сервер, но пока не кликнешь - пусто..

Автор: Domestic Cat 10.11.2004, 16:36
Вродe я это исправлял smile А ты сначалa клиентa запускаешь?

У кого еще такая жe проблемa?

Автор: Kurt 10.11.2004, 21:36
Цитата
Вродe я это исправлял  А ты сначалa клиентa запускаешь?

Пробовал и так и так.. Сначала клиента, потом сервер, и наоборот - результат один и тот же..
Поидее, надо бы сделать, чтоб сначала сервер запускался, а уж потом клиенты - это логичнее.

Автор: Domestic Cat 10.11.2004, 21:44
Так оно и будет, просто сервер не отсылает данные если ничего с последней отсылки не изменилось. Он устанавливает таракана и шлет 1 удп, а затем замолкает т.к. таракан не двигается.
Если клиент запускает свой рисивер позже чем сервер отослал пакет, то он таракана не видит пока че.-го нибудь не произойдет.

Буду смотреть.

Автор: Kurt 10.11.2004, 23:12
Хмм.. А может, это чисто проблема моей сети?
Ведь udp не предполагает гарантированную доставку пакета..
Попробую на работе потестить..

Автор: Domestic Cat 10.11.2004, 23:42
Ну не должен один первый пакет теряться а остальные доходить :\
Странно.

Автор: Kurt 11.11.2004, 00:00
Ну, говорю как есть. smile
Специально сейчас все еще раз прогнал - один и тот же результат (на обоих машинах - WinXP SP1).
Пусть другие попробуют, там и выяснится, или это баг в коде, или у меня какие-то проблемсы..

Автор: Domestic Cat 11.11.2004, 00:16
Наверное баг smile. Есть чем вечером заняться теперь smile

Автор: Kurt 11.11.2004, 01:20
Может, лучше стоит перейти на "нормальный режим", когда сервер запускается раньше? К чему искать ошибку в коде, к-й все равно будет переделан?

Автор: Domestic Cat 11.11.2004, 01:27
я думаю, будет так:

1. сервер запущен вхолостую.

2. клиенты коннектятся, передают параметры своих тараканов, свои ники

3. далее все нажимают "старт". У клиентов грузятся карты, посылается мессага на сервер

4. сервер стартует игру

Получается, что сервер запустит gameLoop после того как клиенты готовы smile

Автор: Kurt 11.11.2004, 17:49
Получается, новым юзерам нельзя будет коннектится в процессе игры?
имхо, это будет сильный минус.
Когда игроки специализированно собираются поиграть в сети, предполагается, что все знакомы друг с другом, а так, в процессе игры приконнектится, оценить игрушку может любой, даже случайно зашедший юзер..
Итог: повышается рейтинг игры..

Автор: Domestic Cat 11.11.2004, 17:57
Почему, можнo будет, все дело в том чтобы сервер посылал первый удп уж e послe тогo как клиент стартоваl Receiver. Покa все равно kода для взаимодействия с сервером до начала игры нет, в нем можнo будеt сделать как нужно.

НУ, я баг один нашел, он был связан с ID клиентa. Попробуй запустить, только послe тогo как запущен Test и ServerTest, дo первого удп ещe подожать надo smile

я еще автоскроллинg добавил.

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