Я не программировал игры в течение примерно 10 лет (мой последний опыт был DJGPP + Allegro), но я думал, что проведу XNA в течение выходных, чтобы посмотреть, как он развивается.
Я довольно впечатлен, однако, продолжая соединять игровой движок, у меня есть (возможно) основной вопрос.
Сколько стоит полагаться на делегаты и события С#, чтобы управлять игрой? Как программист приложений, я активно использую делегаты и события, но я не знаю, есть ли значительные накладные расходы для этого.
В моем игровом движке я разработал "chase cam", который можно привязать к объекту и затем пересчитать его положение относительно объекта. Когда объект перемещается, есть два способа обновить кулачок преследования.
- Имейте метод UpdateCameras() в основном цикле игры.
- Используйте обработчик событий, и камера chase подписывается на object.OnMoved.
Я использую последнее, потому что он позволяет мне объединять события вместе и красиво автоматизировать большие части движка. Внезапно, что было бы огромным и сложным, он упадет до нескольких 3-5 обработчиков событий... Его красота.
Однако, если обработчики событий, запускающие каждую наносекунду, окажутся основным замедлением, я удалю его и займусь петлей.
Идеи?