motofan logo
3 страниц V < 1 2 3 >        
> 

Платформер

Грустный
сообщение 23.10.2006, 21:51 Закрепленное сообщение!


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Разработку предлагаю разделить на:
Графика - перегнать в png, склеить спрайты.
Совместимость с MIDP 1.0 - Sprite и TiledLayer.
Физика – вектора, кинематика.
Поведенческие классы для «персонажей» - отрисовка, анимация, перемещение, столкновение.
Движок – игровой цикл, реакция на клавиши.
Меню.
Тестирование.

Порядок работы над проектом:
Все выносят идеи по каждому разделу.
Если есть готовые наработки – предлагать.
Каждым разделом занимается один-два человека – потом выкладывают результаты на общее обсуждение.
Если есть вопросы – спрашивать у всех, и все помогают .
В каждом разделе – сделать базовые наброски с минимально необходимым функционалом с последующим наращиванием.
По запросу разработчиков из других тем добавляют функционал.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 27.10.2006, 5:09


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Что-то с движением какая-то беда :( Во первых , Марио всё время подёргивается , когда стоит ( но это может так и задумывалось :) ) , во вторых , движение можно выбрать только один раз ( т.е. нажимаешь вправо - Марио и идёт вправо , останавливаясь к концу экрана , дальше анимация движения продолжается , но уже на месте и сдвинуть с места невозможно).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 27.10.2006, 5:16


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(dmtrlbdv @ Пятница, 27 Октября 2006, 16:09)
Что-то с движением какая-то беда  :( Во первых , Марио всё время подёргивается , когда стоит ( но это может так и задумывалось  :)  ) , во вторых , движение можно выбрать только один раз ( т.е. нажимаешь вправо - Марио и идёт вправо , останавливаясь к концу экрана , дальше анимация движения продолжается , но уже на месте и сдвинуть с места невозможно).
*



Как раз сейчас и разбираюсь с физикой для Марио. Буду менять подход:
Все силы дествующие на объект заносить в классе наследнике MovedEntity, а в Moved все их складывать.
Тогда можно устанавливаль для каждого типа объекта свои сылы, например: для ныряющей рыбы - силу выталкивания, когда она в воде; для Марио - силу трения, когда он бежит.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 27.10.2006, 11:31


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Если Flexis был первый мобильный tetris клон с реальной физикой , то это будет первый платформер с реалистичной физикой :) Главное , чтобы всё получилось. ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 30.10.2006, 4:04


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Пробовал использовать LayerManager из MIDP 2.0 вместо "самодельного" VectorPaited:
некоторое уменьшение размера (около 2 кб) и скорости (1-3%).
Считаю, что для совместимости с MIDP 1.0 можно оставить VectorPaited. Тем более, что некоторого величения скорости VectorPaited можно добиться, если использовать массив вместо vector - но это если заранее известно количество "отрисовываемых" объектов.
Всю анимацию пока делаю на основе Sprite из MIDP 2.0. Может, кто-нибудь сделает "свою" версию Sprite для MIDP 1.0?
Требования:
- загрузка нескольких изображений из одного файла PNG
- реализация методов:
setPosition(int,int)
paint(Graphics)
getFrame()
setFrame(int)
- добавление остальных методов, по мере необходимости

Valleo:
Зачем же заранее знать кол-во элементов на массив.
Пример:
private Image[] addImage(Image, ImgArr[]){
ImgNew[] = new Image[ImgArr.length+1];
for(i=0;i<ImgArr.length;i++) ImgNew[i] = ImgArr[i];
ImgNew[ImgArr.length] = Image;
ImgArr = null;
return ImgNew;
}
размеры функции не должны пугать - она выполняется предельно быстро, быстрее чем Vector.addElement();
Я так делаю для ускорения работы например с массивами String если у меня их много (так как Vector всетаки тормазнутое создание).


