Пятница, 19 Апреля 2024, 08:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Что лучше использовать для оптимизации ((переменные или массивы))
Что лучше использовать для оптимизации
ИнтернетДата: Среда, 28 Октября 2015, 18:08 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Например
f[0]=12
f[1]=13
f[2]=18
f[3]=1,21
и тд
или же (переменные)
f0=12
f1=13
f2=18
f3=1,21
Массив вроде читается как переменная с разными индексами, и должен оптимизировать игру (заменяя собой несколько переменных)?


Сообщение отредактировал Интернет - Среда, 28 Октября 2015, 18:10
ЛеонидДата: Среда, 28 Октября 2015, 18:29 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Не знаю, что из этого быстрее, но разница (если она вообще есть) ничтожна. Массивы не для оптимизации нужны, они по применению отличаются от обычных переменных. Записывать массив отдельными переменными, как показал выше ты, бессмысленно (зачем тогда вообще создавать массив, а не набор переменных?).
USeR14Дата: Четверг, 29 Октября 2015, 00:04 | Сообщение # 3
RUSOriginal Studio
Сейчас нет на сайте
Тут даже дело не в том, что быстрее будет, а для чего и как с этим придется работать. Важно понимать, зачем использовать в игре одномерный массив f[0] ("переменную с ячейками"), если его можно заменить обычной переменной. Если конечно переменных не будет достаточно много - тогда легче массив.
Массив удобнее перебирать в цикле и присваивать значения, но в то же время нужно следить, чтобы внутри него не было пустых значений (иначе ошибка).

Тут еще в справке пишут, что
Цитата
Неинициализированные ячейки ничего не занимают в памяти, даже если массив огромного размера.
Одномерный массив на 40% медленнее, чем обычные переменные.





ИнтернетДата: Пятница, 30 Октября 2015, 13:05 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
и ещё много (8-9) циклов for в Step сильно загружают пк?
ЛеонидДата: Пятница, 30 Октября 2015, 14:00 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Цитата Интернет ()
и ещё много (8-9) циклов for в Step сильно загружают пк?

Это напрямую зависит от того, сколько "шагов" в них. Можно поинтересоваться, зачем ты их используешь столько в step'е?


Сообщение отредактировал Леонид - Пятница, 30 Октября 2015, 14:00
ИнтернетДата: Пятница, 30 Октября 2015, 14:13 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Цитата Леонид ()

Это напрямую зависит от того, сколько "шагов" в них. Можно поинтересоваться, зачем ты их используешь столько в step'е?

Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно.
XakepДата: Пятница, 30 Октября 2015, 14:15 | Сообщение # 7
めちゃくちゃちゃ
Сейчас нет на сайте
Скорость абсолютно одинакова, ты обращаешься по адресу в памяти, что к переменной что к массиву, только когда ты пишешь a[2] к примеру, адрес смещается на 2, для массива за ранее выделяется память где все эти переменные будут храниться, вот если у тебя динамически выделяется память, то тут на выделение памяти будет тратиться время, если за ранее знаешь сколько памяти нужно, то только один раз выделяешь в стековой памяти (она намного быстрее чем куча к примеру, в которой идет динамическое выделение памяти)
ЛеонидДата: Пятница, 30 Октября 2015, 14:28 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Цитата Интернет ()
Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно.

Если у тебя один for и в нем 8 шагов, то не нагружает. Если у тебя 8 отдельных for, тогда у меня другой вопрос: зачем они?
EfimovMaxДата: Пятница, 30 Октября 2015, 15:31 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Цитата Интернет ()
Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно.

Нет, ну это верх оптимизации))
Заведи 1 переменную типа WeaponOnHero=true/false
И в событии атаки проверяй её. Если True - игрок может стрелять, если false - не может. А уже в теле этой проверки проверяй, какое оружие на игроке и чем он должен стрелять wink


Текущий проект: The Experiment ☭

Выпущенные проекты Steam:
Princess.Loot.Pixel.Again
Princess.Loot.Pixel.Again x2
Dungetris
ИнтернетДата: Пятница, 30 Октября 2015, 17:35 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Ну вот есть в инвентаре: оружие1 оружие2, и тд.
Проверяем если есть в инвентаре оружие1 (запускаю for для поиска имени этого предмета в любой ячейки) если находим то переменная (например or[0]) =true если нет то false. И дальше при нажатии на эту ячейку идёт проверка и если or[0]=true то можем стрелять , и. тд с каждым оружием изменяем or[1],or[2] и естественно разные характеристики. Сделал немного не так, но смысл такой
Как то ещё?


Сообщение отредактировал Интернет - Пятница, 30 Октября 2015, 17:37
EfimovMaxДата: Пятница, 30 Октября 2015, 18:11 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Цитата Интернет ()
Ну вот есть в инвентаре: оружие1 оружие2, и тд.
Проверяем если есть в инвентаре оружие1 (запускаю for для поиска имени этого предмета в любой ячейки) если находим то переменная (например or[0]) =true если нет то false. И дальше при нажатии на эту ячейку идёт проверка и если or[0]=true то можем стрелять , и. тд с каждым оружием изменяем or[1],or[2] и естественно разные характеристики. Сделал немного не так, но смысл такой
Как то ещё?

Жесть какая. Зачем тебе проверять всё доступное оружие? Раз так, то проверяй что находится в конкретной ячейке, то есть перебирай не оружие а ячейки инвентаря.


Текущий проект: The Experiment ☭

Выпущенные проекты Steam:
Princess.Loot.Pixel.Again
Princess.Loot.Pixel.Again x2
Dungetris
ИнтернетДата: Пятница, 30 Октября 2015, 18:17 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
А как например из такого цикла
ini_x=8
ini_y=2
for(ix=0;ix<ini_x;ix+=1)
for(iy=0;iy<ini_y;iy+=1)
Выбрать несколько или одну нужную ячейку?
EfimovMaxДата: Пятница, 30 Октября 2015, 19:22 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Цитата Интернет ()
А как например из такого цикла

Я не понимаю, что это
У тебя инвентарь разбит на x и y? Почему не просто одномерный массив?


Текущий проект: The Experiment ☭

Выпущенные проекты Steam:
Princess.Loot.Pixel.Again
Princess.Loot.Pixel.Again x2
Dungetris
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Что лучше использовать для оптимизации ((переменные или массивы))
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг