游戏开发

专业和独立游戏开发人员的问答

1
基于游戏的理论计算工具的算法(英雄联盟)
我想为一个游戏(传奇联盟)创建一个模拟器(主要用于测试)。 游戏基础: 您有一个具有以下统计数据的英雄: 健康点 攻击伤害 攻击速度 盔甲 护甲穿透 移动速度 英雄可以拥有4种技能(每个级别上只有一个技能点)(大多数情况下它们是手动激活的,具有冷却时间,伤害,攻击力/攻击伤害比例和技能等级)+被动技能 您可以杀死具有相同属性的敌方英雄或中立怪物: 健康点 攻击伤害 攻击速度 盔甲 我想做的是: 创建一个工具来测试特定物品或特定属性的增加是否会加快您的杀伤力/速度。 地图:http : //evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg 统计示例: 马力:420 广告:55 AttackSpeed:0.613(攻击/秒->每1 / 0.613秒的攻击) 护甲穿透力:25 角色将以1 /攻击速度自动攻击敌人,并造成攻击伤害(有一个计算伤害的公式,但是我猜这个阶段并不重要),一旦他们死了,就以移动速度移动到下一个敌人(您可以在地图上看到营地,黄色的头骨) 我在考虑算法: 我想如果我只是从i = 0到i = 30000(计算毫秒)做一个for,那么我就可以检查敌人的hp和我的hp,以及每个ms都非常糟糕(相当的cpu重,我想给它放一些随机数,所以我应该能够总结出1k次迭代,这是不可能的) 其次,我认为我应该做一个从i = 1到30的取值,并每秒检查一次,并检查最后一秒发生了什么,但是一些中性怪物在一个大营地(最多4个怪物),并且这样,代码变得越来越复杂。 我将为每个玩家/怪物创建线程,一旦它们完成,将在死亡时进行查找,并降低玩家的生命值。 我的问题是,这是正确的方法吗? TLDR:我想创建一个工具来对游戏进行分析(迭代1k并计算平均值),该统计数据的增加将使角色杀死更快的中立怪物。 我更喜欢java,但是atm却使我陷入了困境。 @Karoly S:是的,我不好,.com-> .eu 我一直在努力: 我正在检查每个对象的剩余时间(玩家技能,自动攻击,增益),并始终选择最短的时间,并存储last_time,并将时间与时间相加,在下一轮中,我用(time-上次) 如果对象的剩余时间为0,它将执行所需的任何操作。 我不知道这是否有效,但这是我能做的最好的事情。
10 algorithm 

3
实时策略游戏中的网络
当前网络实时战略游戏的最新状态是什么? 我似乎还记得几年前,一些AAA冠军只传递了玩家的信息(《星际争霸1》,《帝国时代》)。由于这需要您完全确定所有其他内容,因此这仍然是可行的选择吗?同步随机数生成器似乎是可行的,但是FPU实现中的细微差别如何? 还是战略游戏使用的是更接近动作游戏网络的东西,而是传输单个实体(使用某种形式的预测和(增量)压缩)? 如果是这样,如何处理弹丸等易挥发物品? 客户端/服务器与点对点呢?我猜所有这些都是紧密相关的。 感谢您的时间!

3
处理破坏游戏实体的正确方法
想象一下一个游戏世界,其中始终不断地动态加载实体的负载,我可能将其表示为实体的列表,但是如何删除它们呢? 在添加时,我可能会推迟新实体,但可能需要删除容器中的任何位置。为了避免搜索元素以找到要删除的位置,我有哪些选择? 我坚称我可以将实体ID作为其在容器中的位置存储,从而创建直接删除的路径,但是会不会产生某种相互依赖的“混乱”? 我知道正确的方法是类似List.RemoveAt(whereToRemove);。但是,如果只有实体知道何时应该死去怎么办? 还是我只是缺少一些东西,而列表容器会知道对象何时被破坏并减小其自身大小?

2
人口几何系统:开始
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 4年前关闭。 我想和朋友一起开发类似Populous:The Beginning的游戏。但是我们无法确定他们在世界上使用了哪种类型的几何图形。 我们知道-所有瓷砖的尺寸都相同-所有瓷砖都是正方形 因此,它不能是二十面体,因为有三角形,也不能是标准球面几何体,因为不是所有的图块都具有相同的大小。 有人能帮我吗?
10 3d  geometry 

3
随机图生成-散布/聚类随机节点的策略
我正在太空中做一个简单的4X策略游戏,其中每个节点都是一个兴趣点(行星,小行星等)。 要随机生成地图,请按照以下步骤操作 确定地图每个节点的类型(例如,可能有5个类似地球的行星,10个贫瘠的行星等) 将每种类型的节点放置在地图上。 对于第2步,我希望每种节点类型的分布均匀。因此,例如,我将从放置所有类似地球的行星开始。如果我简单地做一个rand(map.width,map.height)来确定位置,我可能最终会把所有类地球的行星聚在一起,这将使从该区域开始的玩家受益。 是否有任何方法(例如使用不同的图形函数或噪声函数)可以生成彼此分散的(x,y)坐标序列。同样,有什么方法可以生成彼此接近的坐标?

1
要场景图还是不场景图?
我一直在努力决定是否在游戏中实现场景图。我有一些使用这种工具的用例,但我无法获得一些实现细节。 背景知识:我正在写针对移动平台(主要是Android)的太空射击游戏,我的代码几乎完全是C ++。我没有使用任何中间件;渲染引擎和物理引擎特别是我自己的作品。我的物理引擎会根据力和脉冲来更新对象的位置。到目前为止,我还没有动画系统,但是可能会在某些时候访问它(可能与本次讨论无关)。 首先,我将描述一个很好的用例。我想拥有一个由几个独立的零件组成的老板,每个零件都可以独立损坏/破坏。例如,我可能有一个老板的胳膊可以独立于其他老板实体而受到伤害。当手臂被销毁时,位于凸台肩部的火焰微粒效应可能表明手臂已被销毁。 实际上,我决定尝试在物理引擎中解决具有约束的此类问题,以将此类复合对象保持在一起。一个这样的约束条件提供了0个自由度,并且本质上是一个变换矩阵。这实际上是在试图解决一个最终使我脱离场景图的问题的尝试,如下所述。 我不使用场景图的主要原因是因为我找不到在物理世界和渲染场景中都保留嵌套对象(从其父级继承了转换的对象)的有效方法。物理世界需要对象位于世界空间(或至少相同的空间)中,而渲染场景需要对象位于父空间中。跟踪两个空间中的位置可能会有所帮助(并且是不可避免的),但会引起自身的担忧,其中至少与性能有关。 但是,考虑到上述用例,我认为能够在父空间中“工作”将变得非常重要,而试图通过约束来迫使我的物理引擎保持这些关系将变得成问题。 给定上述用例和困境,我是否应该使用图结构将转换从一个对象传递到另一个对象?如果是这样,我的物理引擎应该如何计算新位置并针对不同空间中的对象执行相交测试?

1
枚举与 技能值的整数
我正在实施一个基本的技能和属性系统,尽管我对应该如何去做有第二个想法。 例如,我可以使用Dictionary / HashMap,它使用SkillType枚举表示键,并使用整数值表示值。但是我应该这样做吗? public class Skills { public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value. } vs. public class Skills { public int LongBlade, Armor, Marksman; //...etc } 我想知道这里类型安全的好处,而不是仅仅使用基本整数。有什么建议吗?
10 c# 

3
XNA中渲染大量地形的有效方法
我正在创建一个XNA游戏,该游戏需要巨大的玩家空间。当前,我正在使用的测试高度图是4096x4096,并保存为4位BMP。 我要尝试的是获取巨大的高度图文件,然后在游戏中进行渲染。我遇到的问题是,将整个地形立即加载到内存中效率很低,因为它将占用大部分可用内存。 我遇到的另一个问题是,由于XNA中设置了硬限制,因此无法在一个图元中全部渲染地形。 话虽如此,我遇到了许多解决方案,下面列出了所有这些解决方案: 基于当前用户的位置进行渲染-基本上不管用户在世界上的方向如何,都围绕用户绘制一个正方形。这也不是我想要的,因为您仍在渲染用户看不到的空间。 根据用户的方向和位置进行渲染-我找到了一个公式来检索一个三角形,该三角形应该具有应该绘制的高度图像素,但是事实证明这非常困难。 将地形分为多个块并渲染最接近用户的块-效率仍然不高,因为您仍在渲染人们看不到的块。而且它很费力,因为那时我必须将高度图分成几部分,而可伸缩性成为一个大问题。 在尝试了这些解决方案之后,我对如何做的想法一无所知。在人们告诉我执行这些复杂算法的地方,我已经收到了一些答案,但是我什至不知道该如何执行这些算法。 因此,基本上,我要求一种简单,直接的方法来以最高效率在XNA中渲染巨大的地形。 总的来说,我对游戏开发比较陌生,但是如果它看起来很有希望,我愿意研究。 更新1:研究了geoclipmapping方法后,我开始使用它进行编码。我完成了所有的数学运算,然后游戏开始运行。但是,它效率极低-对我而言,这可能是不好的编码。它以2FPS的速度运行,并使用了我CPU的整个核心。我将尝试改进代码,但我想需要更多帮助,因此这里是 Terrain manager类的代码的Pastebin。如果可以提高效率,我将在稍后发布更多结果。
10 c#  xna 

2
如何制作独立于分辨率的系统?
我正在对此空白。我当然可以将东西固定在边缘上,这将使我的UI分辨率独立...直到它变化太大以致图形太小。如何在需要时适当缩放?缩放时如何保持图形正确比例?如果分辨率与16:10的比例不同,我不希望它们拉伸。 是否有一种经过验证的真实方法?由于此问题,视频播放器显示黑色边框,这是否可以适当解决?
10 xna  resolution 

3
在XNA Framework上构建的等距游戏有哪些重要且有用的资源?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 我目前正在使用Microsoft XNA Framework开发等距游戏。我正在寻找可用于使该项目成功完成的资源,例如等距引擎,物理引擎,子画面引擎(用于等距游戏),事件处理程序等。 任何投入将不胜感激。

3
组件实体系统-更新和呼叫订单
为了使组件能够更新每一帧(并使此功能不包含在不需要的组件中),我想到了制作一个UpdateComponent组件的想法。诸如MovableComponent(保持速度)的其他组件将从IUpdatable抽象类继承。这迫使MovableComponent实现一个Update(gametime dt)方法,而另一个RegisterWithUpdater()实现提供UpdateComponent了指向的指针MovableComponent。许多组件可以执行此操作,然后UpdateComponent可以调用其所有Update(gametime dt)方法,而不必关心它们是谁或什么。 我的问题是: 这看起来像是正常的东西还是任何人使用的东西?我在这个问题上找不到任何东西。 我该如何维护物理等组件的顺序,然后更改位置?这有必要吗? 还有什么其他方法可以确保应处理的每一帧实际上都得到处理? 编辑 我想我将考虑如何为实体管理器提供可更新的类型列表。然后,该类型的所有组件都可以更新而不是针对每个实体进行管理(无论如何,它们只是我系统中的索引)。 仍然。我的问题对我仍然有效。我不知道这是否是理性/正常的,还是其他人倾向于这样做。 另外,失眠症患者也很棒! /编辑 为前面的示例精简代码: class IUpdatable { public: virtual void Update(float dt) = 0; protected: virtual void RegisterAsUpdatable() = 0; }; class Component { ... }; class MovableComponent: public Component, public IUpdatable { public: ... virtual void Update(float dt); private: ... …

2
在类似《魔兽争霸3》的游戏中寻找障碍物
考虑在基于图块的地图上进行A *搜索。直接的代码是:如果该单元格中有一个单元,则该单元不可访问,可以。 但是存在地图分辨率问题。当我研究《魔兽争霸3》时,那里的怪物和建筑物确实具有不同的半径,并且您可以走得很近,这更像是基于矢量的,这是如何实现的? 另外,将移动障碍物碰撞检测与路径查找算法(例如Warcraft 3)结合起来的标准解决方案是什么?



9
如何在游戏中实现时间旅行?
我想知道如何在游戏中实现时间旅行。没什么超级复杂的,只是像Braid中的时间倒转一样,用户可以将倒带/快进时间缩短30秒或类似时间。 我在网上搜索了很多内容,但结果通常是指使用时间,例如“ 3:00”或计时器等。 我唯一想到的是使用2个数组,一个数组用于播放器的x位置,另一个数组用于播放器的y位置,然后迭代这些数组并将角色倒带/快进时间放置在该位置。那行得通吗?如果可行,阵列必须有多大,我应该多久存储一次玩家的x和y?如果不起作用,我还能尝试什么? 提前致谢!

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.