Результаты поиска
|
|
Dva_Kota | Дата: Среда, 02 Февраля 2011, 13:04 | Сообщение # 241 | Тема: Внешние ресурсы в Game Maker |
заслуженный участник
Сейчас нет на сайте
| Не пробывал такое делать, но думаю перед загрузкой ресурсов можно загрузить эту картинку, отобразить ее. Саму загрузку ресурсов делать не в событии создания объекта-загрузчика, а в событии alarm0. В событии создания объекта-загрузчика только загрузка ресурсов, необходимых для отображения экрана загрузки (та самая картинка, про которую ты говоришь). Все это в отдельной комнате (или в комнате "меню", но тогда еще загрузи элементы меню). А событии создания, после загрузки "картинки загрузки" отображаем эту картинку и устанавливаем alarm[0]=1. В событии alarm0 загружаем все ресурсы и переходим в следующую комнату (или удаляем объект, показывающий загрузку). Ну как-то так...
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Вторник, 01 Февраля 2011, 10:12 | Сообщение # 242 | Тема: Glob left Pressed |
заслуженный участник
Сейчас нет на сайте
| NeZnayu, спасибо. Я ставил повторение действия много раз, а оказывается в одном объекте влияние на производительность не значительно. Вообще это очевидно... В одном объекте событие будет происходить только один раз (и одно событие не будет сильно влиять на производительность), а само действие присвоения значения переменной а выполняется с одной скоростью. По этому для одного объекта изменения не заметны. Когда объектов много - события происходят для каждого объекта, и здесь уже можно увидеть какое из них быстрее работает, а какое медленнее. NeZnayu, Спасибо что открыл мне глаза.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Понедельник, 31 Января 2011, 18:01 | Сообщение # 243 | Тема: Архив с вопросами |
заслуженный участник
Сейчас нет на сайте
| да
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Понедельник, 31 Января 2011, 17:50 | Сообщение # 244 | Тема: Glob left Pressed |
заслуженный участник
Сейчас нет на сайте
| NeZnayu, ты проверял или это теория? Может я не самую подходящую проверку делал, но вот пример, где я сравнивал что работает быстрее: событие нажатия клавиши, нажатие клавиши записанное в степ или нажатие клавиши, записанное в триггер. Результаты практически не отличаются (O - событие нажатия клавиши, I - через степ, P - триггер) http://rghost.ru/4152110 У меня FPS практически не отличается во всех трех случаях (+/- 1) Добавлено (31.01.2011, 17:50) --------------------------------------------- В теории, действительно, должно работать быстрее событие нажатия клавиши, но на практике получается не так...
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Понедельник, 31 Января 2011, 17:49 |
|
| |
Dva_Kota | Дата: Понедельник, 31 Января 2011, 16:12 | Сообщение # 245 | Тема: Оптимизация игры |
заслуженный участник
Сейчас нет на сайте
| Бэкграунд загружать лучше при старте комнаты (или игры, если во всех комнатах он одинаковый), а выгружать при выходе из комнаты (если в следующей комнате будет другой бэкграунд).
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Понедельник, 31 Января 2011, 14:59 | Сообщение # 246 | Тема: Glob left Pressed |
заслуженный участник
Сейчас нет на сайте
| Quote (Riketta) Я бы посоветовал копипастить весь код имеющий отношение к проблеме либо выкладывать сырец. Никаких маус чек в коде не видно, значит проблему было выявить невозможно. Код, который в первом посте, у него стоял в событии Glob left Pressed. Теперь он перенес его в степ и добавил проверку нажатия кнопки мыши. Вообще разницы в производительности не будет, писать в степ с проверкой нажатия клавиши или в событии нажатия клавиши. В обоих случаях проверка нажатия будет происходить каждый шаг (я сам проверял и разницу в производительности не обнаружил).
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Воскресенье, 30 Января 2011, 10:48 | Сообщение # 247 | Тема: Архив с вопросами |
заслуженный участник
Сейчас нет на сайте
| Вместо Code object41.x object41.y поставь просто Если пишешь object41.x - это координаты первого созданного объекта object41 (object41 = id первого объекта object41) Добавлено (30.01.2011, 10:48) --------------------------------------------- если ставишь просто x y - это будут координаты того образца объекта я которого выполняется код.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Воскресенье, 30 Января 2011, 10:44 | Сообщение # 248 | Тема: Дробовик |
заслуженный участник
Сейчас нет на сайте
| Для оптимизации, на сколько я знаю, нет разницы в каком степе ты пишешь код - в любом случае код будет выполняться каждый шаг. Разница очень хорошо описана в справке: Quote ...Но Вы также можете выбрать событие начала шага (Begin step) и конца шага(End step). Событие начала шага выполняется в начале каждого шага, перед всеми остальными событиями. Обычное событие шага выполняется перед тем, как экземпляры объекта будут перемещены в новые позиции. Событие конца шага выполняется в конце шага, перед событием рисования. Оно обычно используется, например, для изменения спрайта в зависимости от его текущего направления. Где писать код зависит от того, когда именно должны выполняться действия. Чаще всего это не имеет значения, по этому основную часть кода можно писать в степ. А вот привязку одного объекта к другому луче делать в событии End step. Вот код привязки: Если его выполнить в событии Step, то данный объект переместится в координаты объекта obj1, но движение объекта obj1 выполнится в стобытии End Step. По этому когда привязку объектов делают в step они как бы "отрываются" друг от друга.Добавлено (30.01.2011, 10:44) --------------------------------------------- А вообще, для оптимизации лучше убрать из степа код, который не обязательно выполнять каждый шаг, и перенести его в аларм.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Пятница, 28 Января 2011, 13:57 | Сообщение # 249 | Тема: Дробовик |
заслуженный участник
Сейчас нет на сайте
| Правильно, нет смысла проверять это в степе - все равно количество патронов уменьшается только когда стреляешь (в большинстве игр).
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Пятница, 28 Января 2011, 13:24 | Сообщение # 250 | Тема: Дробовик |
заслуженный участник
Сейчас нет на сайте
| Code {magazBul=0ammoBul=0} Здесь пробел забыл поставить Поставь код перезарядки сразу после уменьшения патронов.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Пятница, 28 Января 2011, 13:16 | Сообщение # 251 | Тема: Дробовик |
заслуженный участник
Сейчас нет на сайте
| Как сделал перезарядку и уменьшение патронов? Code if (mouse_check_button_pressed(mb_left)) { repeat(5) { bullet=instance_create(x,y,o_bulgun) bullet.speed=random_range(10,13); //Скорость bullet.direction=direction+random_range(-15,15); //Направление } //здесь уменьшаем количество патронов на 1 }
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Пятница, 28 Января 2011, 13:17 |
|
| |
Dva_Kota | Дата: Пятница, 28 Января 2011, 12:13 | Сообщение # 252 | Тема: Дробовик |
заслуженный участник
Сейчас нет на сайте
| Можно сделать короче. В шаге оружия написать: Code if (mouse_check_button_pressed(mb_left)) { repeat(5) bullet=instance_create(x,y,o_bulgun) bullet.speed=random_range(10,13); //Скорость bullet.direction=direction+random_range(-15,15); //Направление } И в создании пули можно ничего не писать.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Четверг, 27 Января 2011, 18:28 | Сообщение # 253 | Тема: Вопросы по Game Maker. |
заслуженный участник
Сейчас нет на сайте
| Если действие создания нового объекта происходит в том объекте, относительно которого нужно создавать, то id писать не нужно. Код в объекте Object2 (например в степ или в нажатии клавиши или в аларм): Code if x-Object3.x>0//это когда Object3 находится слева { instance_create(x+50,y,Object1); } Code if x-Object3.x<0//это когда Object3 находится справа { instance_create(x+50,y,Object1); }
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Четверг, 27 Января 2011, 14:09 | Сообщение # 254 | Тема: Симуляторские вопросы |
заслуженный участник
Сейчас нет на сайте
| У меня нет исходника и нет времени его делать. Код такой: при старте игры задавай переменную time_attak=0 когда должна выполняться атака ставь код: Code if (date_current_datetime()-time_attak>0.04) { time_attak=date_current_datetime(); //здесь код атаки (удара) } Все, больше ничего не нужно.
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Четверг, 27 Января 2011, 14:53 |
|
| |
Dva_Kota | Дата: Четверг, 27 Января 2011, 13:19 | Сообщение # 255 | Тема: Симуляторские вопросы |
заслуженный участник
Сейчас нет на сайте
| 2. Используй глобальную переменную. Записывай в нее время, когда происходит удар. При выходе из игры сохраняй игру. При ударе сравнивай эту переменную с текущим временем. Если разница больше часа - можно опять бить. тебе понадобится эта функция: Quote date_current_datetime() Возвращает число формата дата-время настоящего момента. Число формата дата-вемя равное 1 часу будет 0,04 (если я не ошибаюсь). Подробнее про функции даты и времени читай в справке.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 26 Января 2011, 14:02 | Сообщение # 256 | Тема: Свой интерфейс. |
заслуженный участник
Сейчас нет на сайте
| Что значит "игнорил другие объекты"? Чтобы не происходило событие столкновение с другими объектами?
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 26 Января 2011, 13:05 | Сообщение # 257 | Тема: Свой интерфейс. |
заслуженный участник
Сейчас нет на сайте
| Недавно это обсуждалось здесь: http://gcup.ru/forum/36-12736-1 Вот пример: http://rghost.ru/4057673
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Среда, 26 Января 2011, 13:06 |
|
| |
Dva_Kota | Дата: Вторник, 25 Января 2011, 12:56 | Сообщение # 258 | Тема: Вопрос - Ответ (Game Maker) |
заслуженный участник
Сейчас нет на сайте
| Да, лучше. Но лучше, я думаю, то что я предлагал выше - через place_meeting(x,obj_игрок.y,obj_игрок). Хотя не знаю что будет быстрее работать.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Вторник, 25 Января 2011, 11:33 | Сообщение # 259 | Тема: Переход между комнатами... |
заслуженный участник
Сейчас нет на сайте
| Да, есть. Это то же самое что &&
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Вторник, 25 Января 2011, 11:04 | Сообщение # 260 | Тема: Вопросы по Game Maker. |
заслуженный участник
Сейчас нет на сайте
| Все на много проще - нужно сравнивать x: Code if Object2.x-Object3.x>0//это когда Object3 находится слева { instance_create(Object2.x+50,Object2.y,Object1); } Code if Object2.x-Object3.x<0//это когда Object3 находится справа { instance_create(Object2.x+50,Object2.y,Object1); }
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |