| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Игра на JAVA > Читаю потихоньку исходники.. |
| Автор: Kurt 3.11.2004, 15:42 | ||
| Вот, читаю потихоньку исходники.. В файле Animation.java натолкнулся на такой код:
Не понимаю, зачем здесь возвращается булевское значение? Тут всегда возвращается false. Кроме того, я посмотрел по другим файлам - он, вроде, везде вызывается как someObject.update() - т.е. нигде не проверяется возвращаемое значение. Резюме - зачем здесь boolean и почему не void? |
| Автор: Domestic Cat 3.11.2004, 16:14 |
| Animation я брал из Invasion, а тудa этот класс попал ещe откуда-то |
| Автор: Kurt 3.11.2004, 23:51 |
| Еще заметил такую фигню: я запускаю класс Test из консоли. Так вот, если моя текущая директория - директория, содержащая исходники - все ОК. Иначе - он не находит map.txt, даже если он лежит в директории, откуда я запускаю. Добавлено @ 23:53 Хотя это явно чисто тестовый баг, потом надо бы продумать строчку [code=]parser.parse("map.txt");[/code] сделать, чтоб искал в classpath и в текущей директории.. |
| Автор: Kurt 4.11.2004, 01:57 | ||
| Продолжаем.. Мне долго не давала покоя проблемка излишнего расхода ресурсов. Таракан у меня на экране нет-нет да и моргал. Предлагаю такое решение: перед каждой перерисовкой делать небольшую задержку. Вот, смотрите, я поменял чуток класс AbstractGame.java:
Кто заметит задержку в 50 миллисекунд между прорисовкой? Однако, после добавления этого кода, все стало просто шикарно: 1) таракан ВООБЩЕ не моргает и при этом нормально передвигается; 2) приложение потребляет всего 10% процессорного времени - можно игратьcz и заниматься своими делами. .. Ессно, можно развить эту мысль - например, вычислять необходимую задержку исходя их мощности и загруженности операционной системы, но это детали.. |
| Автор: Domestic Cat 4.11.2004, 02:11 |
| У меня при sleep(50) таракан стал "дергаться", а процессор оказался занят игрой на 60% ... Маленькая задержка, скажем, в 5 мс вообще никак не влияет К сожалению, при работе с сервером дергается всe куда хуже Kurt, если есть желание, могу добавить тебя в девелоперы. Толькo нужен твой логин на сорсфорж |
| Автор: Kurt 4.11.2004, 02:15 | ||
Ну, я ж говорю - нужно считать fps и исходя их этого вычислять fps. Надо подумать.. Кстати, у тебя вообще-то моргание наблюдалось? |
| Автор: Domestic Cat 4.11.2004, 02:26 | ||
Нет. Оно появляется только со sleep, а без негo всe идет очень гладко. |
| Автор: Kurt 4.11.2004, 02:40 |
| Поверь мне наслово - у меня все наоборот. Ладно, разберемся.. |
| Автор: Domestic Cat 4.11.2004, 22:04 |
| Тем не менее, идея помоглa |
| Автор: DarkDS 4.11.2004, 22:34 |
| Может попробовать сервер и таракана на разных машинах запустить? |
| Автор: Domestic Cat 4.11.2004, 22:47 |
| Надо бы, но сначала стоит код причесать и заставить его нормально работать с локальным хостом. Сегодня еще посмотрю, а затем можно пробовать |
| Автор: Kurt 4.11.2004, 23:02 | ||||
Я думаю, на клиентах все же надо будет сделать такую задержку, вот только ее надо вычислать исходя их мощности системы - скорее всего у тебя получились косяки именно из-за разности между ресурсами наших машин - им всем нужны РАЗНЫЕ задержки. Иначе, у тебя все ОК, у меня даже просто мирно отдыхающий таракан постоянно моргает - непорядок.. Предлагаю ввести некоторое фиксированное кол-во fps (желательно, как можно меньше - чтоб меньше ресурсов есть..) и используя таймер и sleep - корректировать это значение, чтоб на всех машинах было одинаково. Т.е. по событию таймера проверяем сколько было fps за прошедшую секунду и с помощью пропорций корректируем значение sleep.
К сожалению, с сервером тоже придется сделать похожее - число 100 будет нормально работать на ТВОЕМ компе, не не факт что на более сильной/слабой машине будет все то же. .. З.Ы. Чтоб поднять настроение и оптимистический настрой: попробовал запустить в ASPLinux9.0+JVM1.4 - не грузит карту, из какой бы директории я не запускал это горе-приложение.. Надо поработать.. З.Ы.Ы. До этого запускал в OS WinXP SP1. |
| Автор: Domestic Cat 4.11.2004, 23:25 | ||||||||
Ох, то ли с путями не то, то ли с рисункамi
И от коннекшнa тожe. Нo я думаю, 30-50 тоже хватит, а это подойдет в люб ом случае. jа доделал сервер, тепер' оn нe отсылаеt координаты объекта, если они nе измеnенились зa циkл. Попишу ещe доки и выложу попозже.
А это на лаптопе было?
Оk, допишу расчет фпс, а там подберем параметры . |
| Автор: DarkDS 4.11.2004, 23:59 | ||
Уже выяснили - с рисунками... Нужно их а соурсейв как бинарики положить У меня такая же ситуация |
| Автор: Domestic Cat 5.11.2004, 00:05 |
| 100 мс оказалось слишом много. Сделал 30 - даже не чувствуется, что есть нетворкинг Дописываю доки и выкладываю. |
| Автор: DarkDS 5.11.2004, 00:06 |
| зы. нужно поменять ключ у имеджей на -kb и перезалить |
| Автор: Domestic Cat 5.11.2004, 00:24 |
| ок, сделаю следующий раз |
| Автор: Kurt 5.11.2004, 00:24 | ||||
| Да я уже догадался - собственно, зашел на форум отписать, что лажанулся с загрузкой. Сорри - надеюсь, мне, как новичку, простительно. Однако, теперь другая фигня. Запускаю клиент, сервер. Появляется таракан, но при клике в любом месте таракан остается на месте, а в консоли появляется следующее:
..
Моргание наблюдается на лаптопе и на "обычном" компе.. |
| Автор: Domestic Cat 5.11.2004, 00:46 | ||
Хмм... Когда я сливал, все работало. Ну да ладно, я сейчас все равно пределываю и думаю через полчаса выложить новую версию |
| Автор: Sun 24.11.2004, 11:42 | ||||
| У меня есть замечание по классу SimpleFood. 1. Там нет смысла использовать массив анимаций. Достаточно одной. 2. В методе draw не нужно делать разворотов. Так-же еда не должна перемещатся и соответственно иметь направление.
3. Нужно добавить конструктор с передачей имени файла который содержит анимацию и колличество кадров
4. В методе eat() вызывать update. Или может добавить в класс Animation безусловный переход к следующему кадру. Число кадров в анимации должно соотвествовать числу фаз поеданий данного фуда. 5. Не имеет смысл делать статусов для еды. Когда последняя часть еды съедена - нужно удалять еду из списка объектов игры. |
| Автор: Domestic Cat 24.11.2004, 16:29 | ||||||||
Согласен.
тоже согласен, но что если еда будет несимметричной ? Все время будет одинаково рисоваться.
Хорошая идея.
Ты имеешь в виду DEAD - ALIVE? Статуs удобен тем, что можно в 1 цикле будет перебрать все игровые объекты и тe что DEAD, удалить. А бez статуса nужно будет это в разных местах делать. |
| Автор: Sun 24.11.2004, 16:36 | ||
Да, я это и имел в виду. На счет перебора объектов, пожалуй ты прав. Тогда у еды должно быть два статуса ALIVE и DEAD, и несколько фаз поедания. |