Сообщение отредактировал Valleo - 30.10.2006, 4:26
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 30.10.2006, 6:03


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Valleo
Я не совсем правильно выразился:
Во-первых, всё равно, количество элементов для каждого уравня известно заренее.
Во-вторых, new в Java - медленная операция.
Поэтому, фразу "но это если заранее известно количество "отрисовываемых" объектов", надо понимать так: "массив лучше применить, когда уже известна информация о содержимом уровня".
В "тетрисе" VectorPainted я применял только из за remove().
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 31.10.2006, 22:12


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Прикрепленный файл MobileApplication.rar   ( 207.44 килобайт ) Кол-во скачиваний: 144
Вот набросал - примерно так , но надо тестить , я пробовал только с тем , что в архиве ( и пока писал вспомнил , что не проверяю на превышение кол-ва фреймов при вызове setFrame() ). Вобщем , ногами сильно не пинайте , если что не так :)
Прикрепленный файл MobileApplication.rar   ( 207.44 килобайт ) Кол-во скачиваний: 144
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 1.11.2006, 6:30


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



[dmtrlbdv
Спасибо.

Добавил:
Код

   public int getHeight(){
       return frameHeight;
   }
   
   public int getWidth(){
       return frameWidth;
   }

и, после graphics.setClip(posX,posY,frameWidth,frameHeight);, в нормальный режим отрисовки:
Код
graphics.setClip(0,0,Common.WIDTH,Common.HEIGHT);

Скорость на V360 упала на 2% - это при одном спрайте.

Смотрел на V180 (128x116) - видимо придётся графику менять.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 1.11.2006, 16:18


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Не понравилось , как на маленьком экране выглядит ? Если да определись , какого размера должны быть спрайты - посмотрю , смогу-ли уменьшить. А по поводу перехода в нормальный режим отрисовки может сделать отдельный метод setNormalMode() и вызывать перед repaint() ? Может тогда скорость будет повыше ? Ну и можно ещё кое-какуюоптимизацию сделать
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 2.11.2006, 6:19


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



dmtrlbdv, займёшься?

От TayledLayer требуется:
- стандартный конструктор
- методы:
void setCell(int,int,int)
int getCell(int,int)
void setPosition(int,int)
void paint(Graphics)

Что есть у меня на данный момент:
Прикрепленный файл dist.rar   ( 30.57 килобайт ) Кол-во скачиваний: 148
Прикрепленный файл src.rar   ( 27.02 килобайт ) Кол-во скачиваний: 167

Марио какой-то летучий получился :)
Прикрепленный файл dist.rar   ( 30.57 килобайт ) Кол-во скачиваний: 148
Прикрепленный файл src.rar   ( 27.02 килобайт ) Кол-во скачиваний: 167
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
y(x)
сообщение 2.11.2006, 10:27


Новичок
*

Группа: Пользователи
Сообщений: 28
Регистрация: 2.11.2006
Пользователь №: 105 709
Модель телефона: L7

Рейтинг: 2



марио конечно популярный персонаж, но почему именно он? почему к примеру нельзя прославлять нашего чебурашку? ) или можно придумать другого героя )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Незнайка(на Земле)
сообщение 2.11.2006, 11:31


Интересующийся
**

Группа: Пользователи
Сообщений: 56
Регистрация: 19.9.2006
Из: Северный Кавказ,Ставрополь
Пользователь №: 99 738
Модель телефона: SE W810i

Рейтинг: 40.5



y(x),
bigsmile; bigsmile; ты б ещё позже вспомнил
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 2.11.2006, 13:21


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



y(x)
Здесь никто никого прославлять не собирается - нарисуешь кого-нибудь толкового , можно будет его использовать ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
y(x)
сообщение 2.11.2006, 14:20


Новичок
*

Группа: Пользователи
Сообщений: 28
Регистрация: 2.11.2006
Пользователь №: 105 709
Модель телефона: L7

Рейтинг: 2



хотя в принципе сейчас движок главное, а потом можно и картинки поменять :)
может и я могу чем помочь?
умею кодить на c/c++ только вот на java не пробовал ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 2.11.2006, 17:10


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Грустный

Ну , давай попробую - но только не подгоняй , пожалуйста :) Просто у меня сейчас ещё одна проблема есть, поэтому свои ресурсы буду распределять на всё сразу ( что конечно-же не идёт на пользу скорости выполнения ) :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 2.11.2006, 17:12


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Грустный

Ну , давай попробую - но только не подгоняй , пожалуйста :) Просто у меня сейчас ещё одна проблема есть, поэтому свои ресурсы буду распределять на всё сразу ( что конечно-же не идёт на пользу скорости выполнения ) :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 2.11.2006, 23:06


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(dmtrlbdv @ Пятница, 3 Ноября 2006, 4:12)
Грустный

Ну , давай попробую - но только не подгоняй , пожалуйста  :) Просто у меня сейчас ещё одна проблема есть, поэтому свои ресурсы буду распределять на всё сразу ( что конечно-же не идёт на пользу скорости выполнения ) :)
*



Я и сам занимаюсь проектом в "свободное рабочее" время, поэтому уделить болше 1-2 часов в день не могу.

Цитата(y(x) @ Пятница, 3 Ноября 2006, 1:20)
хотя в принципе сейчас движок главное, а потом можно и картинки поменять :)
может и я могу чем помочь?
умею кодить на c/c++ только вот на  java не пробовал ;)
*


Во-первых, тестирование: эмулятор - эмулятором, а на аппарате посмотреть всегда лучше.
Во-вторых, возьми исходники и глянь, может какие предложения по оптимизации возникнут.
В-третьих, можешь того же "чебурашку" нарисовать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 6.11.2006, 23:34


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Код
   public void setFrame(int frame){
                this.frame = (frame - 1);
                inFramePosX = this.frame%tileWidth * frameWidth;  
                inFramePosY = this.frame/tileWidth * frameHeight;
            }
- это должно быть так в классе Sprite
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 7.11.2006, 0:16


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(dmtrlbdv @ Вторник, 7 Ноября 2006, 10:34)
Код
   public void setFrame(int frame){
                this.frame = (frame - 1);
                inFramePosX = this.frame%tileWidth * frameWidth;  
                inFramePosY = this.frame/tileWidth * frameHeight;
            }
  - это должно быть так в классе Sprite
*



Хм, а оно и так работало :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 7.11.2006, 1:43


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



не всегда :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 7.11.2006, 6:05


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Не понял, чем отличаются в действии pkeeper от gooba, koopa от firekoopa, и Mario от FireMario?

Для первого уровня не смог сделать, чтобы gooba по платформе бегал - в оригинале и то не правильно сделано.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 7.11.2006, 23:25


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Вопрос к обсуждавшемуся ранне:
- есть ли в природе телефоны с разрешением 128х128 и не поддерживающие MIDP 2.0 ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 7.11.2006, 23:29


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



В оригинале , если не ошибаюсь, FireMario чем-то типа файрболов швырялся


Грустный

Обязательно - например старая S40 серия от Нокиа
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 7.11.2006, 23:40


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



dmtrlbdv, у знакомых, у кого есть Нокиа, нет ни датакабеля, ни WAP не подключён. Т.ч. тестить не смогу :( .
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 10.11.2006, 7:05


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



С "физикой" пока закончил:
Прикрепленный файл src.rar   ( 15.51 килобайт ) Кол-во скачиваний: 107

Прикрепленный файл dist.rar   ( 24.39 килобайт ) Кол-во скачиваний: 4

Оптимизировал по скорости как смог.
Интересно, а если сделать три слоя, и крутить их с разной скоростью (как было в "сеге" и "спс")?
Наверно тормозить будет жутко. На досуге попробую.

PS: Без оптимизации на V360 не успевает прорисовывать весь экран - хотя это очень странно, т.к. flushGraphics вызывается только после того как всё "просчитано".

Сообщение отредактировал Грустный - 10.11.2006, 7:40
Прикрепленный файл dist.rar   ( 24.39 килобайт ) Кол-во скачиваний: 4
Прикрепленный файл src.rar   ( 15.51 килобайт ) Кол-во скачиваний: 107
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 11.11.2006, 14:41


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Код
 /* очистка экрана */
     private void clrScr(Graphics g){
         int w = Game.WIDTH;
         int h = Game.HEIGHT;
         g.setColor(0xffffff);
         g.fillRect(0,0,w,h);      }


а если здесь не вводить w и h а просто g.fillRect(0,0,GAME.WIDTH,GAME.HEIGHT) ?

Прикрепленный файл Sprite.rar   ( 1.14 килобайт ) Кол-во скачиваний: 119
- исправленная версия класса Sprite ( работать должен быстрее и правильнее )
Прикрепленный файл Sprite.rar   ( 1.14 килобайт ) Кол-во скачиваний: 119
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 13.11.2006, 2:14


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(Грустный)
Вопрос к обсуждавшемуся ранне:
- есть ли в природе телефоны с разрешением 128х128 и не поддерживающие MIDP 2.0 ?
Цитата(dmtrlbdv)
Обязательно - например старая S40 серия от Нокиа

Есть ли у кого возможность (и желание) тестить проект на телефоне с MIDP 1.0 ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stranger
сообщение 13.11.2006, 7:22


Опытный
***

Группа: Почётные мотофаны
Сообщений: 135
Регистрация: 4.7.2005
Из: Донецк,Украина
Пользователь №: 45 406
Модель телефона: E60, E398
Прошивка: 49r

Рейтинг: 116



Грустный,
у нас в офисе есть нокия 128х128(7210), профиль которой MIDP 1.0 Если будет нужно, что я протестирую игру. Но учти, у этого телефона ограничение "хипа" ~200 кб и есть ограничение на размер jar в 64 кб.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 13.11.2006, 7:31


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(Stranger @ Понедельник, 13 Ноября 2006, 18:22)
Грустный,
у нас в офисе есть нокия ...

Спасибо.

Я правильно думаю, чтобы узнать занимаемую память:
Код
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())/1024
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 14.11.2006, 4:28


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Прикрепленный файл dist2.rar   ( 24.56 килобайт ) Кол-во скачиваний: 115
Stranger - что такое "хип"?
Попробуй на нокии:
Прикрепленный файл MIDP1.rar   ( 29.05 килобайт ) Кол-во скачиваний: 4


