|
0 / 0 / 0
Регистрация: 31.01.2018
Сообщений: 16
|
|
Godot Оптимизация 2D10.02.2023, 10:05. Показов 2106. Ответов 2
Метки игровые движки (Все метки)
Всем доброго дня!
Столкнулся с серьезной проблемой, которую пытаюсь решить уже несколько дней. Создаю игру танчики, игровое поле разделено на клетки 32х32 пикселя. Танчик передвигается по клеткам - одна клетка за один шаг. (передвижение не резкое, а плавное с дельтой и заданой скорость. Есть счетчик, который следит сколько пикселей пройдено и когда танк прошел больше 32пикселей, он останавливаеся и центрируется по клетке ) Вся механика управления. передвижения и т.д. Создал массив в котором хранится информация какие клетки заняты всеми танчиками. Когда танчик хочет сделать шаг, он смотрит этот массив со смещением по X и Y, +1 и -1, проверяя есть ли занятые клетки слева, справа, сверху , снизу. Исходя из результатов проверки танчик выбирает куда поедет и сразу ставит отметку "занято" на эту клетку в массиве, если направление отличается проигрывается анимация поворота и танчик делает шаг в нужную сторону. По окончании шага, танчик освобождает ранее занимаемую им клетку в массиве. ШАГ состоит из трех основных частей: - определяется расстояние "микрошага" в этой итерации в соответствии с дельтой - это расстояние прибавляется к счетчику, который проверяет что танчик не прошел более 32 пикселей - Это расстояние прибавляется к позиции танчика Если счетчик становится более 32 Пикселей, шаг считается завершенным и танчик снова проверяет массив и цикл повторяется. ПРОБЛЕМА: при запуске с телефона 100 таких танчиков - фпс улетает до 30 и меньше. При запуске на пк 400-500 таких танчиков фпс проседает до 5-10 Для решения пробовал: - Сделать так, чтобы танчики за пределами экрана передвигались не плавно, а сразу на 32 пикселя - не помогло, лишние вычисления даже сделали хуже - Загрузить обработку движения танчика в новый виртуальный поток - не помогло, ФПС низкий, хоть и игра стала ощущаться плавнее из-за того что основной поток этим не грузится, но слайдшоу осталось - Загрузить обработку движения танчика в свой собственный виртуальный поток (создать кучу потоков в надежде, что система их сама равномерно распределит между ядрами процессора) - результат аналогичен предыдущему - Вручную поставить значение дельты на 1 или 0.1 - не помогло - вручную поставить значение дельты на 0.01 - ПОМОГЛО! фпс теперь 40-50 НО танчики движутся как черепахи и это не подходи, но читайте дальше.. - Закомментировать строчку отвечающую за прибавление ""микрошага" к позиции танчика - ПОМОГЛО! фпс 55-60, каждый танчик отрабатывает полный цикл проверки свободного места и делает шаг с прибавление "микрошагов" и расчетами с реальной дельтой - только он никуда не двигается. ФАКТЫ: - Думаю, версию с слишком тяжелой обработкой каждого шага можно откинуть, потому, что без команды прибавления микрошага к позиции все остальное танчик обрабатывал, он крутился, он занимал и освобождал клетки, он проверял сколько ему осталось до конца шага. Он просто при этом стоял на месте. - Считаю что искать проблему нужно именно от фактического изменения положения объекта танчика. Потому что замедление скорости его движения или остановка - приводит повышению фпс. НЫНЕШНИЕ ГИПОТЕЗЫ: Предположение сейчас только одно - чем быстрее танчик движется, тем чаще он заканчивает ход и начинает все эти проверки, тем больше выполняется операций. Но оно рушится сразу же, потому что с закомментированной строчкой движения танчик выполнял все операции с такой-же частотой, потому что дельта в расчетах никак не изменилась просто не прибавлялась к его положению. КОНЕЦ Очень жду советов и подсказок - спасибо!
0
|
|
| 10.02.2023, 10:05 | |
|
Ответы с готовыми решениями:
2
Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация Godot AcceptWindow Godot. Движение игрока |
| 10.02.2023, 14:42 | ||||
|
Где-то когда-то я нашёл этот клон танчиков на PyGame. Почти всё реализовано точно также как в оригинальной игре. Здесь все исходники в одном файле tanks.py - 2100 строк кода. Если вы Python никогда не изучали, то ничего страшного, потому что GDScript - это почти тоже самое, что и Python, а в PyGame почти всё интуитивно понятно, а если что, то можно документацию почитать, правда, через VPN. О том, что GDScript почти тоже самое, что и Python в документации на GDScript написано:
Скопировал код tanks.py на Gist
1
|
||||
|
0 / 0 / 0
Регистрация: 31.01.2018
Сообщений: 16
|
|
| 10.02.2023, 18:45 [ТС] | |
|
ОТВЕЧАЮ САМ ДЛЯ ДРУГИХ ИСКАТЕЛЕЙ
Еще пол дня копался и наконец нашел в чем дело! Каждый шаг танчик генерирует спрайт следов от гусениц, который в последующем с помощью Tween растворяется в течении 6 секунд и удаляется. Так вот как только я отключил генерацию следов - все просто начало летать, с оптимизацией другого кода и многопоточностью ПК стал показывать 70-75 фпс из 60 возможных.. Поэтому когда у танчика была маленькая скорость или он вообще не двигался фпс был гораздо выше - следов генерировалось гораздо меньше. Сейчас буду разбираться дело в том, что я использую Tween или в том что слишком много объектов..
0
|
|
| 10.02.2023, 18:45 | |
|
Помогаю со студенческими работами здесь
3
GODOT AudioStreamPlayer html5 Cocos2d-x или Godot Java в ядре Godot 2 d Godot масштабирование элементов Godot - звуки перемещения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|