Показать сообщение отдельно
Старый 25.06.2013, 16:50   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Обработка 2d объектов

Сообщение от MiXaeL Посмотреть сообщение
Мока, вот ты сам и объяснил, почему ты не прав.
Где можно быть не правим в том что я написал выше? ЛоЛ

Сообщение от MiXaeL Посмотреть сообщение
Провисает не цикл, а логика, которая, как я понял, вся завернута в условие.
И провисает не цикл, а логика в цикле.
Сообщение от MiXaeL Посмотреть сообщение
Т.е. разницы особой не будет, обходить все поле (оно явно не 10^5 на 10^5) или только монстров. Идеологически правильно, спору нет, но автора не спасет.
Судя по всему язык Basic'оподобный, я в них не разбираюсь особо, но должно же там быть что-то типа std::vector или списков из Blitz'a. Лучше их применять, ну и действительно копнуть в логику. Если там самая медленная часть завязана на обработку взаимодействия с игроком, вынести ее в отдельный цикл и обрабатывать только ближайших монстров.
Я так понимаю ты хотел сказать, что нужно иметь сразу список монстров которые нужно обработать, а не список который проверяется monster(i) и затем применяется логика.

Короче говоря, автор выложил недостаточно инфы.
Могу предположить что он тяжко просчитывает если монстр в экране или т.п. Но делает это с каким-то извращением, что эта проверка и садит всё.

Если делать как полагается, то нужно разбивать пространство на сектора, и хранить списки монстров в секторах. И затем пробегаться только по секторам которые в камере и их спискам монстров.

Забудь о блице..
(Offline)
 
Ответить с цитированием