将游戏制作为教程?[关闭]


19

我负责学校的游戏开发俱乐部,今年夏天我想从事一个项目,我可以在下个学期用作教程。我从来没有做过这样的事情,所以我想知道是否有人有任何指导方针或想法。

我基本上想做的是制作一个非常简单的游戏。像是自上而下的射击游戏,敌人会冲进来,让您杀死它们并捡起一些战利品。但是,我希望所有内容都可以轻松修改。俱乐部里的人们几乎没有游戏开发经验,因此,如果我可以以人们可以轻松地修改和添加功能的方式来设置游戏,那对他们来说将是非常棒的。

这样的东西就像在一个容易打败其行为的敌方阶级,或者使枪支射击不同/添加新枪支和新战利品。甚至为游戏添加了新元素。制作允许这种延展性的游戏的最佳方法是什么?


1
看看这个关于堆栈溢出的答案
Andrew Russell

Answers:


16

实现游戏开发中这一目标的传统方法是为游戏系统使用数据驱动的体系结构。

从本质上讲,这意味着代码并未实现具有明确定义其射程/伤害/穿透值的特定类型的武器(枪支),而是填充了射程武器的一般概念(射程/伤害/穿透...)。从外部(到代码)数据源。这种外部来源可以从磁盘读取的可解析(也许是XML)文件到通过游戏引擎本身内部或外部工具生成的二进制文件或数据库元素不等。

定义类似敌人的东西,AI系统可能设计为支持一些通用行为(攻击性,防御性,支持性,怯)性),然后由数据驱动元素对其进行调整。

我的新敌人,从具有攻击性的基本AI行为开始,这些行为具有数据驱动的值:-忽略玩家>我的等级+ X-追捕超过生成点X个单位的玩家-当健康<X时,逃跑-范围优先级-近战优先级(当玩家离得太近时)

更为复杂的数据驱动方案可能允许定义特定数据点(事件),在这些数据点中,AI状态会转换(有限状态机)到另一个状态(甚至可能会转换到N个其他状态之一),从而允许用户定义一个复杂的行为层次。

当然,所有这些工作不只是对行为进行明确编码,还要做很多工作,但这是一个有趣的挑战,要使用户能够在不修改源代码的情况下产生内容。

有一些奖励积分可以实现:

  • 是否可以在不重新启动应用程序的情况下动态更新数据并使更改反映在游戏引擎中
  • 如果您在数据上创建用户友好的UI,从而允许用户使用界面与数据进行交互,而不是直接编辑文本(xml或其他文件)

对于面向更多技术人群的教程游戏,大部分工作都在设计好的类/对象中,这些类/对象公开了供用户扩展的干净接口,这些接口又可以由数据驱动。


好答案!+1
AttackingHobo

感谢您的输入 :)!您是否会发现任何站点可以向我展示如何实现这种代码?我从来没有用这样的外部资源做过游戏。尽管我绝对希望他们在俱乐部的XNA中进行编码,但是我可能会按照他们可以轻松地在自己的类中继承的类和对象的方式做更多的事情。但我一定会调查一下,
Benixo 2011年

要做到这一点,一种好方法是需要您自己的配置解析器,以允许加载非常简单的数据驱动结构。本质上,任何教程的关键都是分块进行教学,因此抽象绝对是关键。然后,一个好的练习是设计一个简单的GUI,该GUI允许用户定义和创建新的武器类型。
deceleratedcaviar

游戏中最常见的数据驱动方面是关卡。即使其他所有内容都经过硬编码,关卡设计(例如,放置风景的位置,放置敌人的位置等)几乎总是在游戏加载的数据文件中定义。他的第二个奖励积分描述了一个关卡编辑工具。
jhocking 2011年

将对象写入磁盘或从磁盘读取对象的过程称为“反序列化”。您可能会在该术语下找到一些有用的教程。
2011年

1

如果您正在寻找有关如何启动项目并逐步构建它以便可以将其转换为教程的一些想法,请查看XNA Game Programming Adventures。作者设置了一些教程,并附有逐步增加的解释和源代码。


0

我建议看一下www.thenewboston.com上的Java游戏开发教程。

就装备武器和所有爵士乐而言,这可能并不是您要找的东西,但是它可以很好地逐步分解游戏开发中的许多关键因素。主持人“ Bucky”也有一种很有趣的教学风格。请享用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.