Questions tagged «data-driven»

3
什么时候应该对数据进行硬编码与加载外部数据?
我需要大约一千行代码来制作自己的2D天基游戏,该游戏创建随机生成的恒星系统的网络,并随机选择行星,驻地,船只和武器来填充它们。 游戏可能需要使用数百个不同的站点/飞船/等-这就是我想知道的。我是否应该花时间创建一个“软编码”数据加载器,该数据加载器会将所有这些信息存储在(例如)XML文件中,因此在以后进行修改时会更容易些,还是我应该简单地处理一下现在正在做-将所有对象硬编码到游戏的主引擎中。 我是该项目的唯一人员,正如我所说,这只是我业余时间在大学以外从事的业余爱好。但是社区会建议投资创建一个额外的系统来将数据存储在其他文件中吗? 用这种方式对数据进行软编码与通过构造函数对所有数据进行硬编码相比,有什么好处?可以修改外部文件是否有长期利益-如果我不希望游戏具有“ mods”,是否需要外部文件?如果这只是我几周或几个月内会放弃的业余爱好,我应该在这上面浪费时间吗?

3
如何为许多独特的武器/法术/能力构建代码
我是一个没有经验的程序员,使用Python(类似于Pogue,到目前为止还没有PyGame,因为我仍然只关注文本),因此在FTL的背景下创建了“类似Roguelike”的游戏。 我的游戏将包含大量产生独特能力的武器(入门者约为50种)。我正在努力了解如何以既强大(就允许武器产生根本不同的效果)又具有可扩展性(以便以后可以通过将它们放入文件夹等方式添加更多武器)的方式来构造目标代码。 )。 我的第一个本能是拥有BasicWeapon类,并从该类继承不同的武器。但是,这对我来说似乎是个问题:要么我必须使BasicWeapon类变得如此准系统以至于它基本上是无用的(所有武器共有的唯一功能就是名称和类型(手枪,斧头等)),或者我必须预测每个我将想出独特的效果并将其编码到BasicWeapon中。 后者显然是不可能的,但是前者仍然可以工作。但是,这给我留下了一个问题:我应该将单个武器的代码放在哪里? 我是否要创建plasmarifle.py,rocketlauncher.py,swarmofbees.py等,然后将它们全部放入游戏可以导入它们的文件夹中? 还是有一种方法可以拥有一个数据库样式的文件(也许像Excel电子表格一样简单),而该文件却以某种方式包含每种武器的唯一代码-无需求助于eval / exec? 关于后一种解决方案(数据库),我认为我正在努力解决的基本问题是,尽管我理解保持代码和数据之间的分离是可取的,但我觉得武器模糊了“代码”之间的界限和“数据”一点;它们代表了可以在游戏中找到的各种各样类似的事物,从某种意义上说,它们就像数据一样,但是它们中的大多数将至少需要一些不与其他任何项目共享的唯一代码,从某种意义上说,它们自然就是码。 我在此站点的其他地方找到的部分解决方案建议给BasicWeapon类提供一堆空方法-on_round_start(),on_attack(),on_move()等-然后为每种武器覆盖这些方法。在战斗周期的相关阶段,游戏将为每个角色的武器调用适当的方法,并且只有定义了方法的对象才会实际执行某项操作。这会有所帮助,但仍然无法告诉我每个武器的代码和/或数据应该放在哪里。 有没有其他语言或工具可以用作半数据,半代码嵌合体?我是否完全掌握了良好的编程习惯? 我对OOP的理解充其量只是个粗略的知识,所以我希望对那些不太计算机科学的回答表示赞赏。 编辑:沃恩·希茨(Vaughan Hilts)在下面的帖子中明确指出,我本质上讲的是数据驱动编程。我的问题的实质是:我如何以一种数据可以包含脚本的方式实施数据驱动的设计,从而使新武器能够在不更改主程序代码的情况下做新事情?

3
游戏引擎和数据驱动设计
我听说过数据驱动设计,并且已经进行了一段时间的研究。因此,我阅读了几篇文章以了解这些概念。 文章之一是由Kyle Wilson撰写的数据驱动设计。正如他所描述的,在我看来,应将应用程序代码(即,用于控制诸如存储器,网络等资源的代码)和游戏逻辑代码分开,并且游戏逻辑代码应由外部数据源驱动。在这一点上,我可以想象开发人员将编写某种游戏编辑器,以接受有关游戏中对象的外部数据(例如角色信息,武器信息,地图信息...)。场景设计将由程序员编写的自定义语言/工具编写脚本,以使游戏设计师在游戏对象之间创建交互。游戏设计师将使用现有/自定义脚本语言编写游戏脚本,或使用拖放工具创建游戏世界。我能想到的工具方法示例是World Editor,它通常与Bliizard的游戏一起打包。 但是,另一篇文章反对使用数据驱动设计,即反对数据驱动设计的案例。作者建议不要让数据来驱动游戏设计,因为开发游戏会花费更多时间,因为游戏设计师会承担编程的重担。取而代之的是,将有一个游戏程序员可以从草图设计中自由编程游戏,并在游戏编程完成后由游戏设计师进行验证。他称这是程序员驱动的。我对这种方法的看法与我以前使用的方法类似:游戏逻辑是应用程序本身,与上述想法相适应,应用程序是游戏编辑器,实际游戏是基于该工具设计的。 对我来说,第一种方法似乎更合理,因为游戏组件可用于许多项目。使用第二种方法反对数据驱动的设计,游戏代码仅属于该游戏。这就是为什么我认为魔兽争霸拥有如此多的游戏类型,例如原始的魔兽争霸和各种自定义地图,以及其中最著名的一种:DOTA实际上定义了一种新的游戏类型。因此,我听说人们称World Editor为游戏引擎。游戏引擎应该是这样吗? 因此,在所有这些之后,我只想验证我对这些想法(数据驱动,程序员驱动,脚本编写等)的理解是否存在缺陷?

1
我应该如何构建可扩展的资产加载系统?
对于Java的业余游戏引擎,我想编写一个简单但灵活的资产/资源管理器。资产是声音,图像,动画,模型,纹理等。经过几个小时的浏览和一些代码实验,我仍然不确定如何设计这个东西。 具体来说,我正在寻找如何设计管理器的方式,以便它抽象出如何加载特定资产类型以及从何处加载资产。我希望能够同时支持文件系统和RDBMS存储,而程序的其余部分不需要了解它。同样,我想添加一个XML动画描述资产(FPS,要渲染的帧,对Sprite图像的引用等)。我应该能够为此编写一个类,该类具有查找和读取XML文件以及创建和返回AnimationAsset带有该信息的类的功能。我正在寻找数据驱动的设计。 我可以找到大量的信息是什么资产管理者应该做的,而不是如何去做。涉及的泛型似乎导致某种形式的类级联,或某种形式的助手类。但是,我还没有看到一个清晰的例子,看起来不像是个人黑客,也不是共识。
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.