在我的业余时间的我的程序游戏作为一种爱好,不同种类的东西,而且目前没有什么非常复杂。东西喜欢2d射击,瓦为基础的游戏,游戏,等等。

然而作为发展的这些游戏在我找到它变得难以管理的复杂程度不同的子系统内游戏,如接口,世界景/模式,事件的处理,国(菜单、暂停,等等),特殊作用等等。

我试图保持对连接到最低限度和减少偶然而,许多这些系统需要谈谈一种或另一种方式,它不需要牵着你整个代码基地在你的头在同一时间。

目前我试着代表不同的子系统和子系统的职能以不同的目的聚集在一起的但是我还没有找到一个通信战略,该战略是相互独立的不够的。

什么样的技术我可以用来帮助我应付所有这些不同的系统和处理的复杂性不断增加的系统,该系统需要的模块化,足以促进快速需求的变化?

我经常发现自己在问同样的问题:

  • 怎样的对象进行沟通彼此?
  • 应该在哪里的代码,用于处理特定子系统去?
  • 如果我的代码的基础,我应该要想在同一时间?
  • 我如何可以减少联接之间的游戏,实体?
有帮助吗?

解决方案

啊,如果仅仅有一个好回答你的问题。然后游戏的发展不会是那样困难、危险和费时的。

我试图保持对连接到一个 最低和减少偶然 许多这些系统需要谈谈 一种或另一种方式,不 需要保持你的整个代码 在你的头在同一时间。

他们这样做,但他们往往不需要谈谈中相当直接的方式为人们首先相信。例如,它共同拥有的游戏国家推价值观纳入其GUI只要的东西变化。如果不是你可以储存的价值观和我们GUI查询(或许是通过一个观察员的模式),则必然后去除所有界面引用的比赛状态。往往是不够的,只是问是否有一个子系统可以扣动它所需要的信息从一个简单的接口,而不是具有推动数据。

  • 怎样的对象进行沟通彼此?
  • 应该在哪里的代码,用于处理特定子系统去?
  • 如果我的代码的基础,我应该要想在同一时间?
  • 我如何可以减少联接之间的游戏,实体?

这一切都不是真的具体游戏,但这是一个问题,往往与游戏因为有这么多不同的系统,我们尚未开发的标准方法。如果你把网的发展,然后真的只是一个小数目的建立的模式:"一个模板/标文件的每URI"的东西喜欢PHP,或者可能"模型/视图模板/控制"方法的退休、Django,再加上一对夫妇的其他人。但是为了游戏,大家是自己的。

但有一点是清楚的:你不能解决问题的要求'如何做的对象进行沟通'.有许多不同类型的对象和他们的需要不同的方法。不要试图找到一个全球性的解决方案,以适应每一部分的你的游戏-输入、网络、音频、物理、人工智能渲染,电子监管的-它不会发生。如果你尝试写的任何应用程序通过试图拿出一个完美的IObject界面,将适合每个目的,那么你就会失败。解决个别问题,然后再寻找共同点,重构。你的代码必须首先将其使用之前,它可能甚至被认为是可以重复使用。

游戏子系统活在什么水平,他们需要,没有更高。通常我有一个顶级的应用程序,它拥有的图像、声音、输入和游戏的对象(其他).游戏对象所拥有的地图或世界中,球员们,非员,这些定义的那些对象,等等。

不同的游戏国可能有点棘手,但他们实际上不一样重要,因为人们承担他们。暂停可以编码作为一个布尔这,当集,简单地禁止AI/物理更新。菜单可编码,作为简单的图形用户界面复盖。所以你的菜单状态'仅仅成为一个情况下暂停的游戏和表示的菜单,并unpausing游戏的菜单时闭没有明确的国家管理需要。

减少偶之间的游戏,实体是很容易的,再只要你没有一个定形的主意什么游戏,实体,导致的一切需要能帮你一切。游戏中的人物通常生活在一地或一个世界,这实质上是一个空间数据库(除其他事项外),并可以要求世界告诉这附近的人物和对象,而不需要举行直接引用它们。

总体来说你只是必须使用良好的软件开发的规则的代码。最主要的是保持接口小型、简单和着重于一个和唯一的一个方面。松散耦合的能力以注重在较小区域的代码自然地流动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top