Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 04.12.2007, 21:51   #1
Trilliput
Знающий
 
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений
(для 7 пользователей)
Как лучше управлять объектами в игре?

Возникла такая проблема:
Как лучше управлять объектами в игре?
1. Через один главный объект. Например класс игрока управляются все объекты в игре: постройка зданий, управление юнитами и тп. Вся обработка действий играющего находиться в нем. Но тогда придется каждый раз дополнительно снова прокручивать листы с объектами для каждого действия что бы проверить, например, что кликнли именно на этом объекте.
2. Все действия обрабатываются в своих классах. Нет проблемы с дополнительным прокручиванием списков. Но возможно дублирование реакции на одни те же действия игрока. Неудобство в плане размытости кода по проекту.

Может кто подскажет в какую сторону двигаться или предложит свою систему управления, типа универсальную.
(Offline)
 
Ответить с цитированием
Старый 04.12.2007, 23:51   #2
jimon
 
Сообщений: n/a
Re: Как лучше управлять объектами в игре?

управление в одном месте
делаем тип TPlayerControler и там все что связано с управлением делаем

внутри типа делаем кешируемые методы типа
GetObjectOnMouse, GetSelectedObjects и тд

потом просто в Update все обновляем и нет проблем
 
Ответить с цитированием
Старый 05.12.2007, 00:01   #3
Trilliput
Знающий
 
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений
(для 7 пользователей)
Re: Как лучше управлять объектами в игре?

Внутри типа TPlayerController делаем кешируемые методы?
Кешируемые методы - объясни подробней, что такое кеш вроде понятно, а что такое кешируемый метод - нет. Правда название намекает на то что там содержаться объекты "под мыхой", "выделенные" и тп.
Например метод GetObjOnMouse - неужели придется пробегаться по списку всех объектов и от этого перебра не уйти?

Или имелось ввиду что метод GetObjOnMouse принадлежит классу TObj? И во время перебора этого класса выявляется объект под мыхой?

Или у меня параноя по поводу перебора списка?
(Offline)
 
Ответить с цитированием
Старый 05.12.2007, 00:38   #4
jimon
 
Сообщений: n/a
Re: Как лучше управлять объектами в игре?

вот тебе кривое обьяснение зачем такое надо

Type TBlablabla
....

Field CachedObject:TObject

Method GetCacheFunction:TObject()
if CachedObject = null then CachedObject = GetFunction()
return CachedObject
End Method

Method FreeCacheFunction()
CachedObject = null
End Method

Method GetFunction:TObject()
'в етой функции каким-то образом получаем нужный обьект
..
return obj
End Method

Method Update()

local obj:TObject

obj = GetCacheFunction() 'тут у нас вызывается GetFunction()
obj = GetCacheFunction() 'а тут мы уже берем кешируемое значение
obj = GetCacheFunction() 'тут тоже самое
obj = GetCacheFunction()
obj = GetCacheFunction()

FreeCacheFunction() 'обычно кеш очищают если что-то изменилось
'но для примера будем очищать его в конце обновления

End Method

....

End Type
тоесть в принципе ето тоже самое что записать результат вычеслений
функции в переменную и потом юзать только ету переменную, а не функцию
но в данном случае все намного удобнее выглядит

мне такой подход понадобился только внутри TList, пришлось там
несколько функции зделать кешируемыми

хотя я особой оптимизацией игры не занимался, спокойно можно
перебирать все обьекты раз 10 за цикл не особо беспокоясь о производительности
 
Ответить с цитированием
Старый 05.12.2007, 00:48   #5
Trilliput
Знающий
 
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений
(для 7 пользователей)
Re: Как лучше управлять объектами в игре?

В том то и дело что перебирать неочень получается раз по 10 за цикл. Начинаются подтормаживания, из за этого код уже второй раз переписывается (читай оптимизируется).
(Offline)
 
Ответить с цитированием
Старый 05.12.2007, 01:04   #6
jimon
 
Сообщений: n/a
Re: Как лучше управлять объектами в игре?

Trilliput
ты там милионы обьектов перебираешь чтоли ?
 
Ответить с цитированием
Старый 05.12.2007, 06:47   #7
Trilliput
Знающий
 
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений
(для 7 пользователей)
Re: Как лучше управлять объектами в игре?

Не, объектов 30-40.
(Offline)
 
Ответить с цитированием
Старый 05.12.2007, 07:09   #8
oxid
Нуждающийся
 
Регистрация: 20.08.2006
Сообщений: 54
Написано 3 полезных сообщений
(для 4 пользователей)
Re: Как лучше управлять объектами в игре?

Сообщение от Trilliput
Не, объектов 30-40.
Это ты в чем-то гонишь. Тормоза на 30-40 объектах... Или у тебя комп убитый или ты мегасложные вычисления проводишь. А по поводу списков у тебя паранойа. Достаточно их пройти два раза - раз: апдейт и два: отрисовка. В некоторых случаях можно апдейт и отрисовку совместить в один цикл. Две-три тысячи объектов несвязанным списком с двойным проходом (апдейт+отрисовка) в дебаг режиме, а он тормознутее чем релизный, обрабатывать должно аж бегом.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как управлять анимацией tormoz FAQ 3 12.12.2009 02:55
Лодка в игре! ЛысыЙ_Чук-Иванчук 3D-программирование 11 23.07.2009 15:35
Скриншот в игре Maxxx.!!!. 3D-программирование 11 24.12.2007 02:26
Проигрыватель в игре AndruXa Blitz3D 7 21.09.2007 00:07


Часовой пояс GMT +4, время: 13:41.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com