什么是数据驱动设计?[关闭]


11

我一直在阅读许多文章,涵盖游戏的数据驱动设计。它似乎可以归结为:

  • 没有硬编码
  • 引擎中没有游戏专用代码
  • AI,过场动画等脚本。
  • 泛化代码的可重用性
  • 元件设计
  • 模块化
  • 低耦合
  • 编辑器(用于数据,地图,脚本)
  • 外部数据检索
  • 保存在文本文件中的常量(.ini或其他)
  • 通过编辑器公开数据,以供设计师进行脚本编写和操作

现在,我的问题是,这种理解正确吗?


3
欢迎来到该网站。您在这里有两个问题(每个帖子通常只问一个问题),而关于“如何开始”的第二个问题被认为是题外话,因此我已对其进行了编辑,并缩减了该问题。如果您想讨论如何入门,请考虑访问游戏开发聊天室

@JoshPetrie但这是最重要的一个,因为我去过很多站点,但没有任何答案。甚至没有朝一个方向戳。必须有些人对这些主题有一些见识。
OmniOwl 2013年


1
也许这对您来说最重要,但是在这里是没意思的(请参阅常见问题解答)。我也可以结束这个问题。如果您想提出入门问题,请访问游戏开发聊天室GDNet这样的实际讨论论坛。

1
@Vipar如果您需要有关主题之外的问题的帮助,请进入聊天室。不能保证您会得到帮助,但是很多聪明的人在那里徘徊。
ClassicThunder13年

Answers:


10

我会说这是不正确的。我相信数据驱动设计中最重要的想法是将您的数据与修改(或更新)数据的内容分开

因此,从这样的标准OO深度层次结构开始:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

到一个单独的状态和系统

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

目前,最有影响力的DDD范例是实体系统。查找一些不错的资源:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

http://entity-systems.wikidot.com/

当然,与所有范式/想法一样,没有确切的定义,并不是所有人在谈论DDD时都理解相同的想法,但这是我认为最重要的事情。


是的,我忘了提到分离部分。这正是我想看到的那种东西。我只能读那么多理论。我需要看一些具体的例子。谢谢。也将看看文章!
OmniOwl

哦,等等,终于找到了我前几天读过的最好的解释。原来,这是一个问题,我在这里问的答案gamedev.stackexchange.com/questions/48971/...:d
罗伊T.

4

我认为您使定义过于复杂。当然,从软件工程的角度来看,项目符号列表中包含的许多原则都是好的原则,但是它们不一定都属于“数据驱动”定义的一部分。它们中的许多有一些重叠,或者最好使用数据驱动的方法来实现,但是并不构成数据驱动某些事物的行为。

数据驱动软件开发的实际定义通常相当简单:程序主要根据一些外部信息(一段级别数据,脚本数据等)执行操作,而不是在代码中包含一系列预定义和固定的步骤本身决定控制流程。


您很可能使我过于复杂了。我倾向于这样做。但是我无法确定如何开始编写代码。
OmniOwl 2013年

1
在GDNet上发布了您问题答案。问题的症结在于:不要再努力尝试,选择最终想要的一个简单方面,并使用它来构建一个小型游戏。

我看到了,我也回复了。感谢您抽出宝贵的时间与我交谈。
OmniOwl 2013年
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.