dmtrlbdv - в Sprite нумерация фреймов идёт с 0

Попробовал не использовать TiledLayer:
Прикрепленный файл dist.rar   ( 26.37 килобайт ) Кол-во скачиваний: 0
Прикрепленный файл src.rar   ( 16.54 килобайт ) Кол-во скачиваний: 0


Работает, в среднем, медленнее на 0-20% (быстрее на 5-10% если на экране мало объектов).
Это при том, что коллизии проверяются только для соседних объектов, и отрисовываются, только те, что на экране.

P.S. Провёл подобную оптимизацию на старом проекте (с TiledLayer) - скорость выросла в два раза.
Проверяются коллизии и отрисовываются, только те объекты, что на экране. Правда, "на экране" или нет, проверяет сам объект, т.е. тратится время на проверку.
Прикрепленный файл src2.rar   ( 15.62 килобайт ) Кол-во скачиваний: 104
Прикрепленный файл dist2.rar   ( 24.56 килобайт ) Кол-во скачиваний: 115
Прикрепленный файл src2.rar   ( 15.62 килобайт ) Кол-во скачиваний: 104
Прикрепленный файл dist2.rar   ( 24.56 килобайт ) Кол-во скачиваний: 115
Прикрепленный файл src.rar   ( 16.54 килобайт ) Кол-во скачиваний: 0
Прикрепленный файл dist.rar   ( 26.37 килобайт ) Кол-во скачиваний: 0
Прикрепленный файл MIDP1.rar   ( 29.05 килобайт ) Кол-во скачиваний: 4
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 14.11.2006, 5:43


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Добавил фон:
Прикрепленный файл src.rar   ( 33.09 килобайт ) Кол-во скачиваний: 103
Прикрепленный файл dist.rar   ( 41.92 килобайт ) Кол-во скачиваний: 108

На v360 есть запас производительности ещё на один слой...
Прикрепленный файл src.rar   ( 33.09 килобайт ) Кол-во скачиваний: 103
Прикрепленный файл dist.rar   ( 41.92 килобайт ) Кол-во скачиваний: 108
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stranger
сообщение 14.11.2006, 7:55


Опытный
***

Группа: Почётные мотофаны
Сообщений: 135
Регистрация: 4.7.2005
Из: Донецк,Украина
Пользователь №: 45 406
Модель телефона: E60, E398
Прошивка: 49r

Рейтинг: 116



Грустный,
файл скачал, в течение дня попробую и отпишусь.
"хип" - это heap(память, используемая Java-машиной для работы приложения, ну ты это должен знать :))У тебя ведь, кажется, уже было в тетрисе OutOfMemoryException, вот сказалось то, что новые объекты уже не было где создавать, хип закончился
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 14.11.2006, 10:20


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Цитата
в Sprite нумерация фреймов идёт с 0


Значит делаем так в методе setFrame()

Код
this.frame = frame;


а в методе getFrame()

Код
return frame;


так у нас всё будет работать с 0 индекса
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stranger
сообщение 14.11.2006, 16:01


Опытный
***

