Articles of 数据驱动

如何在DirectX中处理游戏对象

来自XNA,我会使用内容管道,并创建游戏对象的XML文件。 但是,如果我在XML中更改了某些内容,则需要重建项目,以便创建XNB文件。 我是否需要自己创建XML文件并创建* encrypt / decrypt进程和XMLparsing器? 或者我应该只是简单的代码(因为任何修改都需要重建)? 我的游戏项目中的大部分内容都是随机的。 但是,基本types(如Armortypes)将是静态的。 意思是一种types的护甲会给予20%的护甲。 而另一种types的装甲会给予50%的装甲。 我不想使用任何第三方解决scheme。 我想自己做所有事情,所以我可以学习如何处理这些情况。

数据驱动devise和游戏屏幕分辨率

所以我刚刚开始研究数据驱动devise并将其实施到一个项目中。 我刚刚遇到了一个问题,我无法find任何材料,建议一个优雅的,如果不是实际的devise来解决它。 在我的情况下,我正在使用XML文件来分配游戏对象的成员variables,如x / y坐标等。我的问题是,这些值仍然在某种意义上“硬编码”,即x =“300”y = “等等等等,但是如果我想提供不同的窗口分辨率呢? 除了为每个单独的分辨率创建X个XML文件之外,我不确定如何耦合DDD和以这种方式影响数据的function。 有人可以提供任何关于如何解决问题的好主意吗? logging或个人经验,欢迎。

如何将数据存储在数据驱动的RPG中

可能重复: 使用XML / JSON /文本或数据库来存储游戏内容会更好吗? 我正在制作一个2D数据驱动的RPG游戏。 我打算这是可以调整的。 我的意图是通过一些接口公开所有主要的游戏数据(例如怪物统计数据,物品数据,宠物统计数据),以允许最终用户使用工具进行调整。 首先,我的基本假设是会有一大堆数据(可能是兆字节的数量级)。 我有一些要求,我试图找出。 如何有效地存储和加载数据。 例如,SQLite数据库将比启动时读取文本文件更快。 如何使版本控制友好(文本文件在这里胜出)。 如何保持数据的完整性。 如果它只是一个文本文件,你可以把无效的值。 如果可能的话,我想让用户使自己的工具来紧缩我的数据。 由于维护版本控制友好的数据是重要的,我认为有一个或多个文本文件中的数据将赢得胜利。 我可能会尝试让人们使用我的工具来编辑数据,并在实际代码中进行大量的完整性检查(例如, if totalHealth < 0, throw )。 有没有更好的方法来实现这四个目标? 我也喜欢文件格式的input(例如,YAML与XML与JSON对比)

编译时检查基于组件的数据驱动的游戏

这不是一个具体的问题,而是一个正在寻找关于典型devise问题的意见的人。 在基于组件的数据驱动的游戏中,我在访问属性时经常看到类似于以下的内容: int* health = mOwner->get< int >( HEALTH_ATTRIBUTE ); if (health) *health -= 10; 或者,或者: if (mOwner->hasAttribute( HEALTH_ATTRIBUTE )) { int health = mOwner->get< int >( HEALTH_ATTRIBUTE ); mOwner->set( HEALTH_ATTRIBUTE, health – 10 ); } mOwner是指向父游戏对象的指针。 在这个例子中,假设游戏对象存储了在运行时被降级到正确types的属性映射。 这种方法有一些问题。 主要是容易出错,因为它要求程序员知道它们之后的属性的types。 如果我在一个小团队或者我自己工作,这不会是一个问题。 但是,对于我的要求,这是不受欢迎的。 编译时检查的唯一方法是为每个返回正确types的属性创建一个辅助函数,所以我们的代码如下所示: int* health = Attributes::getHealth( mOwner ); 其中Attributes被声明为一个名称空间。 因为types在编译时是已知的,这给了我们几个优点。 除了编译时检查之外,我们还可以灵活地将某些属性声明为常量,或者不能在游戏对象之外修改等。当然,缺点是需要手动创建一个新的函数为游戏中的每个属性。 思考? 意见? 编辑: […]

在数据驱动的引擎中,“游戏规则”如何被视为数据?

我在几个地方读过数据驱动的游戏引擎的定义,通常提到的一个是游戏规则:将它们与引擎的逻辑分开。 什么是“游戏规则”? 这怎么可能被认为是数据?

如何stream放ItemRendererpath确定项目的稀有性?

这个问题真的是“stream亡之路”和他们论坛的特定问题。 基本上,他们从json对象渲染项目。 require([“PoE / Item / DeferredItemRenderer”],function(R){(new R(JSON))}) 而一个项目的JSON是这样的forms: { “validation”:真实, “W”:1, “H”:1, “图标”: “HTTP:\ / \ / webcdn.pathofexile.com \ /图像\ /艺术\ / 2DItems \ /环\ /Ring5.png V = d645f9adfc012c52674c94d16b4292b2”, “支持”:真实, “联盟”:“默认”, “套接字”: ] “名字”:“荣誉之握”, “typeLine”:“Topaz Ring”, “标识”:真实, “要求”:[ { “名”:“级别”, “值”:[ [ “41”, 0 ] ] “DISPLAYMODE”:0 } ] “implicitMods”: “防雷能力+ 22%” ] “explicitMods”: […]

如何在游戏数据库中存储通用数据?

为了澄清一些事情:我想为我的游戏创建一种数据库,就是一个存储所有游戏状态信息的类,比如对象位置,玩家分数等等。 我面临的主要问题是,整个游戏将被编写脚本,控制(lua)脚本的级别来控制数据库的成员。 原因是我想创建一个游戏,让游戏通过lua脚本完成对游戏的访问。(它的一个核心特性)为了这个可行,我需要能够将自定义元素添加到数据库中。 我想避免使用“真正的”数据库并推出我自己的解决scheme。 例如,我希望能够在脚本文件中执行以下操作: — In function init… Engine:AddStateEntry( "Score", TYPE_INT ) — In function update… Engine:SetStateEntry( "Score", 12 ) 然后,我的引擎将在玩家之间同步数据并相应地渲染事物。 我怎么能: 高效地存储任意types的数据?(包括数组) 设置自定义插值函数 效率和易用性是我的主要优先事项(我不在乎实施是否复杂) TL; DR:如何高效地存储由lua脚本定义并存储在c ++端的任意数据?

如何在游戏中安全地存储有关演员的xml / json信息?

我正在开发一个2D的“小”离线RPG游戏,到现在我有很多演员(小怪,英雄,NPC),我做了什么,创建了一个名为“演员”的类,每当我有一个新的演员我创建一个全新的类来扩展它。 我想是否可以限制它,并与单个类(原型模式?)是每个实例从存储文件(名称,重量,HP,攻击,可玩,…)获取其信息和属性。 我首先想到了用xml来存储我在游戏中的每一个演员,所以修改或者添加新的演员会变得容易很多,而且这也适用于武器,装备,魔药等等。 我害怕使用XML或JSON,因为这会打开游戏内容,然后任何人都可以修改它。 那么,关于如何实现这一点的任何想法,因为我对游戏开发完全陌生?

我如何让播放器input对象产卵数据驱动?

我正在使用基于组件的devise,并处于阶段或重新考虑简单的玩家input,以数据驱动。 目前我有一个PlayerControlComponent ,如果它应该是玩家控制的,那么这个实体就有了。 目前只有一个实体有这个。 我有一个InputSystem ,作用于具有PlayerControlComponent , PhysicalComponent和MoveableComponent组件的实体。 下面是实际创建实体的代码: if (_InputActionManager.IsAction(_ActionFireBullet)) { if (WorldManager.CanDoAction(playerControlComponent.CreateBulletActionId)) { // Create a bullet and fire it using (var entityTemplate = WorldManager.GetEntityTemplate(@"EntityTemplates\Bullet")) { var bulletPhysicalComponent = entityTemplate.Item.GetComponentOfType<PhysicalComponent>(); var bulletMoveableComponent = entityTemplate.Item.GetComponentOfType<MoveableComponent>(); bulletPhysicalComponent.Position = physicalComponent.Position + physicalComponent.Direction * physicalComponent.Radius; bulletPhysicalComponent.Direction = physicalComponent.Direction; bulletMoveableComponent.Velocity = moveableComponent.Velocity + physicalComponent.Direction * 200; } WorldManager.MarkActionDone(playerControlComponent.CreateBulletActionId); […]

数据驱动游戏中“types”数据的整数与string

我一直在开发一些手机游戏,其中这些游戏从服务器数据库中获取数据。 我习惯于将“types”值存储为整数标识符,并在客户端中使用枚举来标识来自服务器的数据。 我的印象是,像MMO或PC游戏那样的游戏可以通过修补数据来将“types”识别为整数。 举个例子:在数据库表上: 怪物表:MonsterId(int),Name(string),MonsterType(int) 在客户端代码上: typedef enum { MonsterTypeGround = 1, MonsterTypeAquatic = 2, MonsterTypeAmphibious = 3, MonsterTypeAerial = 4 }MonsterType; 有什么客观的正确答案是什么(INT VSstring)这些types的数据? 我是否有正确的印象,MMO通常使用整数这个,还是高度依赖于开发者呢?