Поиск:

Ответ в темуСоздание новой темы
> Читаю потихоньку исходники.. почему так? 
:(
    Опции темы
Kurt
Дата 3.11.2004, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вот, читаю потихоньку исходники..
В файле Animation.java натолкнулся на такой код:
Цитата
public synchronized boolean update(long elapsedTime)
    {
        if (frames.size() > 1)
        {
            animTime += elapsedTime;

            if (animTime >= totalDuration)
            {
                animTime = animTime % totalDuration;
                currFrameIndex = 0;
            }

            while (animTime > getFrame(currFrameIndex).endTime)
            {
                currFrameIndex++;
            }
        }
        return false;
    }

Не понимаю, зачем здесь возвращается булевское значение?
Тут всегда возвращается false. Кроме того, я посмотрел по другим файлам - он, вроде, везде вызывается как
someObject.update() - т.е. нигде не проверяется возвращаемое значение.
Резюме - зачем здесь boolean и почему не void?


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


Эксперт
****


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

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



Animation я брал из Invasion, а тудa этот класс попал ещe откуда-то :) Очевидно, return здесь совсем не нужен. Вот допишу сервер, может дойдут руки подчистить :)


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

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


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


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

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



Еще заметил такую фигню:
я запускаю класс Test из консоли.
Так вот, если моя текущая директория - директория, содержащая исходники - все ОК.
Иначе - он не находит map.txt, даже если он лежит в директории, откуда я запускаю.
Добавлено @ 23:53
Хотя это явно чисто тестовый баг, потом надо бы продумать строчку
[code=]parser.parse("map.txt");[/code]
сделать, чтоб искал в classpath и в текущей директории..


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


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


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

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



Продолжаем..
Мне долго не давала покоя проблемка излишнего расхода ресурсов.
Таракан у меня на экране нет-нет да и моргал.
Предлагаю такое решение:
перед каждой перерисовкой делать небольшую задержку.
Вот, смотрите, я поменял чуток класс AbstractGame.java:
Цитата

..
public abstract class AbstractGame implements Runnable
..
    public void gameLoop()
    {
        long startTime = System.currentTimeMillis();
        currTime = startTime;
        while (isRunning)
        {
        try{
            Thread.currentThread().sleep(50);
        }
        catch(Exception ex){
           
        };
...

Кто заметит задержку в 50 миллисекунд между прорисовкой?
Однако, после добавления этого кода, все стало просто шикарно:
1) таракан ВООБЩЕ не моргает и при этом нормально передвигается;
2) приложение потребляет всего 10% процессорного времени - можно игратьcz и заниматься своими делами. :)
..
Ессно, можно развить эту мысль - например, вычислять необходимую задержку исходя их мощности и загруженности операционной системы, но это детали..


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


Эксперт
****


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

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



У меня при sleep(50) таракан стал "дергаться", а процессор оказался занят игрой на 60% ...
Маленькая задержка, скажем, в 5 мс вообще никак не влияет :(

К сожалению, при работе с сервером дергается всe куда хуже :)


Kurt, если есть желание, могу добавить тебя в девелоперы. Толькo нужен твой логин на сорсфорж


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

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


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


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

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



Цитата
У меня при sleep(50) таракан стал "дергаться", а процессор оказался занят игрой на 60% ...
Маленькая задержка, скажем, в 5 мс вообще никак не влияет

Ну, я ж говорю - нужно считать fps и исходя их этого вычислять fps.
Надо подумать..
Кстати, у тебя вообще-то моргание наблюдалось?


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


Эксперт
****


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

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



Цитата(Kurt @ 3.11.2004, 17:15)

Кстати, у тебя вообще-то моргание наблюдалось?


Нет. Оно появляется только со sleep, а без негo всe идет очень гладко.


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

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


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


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

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



Поверь мне наслово - у меня все наоборот.
Ладно, разберемся..


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


Эксперт
****


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

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



Тем не менее, идея помоглa smile я добавил Thread.sleep(100) в update сервера, и стало гораздо лучшe - таракан хотя и "скачет", но намногo плавнее.


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

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


Опытный
**


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

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



Может попробовать сервер и таракана на разных машинах запустить?
PM MAIL   Вверх
Domestic Cat
Дата 4.11.2004, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Надо бы, но сначала стоит код причесать и заставить его нормально работать с локальным хостом.
Сегодня еще посмотрю, а затем можно пробовать smile


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

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


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


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

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



Цитата
Тем не менее, идея помоглa

smile
Я думаю, на клиентах все же надо будет сделать такую задержку, вот только ее надо вычислать исходя их мощности системы - скорее всего у тебя получились косяки именно из-за разности между ресурсами наших машин - им всем нужны РАЗНЫЕ задержки. Иначе, у тебя все ОК, у меня даже просто мирно отдыхающий таракан постоянно моргает - непорядок..
Предлагаю ввести некоторое фиксированное кол-во fps (желательно, как можно меньше - чтоб меньше ресурсов есть..) и используя таймер и sleep - корректировать это значение, чтоб на всех машинах было одинаково.
Т.е. по событию таймера проверяем сколько было fps за прошедшую секунду и с помощью пропорций корректируем значение sleep.

Цитата
я добавил Thread.sleep(100) в update сервера

К сожалению, с сервером тоже придется сделать похожее - число 100 будет нормально работать на ТВОЕМ компе, не не факт что на более сильной/слабой машине будет все то же.
..
З.Ы. Чтоб поднять настроение и оптимистический настрой:
попробовал запустить в ASPLinux9.0+JVM1.4 - не грузит карту, из какой бы директории я не запускал это горе-приложение.. Надо поработать..
З.Ы.Ы. До этого запускал в OS WinXP SP1.



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


Эксперт
****


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

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



Цитата
Чтоб поднять настроение и оптимистический настрой:
попробовал запустить в ASPLinux9.0+JVM1.4 - не грузит карту, из какой бы директории я не запускал это горе-приложение.. Надо поработать..


Ох, то ли с путями не то, то ли с рисункамi smile

Цитата
К сожалению, с сервером тоже придется сделать похожее - число 100 будет нормально работать на ТВОЕМ компе, не не факт что на более сильной/слабой машине будет все то же.


И от коннекшнa тожe. Нo я думаю, 30-50 тоже хватит, а это подойдет в люб ом случае. jа доделал сервер, тепер' оn нe отсылаеt координаты объекта, если они nе измеnенились зa циkл.

Попишу ещe доки и выложу попозже.
Цитата
Я думаю, на клиентах все же надо будет сделать такую задержку, вот только ее надо вычислать исходя их мощности системы - скорее всего у тебя получились косяки именно из-за разности между ресурсами наших машин - им всем нужны РАЗНЫЕ задержки. Иначе, у тебя все ОК, у меня даже просто мирно отдыхающий таракан постоянно моргает - непорядок..


А это на лаптопе было?
Цитата
Т.е. по событию таймера проверяем сколько было fps за прошедшую секунду и с помощью пропорций корректируем значение sleep.


Оk, допишу расчет фпс, а там подберем параметры .


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

PM   Вверх
DarkDS
Дата 4.11.2004, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Domestic @ 4.11.2004, 23:25)

Ох, то ли с путями не то, то ли с рисункамi

Уже выяснили - с рисунками... Нужно их а соурсейв как бинарики положить smile
У меня такая же ситуация smile
PM MAIL   Вверх
Domestic Cat
Дата 5.11.2004, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



100 мс оказалось слишом много. Сделал 30 - даже не чувствуется, что есть нетворкинг smile smile
Дописываю доки и выкладываю.


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

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


 




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


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

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