Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 3

Программирование 2D игры на Android. Скорость отрисовки, гладкие перемещения по экрану и логика

16.07.2019, 20:15. Показов 1277. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет!
Пишу 2D игру на Android, и возникло следующее непонимание.

(*) Мне необходимо перемещать по экрану порядка 200 Bitmap, при этом их перемещение должно происходить плавно и гладко, перемещать нужно как с маленькой, так и с большой скоростью, одинаковой для любого устройства.

Кроме этого нужно просчитывать логику перемещений перед каждой отрисовкой.

Сейчас я рисую на SurfaceView с помощью Canvas, перерисовку задаю через Timer.scheduleAtFixedRate, каждые 25 млсек наношу на Canvas все Bitmap и перерисовываю с помощью SurfaceHolder.unlockCanvasAndPost.

1. Насколько подходит SurfaceView для таких целей (*)?
Проблема в том, что если мне нужно плавно перемещать Bitmap по экрану с большой скоростью, то, как показали эксперименты, необходима частота отрисовки порядка 50-60 раз в секунду. Перемещаю я стандартным образом, прибавляя каждый раз к положению компоненты вектора скорости. При меньшей частоте перерисовки появляются дерганые перемещения при сохранении нужной скорости.

Если с одним Bitmap устройство еще справляется с задачами (*), то уже 50 Bitmap оно уже не в состоянии отрисовать с такой скоростью, появляются дерганья, задержки. При этом на этом же устройстве установлены игры, в которых объекты двигаются плавно по плоскости.

2. Как разработчики справляются с этой задачей (*)? Быть может поможет OpenGL?
Читал, что OpenGL рисует быстрее, чем обычное рисование на Canvas.

3. Допустим, что мне удалось добиться нужной скорости отрисовки, как быть с просчетом логики? Каким образом в приложениях добиваются такой быстрой скорости отрисовки и успевают при этом просчитывать логику перемещений?
Логика игры на моем устройстве занимает порядка 10 млсек. Сейчас я выбрал следующую тактику: пока приложение занимается перерисовкой, я вторым потоком просчитываю логику для следующей перерисовки, вроде работает нормально.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2019, 20:15
Ответы с готовыми решениями:

Запуск игры mr.Nom через Android Studio (по книге марио цехнер программирование игр под android)
Привет всем! Для тех кто читал книгу - в конце 6ой главы мы закончили писать код игры. В книге написано что - игра готова. Но в самих...

Программирование игры для Android
Сразу приношу извинения за то что спрашиваю в неподходяшем разделе (просто не знаю куда писать точно) .Вопрос такой играл в игру...

Логика отрисовки круга
Здравствуйте. У меня есть массив с пикселями экрана, и есть некий массив с точками(центрами окружностей, радиусами и цветами, которыми...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2019, 20:15
Помогаю со студенческими работами здесь

Как узнать скорость перемещения объекта в 3-мерном пространстве, если задана вертикальная и горизонтальная ср. скорость
Здравствуйте. Есть задача: имеется квадрокоптер, он летает в трёхмерном пространстве с координатами (x, y, z), координаты в метрах. Даны...

Составить программу перемещения пирамиды по экрану
Написала программу, все хорошо, а вот уменьшаться\увеличиваться не хочет, не понимаю в чем дело. Составить программу перемещения...

Передвижение прямоугольника по экрану при нажатии клавиш перемещения
Ребят, нужно разработать программу передвижения прямоугольника по экрану при нажатии клавиш перемещения курсора по экрану (в текстовом...

Логика перемещения ходов в пятнашках
#include<iostream> #include<ctime> #include<conio.h> #include<Windows.h> #include<iomanip> using namespace std; enum movement{ ...

Скорость отрисовки DataGrindView
Доброго времени суток. Столкнулся с такой проблемой. Если проложение WF. На одной из форм есть таблица DataGrindView, привязанная к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru