2011-06-29 164 views
0

我需要IMPLEMENT(不使用某些库/开源)事件/消息系统。C++事件/消息系统

我有以下限制:

  • 它必须要快。它将用于游戏和速度是主要的限制。我想我每次发送新的消息/事件时都不能创建/删除消息/事件类,即使我使用自定义分配器。

  • 我必须能够预测何时会收到发送/创建的消息/事件。

  • 它必须易于使用。不管系统的实现有多复杂,使用它的程序员都必须有一个易于使用的界面。我宁愿避免像Windows消息那样的巨大开关,但我也想避免仅为一个函数(事件处理函数或类似的东西)重载类。我认为像MFC风格的东西会很好。

  • 它必须能够处理消息/事件没有性能问题的地段(可能是每秒60帧/秒的1000帧/帧,不知道这一点)。

  • 它不能使用在其他平台上不可用的编译器hack。它必须是便携式的。我将使用C++来实现。

任何你认为适合/可能有助于此建筑/设计/链接/书籍将不胜感激。谢谢!

+7

是的。如果你能拥有一切,那会很好,不是吗? –

+2

您是否已经在其他库上查看了其他库,如升压信号,qt信号,MPI等等? –

+0

这些消息/事件从哪里来到?他们是在游戏的各个部分之间,还是在网络中的游戏实例或其他东西? –

回答

2

让我解决您的点一一:

它必须要快。它将用于游戏和速度限制是主要的 。我想我不能 创建/删除消息/事件类 每次发送新的消息/事件 即使我使用自定义分配器为 那。

这样就足够了,甚至可以更有效率(对我来说,在一个项目中)重用和重新填充现有消息。不需要自定义分配器。

我必须能够在发送/ A 消息/事件创建将被接收 预测。

你可以做出预测,但正常的网络(你想要可移植性)会使你的预测有时会有点偏离,有时候会离开。

它必须易于使用。 系统的实现有多复杂,使用它的程序员必须具有易于使用的接口。

这应该是可能的,尽管这可能会花费你一些额外的努力。想到错误处理和特殊情况(平台,网络)。

我更喜欢以避免巨大的开关 像在Windows上的消息,但我也 想避免重写一个类 只有一个功能 - 事件处理 或这样的事情。我认为 像MFC风格的东西将是 很好。

避免手动写入巨型开关是我100%订阅的东西。

它必须能够处理大量的(也许在60帧 1000 /帧/秒,不知道 正是这种)的消息/事件 没有性能问题。

如果在实施过程中注意,您应该只受网络限制。

它不能使用 在其他平台上不可用的编译器hack。它 必须是便携式的。我将使用C++进行 实现。

甚至没有C++在所有平台上都可用。你能列出你正在处理的平台吗?

+0

Almoust所有游戏平台:) – Felics

+0

+1我在NDS上使用了C++,并设置了一个事件系统,其中事件是每个包含在发件人对象中的简单对象,在使用它们并重新使用它们时不做分配。达到此目的的条件是在同一次迭代中不会发生两次事件。 – Klaim

+0

@Felics,Flash是IMO的重要游戏平台。 –