封装游戏实体事件

时间:2013-12-25 22:13:08

标签: java game-engine

我一直在使用带有勾选和渲染线程的游戏循环结构来编写Java游戏。

我将用2个例子来解释我的问题。假设我们有一个World类来保存所有实体的位置。游戏循环然后循环所有实体触发他们的update()方法。

示例1

如果Monster想要攻击另一个Monster,它将如何访问其周围的其他实体列表进行攻击?如果这是通过传入一个本地实体列表来完成的,那么通过调用它的Monster方法直接攻击另一个recieveAttack()是否是正确的方法,或者攻击怪物触发一些更好包括与攻击相关的数据的标志。然后游戏循环也可以遍历所有这些标志并触发适当的攻击。<​​/ p>

示例2

另一个例子是Ship创建RocketShip会爆炸。如果它是在Ship类中创建的,那么该子弹如何仍然存在?

实际问题

我应该如何构建我的游戏以允许这种交互?我知道在调用update()时传递主要游戏类的解决方法,但我知道这非常粗略!

1 个答案:

答案 0 :(得分:1)

目前游戏系统设计的一大动作是实体系统。这些允许各种复杂的交互从一组相对简单的规则中构建出来。

这是一个非常大的话题,但是有一个开源的实体系统实现可用于jME3,并且已经有一些关于实体系统如何在jME3论坛上工作的非常详细的讨论。

http://hub.jmonkeyengine.org/wiki/doku.php/jme3:contributions:entitysystem

http://hub.jmonkeyengine.org/forum/topic/my-es-in-contrib-zay-es/

论坛搜索还会找到一些其他讨论ES的线程。

即使您没有使用jME3,Zay-ES的讨论,概念和实施细节也会为您提供一个很好的介绍,让您决定这种方法是否适合您。