Здравствуйте, уважаемые :)
Пытаюсь написать игровой движок для стратежки типа Dune или RedAlert. Просто для себя, покоряю, так сказать, вершины геймдева ))
Свой игровой цикл я делаю в классе мира и все операции над объектами-моделями провожу в нем же. В этом классе за все это отвечает функция tick() и выглядит примерно так:
void tick()
{
foreach ( body1 in mapBodies )
{
foreach ( body2 in mapBodies )
{
/*
и тут я проверяю всевозможные взаимодействия этих двух
объектов друг с другом. Если это танк, пушка, солдат и т.п., то
они могут кого-то видеть, атаковать или ехать по приказу и т.д.,
если здание - что-то производить...
В общем эта функция становится всё "жирнее и жирнее" с
добавлением нового функционала...
*/
}
}
}
но сегодня в одном из исходников я наткнулся на такую реализацию этой функции:
void tick()
{
foreach ( body in mapBodies )
{
body->tick();
}
}
И все. В этой функции цикл просто перебирает все объекты и вызывает "тик". Так вот мой вопрос: какая модель "тика" проще/правильнее ?
И как во втором случае объекты должны взаимодействовать друг с другом? Ведь по логике получается, что tick(), вызываясь в каждом объекте, порождает цикл проверки всех объектов на возможность взаимодействия с текущим объектом? А если объектов тысячи? За один игровой "тик" должно родится и уничтожится тысяча циклов? А комп не помрет? Или я что-то неправильно понимаю? :)