Скорость и оптимизация (Пара советов)

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Профессиональные Пользователи / Скорость и оптимизация (Пара советов)

Страницы: 1 2 Next>> новая тема

Автор Сообщение

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 07-01-2007 14:06
Постим здесь информацию об скорость тех или иных ф-ий, а также об способах оптимизации.

Вот пара моих советов (буду добавлять по мере их обнаружения):

Обнаружил сегодня
- оказывается, логический оператор "<>" работает просто ЖУТКО медленно. Например, у меня есть проверка:

if abs(VSpeed) > 0 then
...

я ее заменил на (ну думаю, abs медленно будет работать)

if VSpeed <> 0 then
...

Так при достаточном кол-ве объектов FPS падает на 50! А вот "!=" работает отлично.

- Желательно не использовать своей отрисовки в Draw (типа юзать draw_sprite и еще что-то) - если нет этого события, то FPS увеличивается.

- Не использовать массивы в частых вычеслениях, например, в Step или Draw.

Это все неоднократно проверялось, поэтому достоверность - 100%.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 07-01-2007 15:42
- collision_line, collision_rectangle работают с точно такой же скоростью, как и collision_point. (достаточно быстрой кстати)

- не используйте часто sin и cos, особенно для расчета продолжения координат - для этого есть стандартные ф-ии lengthdir_x / y - они быстрее.

- не используйте radtodeg и degtorad - для перевода градусов используйте умножение на 180 / pi и pi / 180 соответсвенно.

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 09-01-2007 00:20
на 5.3а вроде я проверял и был очень удивлен.

Рассматривал столкновения я. И просто заменил все колижн эвенты на соотвествующий код в стэпе. Накидал кучу сталкивающихся объектов. Разница была раза в 3-4 в пользу кода в стэпе. Проверьте кого не обламывает.

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 09-01-2007 13:14
Отдельно бесят любители(99% форумчан) квадратных полов
сделайте прямоугольник 3х1024 и это заменит 32 кубика 32х32
соответственно наделайте с разным раскладом типа: 3х500, 3х100, 3х32, аналогично и с вертикальным раскладом
и про родителей тогда незабывайте
ну исключением являются крутые игры типа пакман

ну и желательно деактивировать объект пола в начале игры
и активировать его через (активате_регион), а (активате_регион)
лучше поместить не в степ а всобытия нажатия(передвижения) клавиш героя, ну чтобы не в каждом шаге работал (активате_регион)

а на счет массивов в хелпе написано что списки быстрее


Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 10-01-2007 21:11
Отдельно бесят любители(99% форумчан) квадратных полов
сделайте прямоугольник 3х1024 и это заменит 32 кубика 32х32

Раз уж на то пошло, тогда лучше использовать не объекты вовсе а массивы столкновений, пример был у ДримРаннера.
Только тогда лучше использовать не массивы, а списки или сетку

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 10-01-2007 22:49
Я недавно написал алгоритм, который "склеивает" стены одинаковые, и теперь из 300 стен получается 30

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 11-01-2007 11:58
Отдельно бесят любители(99% форумчан)

это же шутка должны понимать
Только тогда лучше использовать не массивы, а списки или сетку
ну так я об этом
Я недавно написал алгоритм, который "склеивает" стены одинаковые, и теперь из 300 стен получается 30
покажиш?

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 11-01-2007 14:17
списки тормознее массивов при простом обращении к их ячейке (можете даже не спорить) и для хранения карты не удобны.

Я недавно написал алгоритм, который "склеивает" стены одинаковые, и теперь из 300 стен получается 30.

Один раз это проделывается (склеивается)?

магистр
Группа: Сообщество GM
Сообщений: 453
Добавлено: 11-01-2007 15:00
Круто.
Еще могу добавить чтобы ускорить вычисления с синусом и косинусом, нужно загнать их в массив. На 360 ячеек. Скорость вырастет.
Лучше не использовать переменные такого типа 0.00000000000001, а использовать целые значения.
Если вы что то вычисляете каждый шаг, хотя известны точный данные то, лучше вычислить в калькуляторе, и написать нормальное число. 180/pi приблизительно равно 57.325 а pi/180 = 0.0175
Еще не стоит вычислять такие вещи как прибавка к чему либо, если, она не изменяется каждый шаг, а например в аларме только(вчера понял только), то есть загоните в переменную.
Я вообще не пользуюсь collision_point и прочими, ибо тормозно... пользуюсь массивами.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 11-01-2007 15:57
Еще могу добавить чтобы ускорить вычисления с синусом и косинусом, нужно загнать их в массив. На 360 ячеек. Скорость вырастет.

Это она вырастет, если ты сделаешь на Делфи например, а в ГМ я уже делал - подходит только для не частых вычеслений.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 11-01-2007 15:58
покажиш?

Позже, когда его сделаю для любых стен.
Один раз это проделывается (склеивается)?

Да, при загрузке уровня

Апдейт:

Пример
Читаем F1

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 15-01-2007 13:56
DreamRunner в уроках и примерах скачал еще раз твой пример, старый потерял, там Jane exe у меня на работе слабый комп и показывает 29-32 фпс я так понял там должно быть 60, вообщем предложение если у тебя остался исходник того примера
переделай массивные блоки в обычные и выложи исходник, и посмотрим

P.S. Ge Force 2 :D

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 15-01-2007 18:20
DG Soft пиши в теме обсуждения примера. тут другое.
Тормоза скорее из-за тайлов, т.к. их там тысячи. Переделывать не стану, ибо нет смысла. Будет тормознее, т.к. под каждым тайлом будет объект с которым считается столкновение.

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 23-01-2007 19:11
а что скажите про fps: 30 || 60

Как на меня 30 с головой хватает и нестоит парится ради 60

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 23-01-2007 19:20
Угу, мне 30 то же вполне хватает ;) Не понимаю, почему все 60 ставят.

гроссмейстер
Группа: Сообщество GM
Сообщений: 189
Добавлено: 23-01-2007 21:13
а я чувствую разницу между 30 и 60, 30 воспринимается как фильм(цифры схожие), а при 60 действительно есть какое-то ощущение, что это видео игра, ну как знаете в фильмах иногда спец эффект выделяется на фоне натуральной съемки из-за плавности движения.

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 23-01-2007 22:09
ну например у меня в игре скроллинг со скоростью 2пх/шаг при румспиде=60. А при румспиде=30 он должен быть 4пх/сек. Разница ощутима. Это скроллинг. Иногда его нет. Зато чаще есть выстрел и пуля будет пролетать 10пх при 60 и 20пх при 30. Разница в гладкости перемещения.

Я бы 30 взял для стратегии, но для динамичных аркад лучше 60.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 23-01-2007 22:59
Так же я проверил, что черезчур частое обращение к скриптам уменьшает скорость игры.
1)Напрмер у меня в степе просто ссылка на скрипт, в том скрипте, ещё одна ссылка результат такой:
150объектов -50 фпс.30 фпс- 460объектов.
2)Потом я в скрипт на который обращаюсь степом прямым текстом вставил скрипт на который обращается в этом скрипте(извиняюсь за тофталогию, короче просто в степе сслыка на скрипт и всё).
150объектов-100фпс.30фпс-571 объектов
3)А в конце я просто в степ вставил весь текст вкрипта(т.е. совсем без ссылок)
150об.-124фпс. 30 фпс-700 объектов.

Короче разница на лицо. Само собой везде объекты были одинаковые, сами вычисления касались пары косинусов и синусов, ну это не важно.

ЗЫ В этой теме старайтесь не много обсуждать, чтобы было просто сборник советов.

гроссмейстер
Группа: Сообщество GM
Сообщений: 173
Добавлено: 24-01-2007 16:25
У меня ссылка на скрипт есть в шаге некоторых объектов.
Но так как, то что в шаге, должно выполняться при определенных
условиях, то этот скрипт вызывается только иногда,
- что игру не замедляет.

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 24-01-2007 16:46
2DaMaGeR-69 это чисто эксперимент который показывает что скрипты
всетаки грузят фпс, а то что у тебя парочка скриптов ничего неизменяет то это ничего незначить

Страницы: 1 2 Next>> новая тема
Раздел: 
Game Maker Форум / Профессиональные Пользователи / Скорость и оптимизация (Пара советов)

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU