| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Игра на JAVA > Тестирование |
| Автор: Domestic Cat 5.11.2004, 16:20 |
| ээ... а работает ли сервер у вас? Если да, то хорошо бы протестить все не через локал хост кто хочет - ищите меня в icq. |
| Автор: Kurt 6.11.2004, 02:18 |
| У меня есть две машины, соединенные через lan. Завтра опробую обязательно, просто сегодня очень-очень занят - запарка на работе. Конец недели, блин. Сорри. |
| Автор: Domestic Cat 6.11.2004, 22:41 |
| ОК, не горит все равно |
| Автор: 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 убедили
Но ведь и так все draw рисуют в буфер, который прорисовывается при вызове panel.repaint() в Game.
Хм. update в Game вызывается столькo жe раз, сколькo draw А вообще подумать надo |
| Автор: Kurt 9.11.2004, 01:51 |
| Опробовал последню версию. Со слипом все ОК - таркан не моргает. Попробовал запустить на двух машинах. Результат - фиг с маслом. Сервер и клиент не видят друг друга. Причина (ИМХО!): когда мы посылаем udp-пакеты, нигде не указан IP-адрес - т.е. куда посылать-то? Считаю, что на клиенте нужно указывать адрес сервера, а сервер пусть либо вещает на всю подсеть, либо что клиент передавал ему свой IP при коннекте. .. Или я не то говорю? З.Ы. Сервер сильно тормозит систему. |
| Автор: Domestic Cat 9.11.2004, 01:59 | ||||
Дык нужно исправить локалхоста нa нужные ип в ServerSender и Sender. В дальнейeм sервер будет получать ип клиента прi егo подклюхении, ну a покa таk
Он просчитываеt движениe + рассылаеt кучу удпшек, тут уж ничего не поделать. |
| Автор: Sun 9.11.2004, 15:53 |
| У меня таракан тоже не моргает, после того как я раскоментил код в Game.update(), так что мой предыдущий месседж считать недействительным |
| Автор: Kurt 10.11.2004, 11:46 | ||
Блин, а я думал, что все просмотрел. Сорри - как-то пропустил эти файлы. Исправил IP-шники, запустил - все работает. Тока почему-то таракан при запуске клиента появляется лишь при клике на фрейм. Т.е. запускается клиент, сервер, но пока не кликнешь - пусто.. |
| Автор: Domestic Cat 10.11.2004, 16:36 |
| Вродe я это исправлял У кого еще такая жe проблемa? |
| Автор: Kurt 10.11.2004, 21:36 | ||
Пробовал и так и так.. Сначала клиента, потом сервер, и наоборот - результат один и тот же.. Поидее, надо бы сделать, чтоб сначала сервер запускался, а уж потом клиенты - это логичнее. |
| Автор: 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 |
| Ну, говорю как есть. Специально сейчас все еще раз прогнал - один и тот же результат (на обоих машинах - WinXP SP1). Пусть другие попробуют, там и выяснится, или это баг в коде, или у меня какие-то проблемсы.. |
| Автор: Domestic Cat 11.11.2004, 00:16 |
| Наверное баг |
| Автор: Kurt 11.11.2004, 01:20 |
| Может, лучше стоит перейти на "нормальный режим", когда сервер запускается раньше? К чему искать ошибку в коде, к-й все равно будет переделан? |
| Автор: Domestic Cat 11.11.2004, 01:27 |
| я думаю, будет так: 1. сервер запущен вхолостую. 2. клиенты коннектятся, передают параметры своих тараканов, свои ники 3. далее все нажимают "старт". У клиентов грузятся карты, посылается мессага на сервер 4. сервер стартует игру Получается, что сервер запустит gameLoop после того как клиенты готовы |
| Автор: 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 я еще автоскроллинg добавил. |