Группа: Почётные мотофаны
Сообщений: 135
Регистрация: 4.7.2005
Из: Донецк,Украина
Пользователь №: 45 406
Модель телефона: E60, E398
Прошивка: 49r

Рейтинг: 116



Грустный,
на телефоне не запускается. Возникает исключение NullPointerException. Проверяй.
Да...и еще... следи в jad и manifest'e за строкой MicroEdition-Profile: У тебя стоял профиль 2.0
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 15.11.2006, 1:24


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(Stranger @ Среда, 15 Ноября 2006, 3:01)
Грустный,
на телефоне не запускается. Возникает исключение NullPointerException. Проверяй.
Да...и еще... следи в jad  и  manifest'e за строкой MicroEdition-Profile:  У тебя стоял профиль 2.0
*


Если использовать Canvas, то paint вызывается до run->repaint, следовательно, не все объекты инициализированны. Если в paint всё заключить в try - прога на телефоне зависает "намертво".
Что можно сделать?

Видел такую штуку:
Код
repaint();
serviceRepaints();

Что делает serviceRepaints?

Ещё интересный момент:
"сборщик мусора", по идее, вызывается автоматом во время простоя, но если не ставить System.gc(); перед
Код
         
           /* установка одинаковой продолжительности "тиков" */
           if (iDuration < m_iTimeStep) {
               try {
                   m_CurrentThread.sleep(m_iTimeStep - iDuration);
               } catch (InterruptedException ie) {
               }
           }

то память утекает по килобайту за "тик".
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 15.11.2006, 6:53


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Сделал загрузку уровня из файла.
Добавил 2-й уровень.
Прикрепленный файл dist.rar   ( 42.78 килобайт ) Кол-во скачиваний: 120
Прикрепленный файл src.rar   ( 33.99 килобайт ) Кол-во скачиваний: 98
Прикрепленный файл src.rar   ( 33.99 килобайт ) Кол-во скачиваний: 98
Прикрепленный файл dist.rar   ( 42.78 килобайт ) Кол-во скачиваний: 120
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
y(x)
сообщение 15.11.2006, 8:36


Новичок
*

Группа: Пользователи
Сообщений: 28
Регистрация: 2.11.2006
Пользователь №: 105 709
Модель телефона: L7

Рейтинг: 2



Грустный,
вроде ты писал что с физикой покончено, а марио то до сих пор летает)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stranger
сообщение 15.11.2006, 11:51


Опытный
***

Группа: Почётные мотофаны
Сообщений: 135
Регистрация: 4.7.2005
Из: Донецк,Украина
Пользователь №: 45 406
Модель телефона: E60, E398
Прошивка: 49r

Рейтинг: 116



Грустный,
поставь в paint проверку перед тем как, например, рисовать какой-то имедж:

if (object != null)
{
g.drawImage(object,...)
}

Если объект не был создан, то просто ничего не будет отрисовано. А что нам потеря одного кадра?

Теперь о свзяке repaint() и serviceRepaints(). Когда ты вызываешь repaint(), то не факт, что сразу вызовется метод paint. Он просто будет поставлен в очередь с другими процессами. Вызов serviceRepaints() обеспечивает наискорейший вызов отрисовки.

По поводу gc(). Ну и пусть память утекает. Так ведь всегда. Посмотри в медиавьюере Валео, там это очень наглядно видно(если смотришь свободную память). Она уменьшается, но, дойдя до 0, снова возрастает.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 15.11.2006, 15:49


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Ещё можно в конструкторе object создать размером 1x1 , а потом уже его нормально переопределить. Тогда можно обойтись без if в paint.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 15.11.2006, 22:34


Интересующийся
**

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Вот что-то типа набросков - надо тестить. У меня вроде всё работает , а по поводу скорости сказать не могу , насколько быстрее-медленнее , чем TiledLayer от MIDP2 работает
Прикрепленный файл TiledLayer.rar   ( 11.46 килобайт ) Кол-во скачиваний: 109
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 15.11.2006, 23:12


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(y(x) @ Среда, 15 Ноября 2006, 19:36)
Грустный,
вроде ты писал что с физикой покончено, а марио то до сих пор летает)
*


Так это для отладки - чтоб уровень проще пройти было :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Платформер · Разработка Java-игр · Forum
 

3 страниц V < 1 2 3 >
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 15.6.2025, 11:41

Форум живёт: