Генерация движущегося фона с помощью объектов
|
|
Granner | Дата: Среда, 24 Августа 2016, 19:33 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Доброго времени суток. Для уровня платформера а-ля Ангри бердс создаются движущиеся фоны. На первом плане, само собой, активные объекты-здания и конструкции. Однако, активные здания генерируются какой-то промежуток времени (10сек - минута, полторы минуты), после чего перестают появляться в окне вида. Потом могут сгенерироваться еще один-два раза или вообще махнуть ручкой в мою сторону. При этом аналогичная генерация фоновые зданий и активных конструкций идет своим чередом, без всяких нарушений. Все это чудо создается простым способом: В Create объекта marker запускаются 5 алармов с разной длительностью (два на активные здания и конструкции, остальные - на фоновые здания)
Код alarm[0]=120; alarm[1]=100; alarm[2]=79; alarm[3]=61; alarm[4]=120; В каждом алярме всего две строки: на активные здания -
Код instance_create(view_xview+850, (irandom_range(430, 480)), hous); alarm[0]=120; У каждого объекта здания всего два действия - выбор спрайта и удаление при выходе из комнаты в Create
Код im_spr=irandom(5); switch (im_spr) { case 0: image_index=0; image_speed=0; break; case 1: image_index=1; image_speed=0; break; case 2: image_index=2; image_speed=0; break; case 3: image_index=3; image_speed=0; break; case 4: image_index=4; image_speed=0; break; case 5: image_index=5; image_speed=0; break; } // Ну и направление движения и скорость через кнопку
на фоновые здания -
Код instance_create(view_xview+850, (irandom_range(380, 420)),hous_f1); alarm[1]=100;
Что можно здесь напутать, просто не представляю. Но тем не менее, активные здания работают и потом просто перестают появляться. Запускающий объект marker все также на экране, фоны и активные конструкции работают как надо. Встречался ли кто с такой проблемой? В файле больше никаких объектов и настроек комнаты... ничего. И ступор...
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
FireF1y | Дата: Четверг, 25 Августа 2016, 12:09 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| Сложно сказать без исходника. Возможно, здания просто создаются на одинаковых координатах. Возможно, создаются за пределами комнаты и удаляются. Может быть, выбранный image_index пустой. Тестируйте, отключайте присвоение рандомного спрайта, отключайте скорость у зданий, спавните их у курсора мыши, выводите show_message при создании постройки, так выявите ошибку рано или поздно. p.s. алармы лучше не использовать
|
|
| |
Granner | Дата: Четверг, 25 Августа 2016, 13:58 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата FireF1y ( ) FireF1y , если не сложно, взгляните пожалуйста исходник. Вроде продолжаю проверять и координаты создания, буду и по вашим рекомендациям. А что значит не использовать алармы? Есть что-то лучшее для генерации повторяющихся действий?
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
USeR14 | Дата: Четверг, 25 Августа 2016, 21:35 | Сообщение # 4 |
RUSOriginal Studio
Сейчас нет на сайте
| Проблема в коде создания антен alarm[4]=120. Скорее всего, они где-то застревают за экраном вместе с домами. Надо создавать антены гораздо выше домов.
А вообще, странная методика создания окружения для такой игры. Слишком много объектов плохо для оптимизации. Нужно смотреть в сторону Parallax Scrolling, где задний фон будет только бесшовными спрайтами.
|
|
| |
Granner | Дата: Четверг, 25 Августа 2016, 23:24 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Да, спасибо, уже разобрался. Действительно, застревали. Переделал их создание и все пошло. Что касательно оптимизации, то согласен с параллаксом, только фон у меня там будет не совсем пассивным. Да и 35-36 рабочих объектов в комнате разве много? Правда, фпс тоже на уровне 30 сидит.
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
FireF1y | Дата: Пятница, 26 Августа 2016, 08:30 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Цитата Granner ( ) Да и 35-36 рабочих объектов в комнате разве много? Правда, фпс тоже на уровне 30 сидит. 35 объектов - вполне нормальное количество, но у вас их, в среднем, 830 в комнате, оттого и фпс около 30. А вообще, как уже писали, такая методика крайне неэффективна в плане оптимизации, рисуйте хотя бы пассивные объекты спрайтами. И переходите на GM:S, там с оптимизацией все намного лучше.Добавлено (26 августа 2016, 08:30) --------------------------------------------- Кстати да, это Код im_spr=irandom(5); switch (im_spr) { case 0: image_index=0; image_speed=0; break; case 1: image_index=1; image_speed=0; break; case 2: image_index=2; image_speed=0; break; case 3: image_index=3; image_speed=0; break; case 4: image_index=4; image_speed=0; break; case 5: image_index=5; image_speed=0; break; } заменяется так:
Код image_index=irandom(5); image_speed=0;
:)
Сообщение отредактировал FireF1y - Пятница, 26 Августа 2016, 05:01 |
|
| |
Granner | Дата: Пятница, 26 Августа 2016, 09:14 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| FireF1y, плюсик вам в карму Но у меня еще один нахальный вопросик - эм.... а откуда у меня в среднем 830 объектов? Мож я чего не понимаю, но в отладочном режиме дома смотрел - 33-35.
*прошло два часа* Скачал на работе, запустил, оба-на... действительно 800 с гаком... Откуда? От моей чудо-оптимизации?
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
FireF1y | Дата: Пятница, 26 Августа 2016, 09:23 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Очень много объектов object23
|
|
| |
Granner | Дата: Пятница, 26 Августа 2016, 10:45 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Упс, точно, я ж их не удалял. Всем спасибо за советы! Пойду хлопать себя по щекам и страдать дальше )
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |