游戏开发

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

7
汽车游戏中的变速箱实现
我正在尝试通过手动换档创建一个简单的汽车游戏。但是,我在实施换档时遇到了一些麻烦。 这是我当前的“汽车”代码: int gear = 1; // Current gear, initially the 1st int gearCount = 5; // Total no. of gears int speed = 0; // Speed (km/h), initially 0 int[] maxSpeedsPerGear = new int[] { 40, // First gear max. speed at max. RPM 70, // Second gear max. …
23 simulations  car 


3
存储游戏范围变量的最佳方法
我有一个选项屏幕来处理诸如难度,分辨率,全屏等内容,但是我正在努力寻找在运行时存储/获取这些变量的“最佳”方法。 当前,我实现了一个Constants包含所有GameOption枚举的类,但是如何为所有这些选项选择默认值?另外,如何获取当前选择的枚举? 具体来说,关于分辨率,我决定存储这些值,但是我不确定如何获取默认值或当前存储的值。任何方向都很好;谢谢!:) namespace V1.test.RPG { public class GameOptions { public enum Difficulty { EASY, MEDIUM, HARD } public enum Sound { ON, QUIET, OFF } public enum Music { ON, QUIET, OFF } public enum ResolutionWidth { SMALL = 1280, MEDIUM = 1366, LARGE = 1920, WIDESCREEN = 2560 …
23 c#  2d 

11
如何使用户友好的极坐标绕圆运动?
我正在做一个2D游戏,您可以用船降落在行星上,并且可以退出船并四处走动。 这些行星非常小(有时会想到约350像素半径),并且是从侧面看的。因此,您可以轻松地在屏幕上大致看到整个星球。 这可能有点令人困惑,所以这是一张图片: 我使用A和D键分别逆时针和顺时针移动。问题在于,如果您位于行星的“顶部”(上半部分),这是有道理的:A向左移动,D向右移动。但是,如果您位于行星的“底部”(底部一半),则A向右移动,D向左移动。 关于如何使它变得更加用户友好的任何想法?

1
如果不应用Bloom,HDR渲染是否有任何好处?
目前,我在游戏中使用基于图像的光源进行环境照明。我对天空立方体贴图进行采样,以获取漫反射和镜面照明。目前,我使用HDR渲染管道-天空盒使用16位存储空间。我绘制了一个16位的rendertarget,然后最后使用tonemapping运算符将值缩放到0.0-1.0范围内以绘制到后缓冲区。 最近我注意到,当我删除Bloom后期处理器时,我的大多数渲染管道基本上变得毫无意义。较高的动态范围值实际上什么也没做-在后期处理的最后阶段,它们只是被处理成较低的动态范围值。 我说对了,我还是可以只使用低动态范围管道并在Photoshop中手动设置天空盒的色调吗?这将使管道更加简单。除了Bloom之外,我是否还有其他原因想要HDR数据?
23 skybox  hdr 

2
实时FPS游戏向服务器发送什么?
将本地播放器的位置告诉服务器的正确方法是什么?一些文档说,最好在产生输入时发送输入。还有一些文件说,客户以固定的间隔发送其头寸。 使用发送输入方法:如果玩家按住方向键该怎么办?这意味着我需要在每个帧中将包发送到服务器。是不是太多了?鼠标输入还可以播放播放器。这是一个例子: http://www.gabrielgambetta.com/fpm_live.html 如何以固定间隔的方式发送头寸。它向服务器发送的消息太少。但这也会降低响应速度。 那么哪种方法更好呢?

1
滚动我自己的场景图
您好游戏开发SE! 我正在通过OpenGL爬行,希望创建一个简单且非常轻便的游戏引擎。我认为该项目是一种学习经验,最终可能会赚点钱,但无论哪种方式都会很有趣。 到目前为止,我已经使用GLFW获得了一些基本的I / O,一个窗口(带有一个非常漂亮的F11全屏键)以及一个OpenGL上下文。我还使用GLEW公开了其余的OpenGL扩展,因为我正在使用Windows,并且我想使用所有OpenGL 3.0+。 这使我进入了场景图。简而言之,我想自己动手。这个决定是在看完OSG并阅读了几篇有关场景图的概念如何扭曲,弯曲和折断之后做出的。一篇这样的文章描述了场景图如何发展为... 然后,我们添加了所有这些额外的东西,例如将装饰品挂在圣诞树上,除了一些装饰品是多汁的牛排,还有一些是整头活牛。 打个比方,我想要牛排,场景图应该是什么样的肉,而不必捆成一堆多余的代码或任何整头母牛。 因此,考虑到这一点,我发现自己确实想知道场景图应该是什么以及应该如何实现简单的场景图?到目前为止,这就是我所拥有的... 一棵父树,n子树或DAG,其中... 应该跟踪游戏对象的转换(位置,旋转,比例) 应该保留渲染状态以进行优化 应该提供剔除视锥范围内的对象的方法 具有以下属性... 所有节点都应视为可渲染的(即使它们不渲染),这意味着它们... 应该都具有cull(),state()和draw()方法(如果不可见,则返回0) cull()递归地在所有子节点上调用cull(),从而为整个节点和所有子节点生成一个完整的cull网格。另一种方法hasChanged()可以使所谓的静态网格物体不必在每帧中都计算出其剔除几何形状。这将起作用,如果子树中的任何节点发生了更改,则所有几何结构都将重建到根。 渲染状态将保存在一个简单的枚举中,每个节点将从该枚举中选择所需的OpenGL状态集,并且将在该节点上调用draw()之前设置该状态。这样可以进行批处理,将将给定状态集的所有节点一起呈现,然后设置下一个状态集,依此类推。 任何节点都不应直接保存几何/着色器/纹理数据,而应指向共享对象(可能由诸如资源管理器之类的单例对象管理)。 场景图应该能够引用其他场景图(也许使用代理节点),以允许像的情况下此,因此允许复杂的多网眼模型/对象周围的场景图被复制而不增加一吨的数据。 我希望获得有关当前设计的一些有价值的反馈。是否缺少功能?有没有更好的方法/设计模式?我是否错过了一些更简单的3D游戏必须包含在此设计中的更大概念?等等。 谢谢,-Cody
23 opengl  3d  scene-graph 

1
哪种方法最适合渲染星球?
我目前正在研究论文,它是渲染行星大小地形的引擎。 我仍在完成研究,并且遇到了很多与此主题有关的问题,但问题是我无法确定应该使用哪种详细程度(LOD)方法。 我了解Ulrich的geomipmapping,几何剪贴图(GPU)和分块LOD,它们在较大的地形上都能很好地工作,并且可以用于渲染多维数据集的6个面,然后通过此方法 “球形化”多维数据集,并且我了解如何实现所有这些在GPU上使用C ++ / OpenGL / GLSL的方法(使用ROAM之类的方法或任何其他不使用多维数据集的方法都无法使用,因为纹理化是很麻烦的)。另外我最近也在这里学习了使用镶嵌细分着色器渲染地形的教程。 因此,我没有时间去实现所有方法,而是看看哪种方法最合适,更适合于行星尺度,我在这里询问是否有人进行了这种比较,并帮助我确定了哪种方法我应该实现和使用吗(我的导师有点疯狂,想让我用二十面体做某事,但是除非使用ROAM,否则我无法理解该方法) 无论如何,如果您能帮助我做出决定或有其他建议或方法,我将不胜感激。一个条件是该方法应该能够实现GPU端(至少是其中的大部分),以防止CPU瓶颈。 另一个要求是,当我在地形中获取大量细节时,我知道关于浮子精度的数值问题,我不知道如何解决,我在论坛上阅读了一个解决方案,但无法理解如何解决。实现,我失去了对该线程的跟踪,我想知道如何解决这个精度问题。 我目前正在阅读有关一些矩阵转换的信息,以解决浮点精度,z对抗问题,使用动态z值进行视锥剔除以及大块的数据表示(使用具有浮点的补丁空间及其在世界坐标中的位置为double)我认为我可以轻松解决精度问题。我仍然需要在LOD方法与您的意见和建议之间进行比较,以决定哪种方法更适合该项目。考虑实施难度,视觉质量,性能,我想要最好的。 我忘了提到的是,这一代是混合的,我的意思是,我应该能够完全使用GPU(即时计算的高度)和/或使用基本的高度图图像渲染地球,并使用GPU(顶点)添加细节着色器)。纹理化是我会麻烦的一个侧面部分,现在我很高兴只使用取决于高度的颜色,或者使用片段着色器上生成的某种噪声纹理。

11
如何为具有重生的游戏添加令人满意的目标和/或获胜条件?
我正在为游戏添加目标。 https://www.youtube.com/watch?v=O3uxaxy5_tc 上面的视频是我在游戏中制作的最新视频。如您所见,该游戏具有: 对手进行战斗(在视频NPC对手中,但多人对手很快就会出现) 捕获目标(塔楼)。 变异。也就是说,玩家可以选择不同的技能来进行不同的设置。 大型且多样化的地图(请注意,可以轻松实现多张地图,但这不是现在的重点)。 由于玩家死后会立即重生,因此需要不断行动。 从表面上看,这看起来不错。似乎有游戏所需的一切。但是,我对获胜条件和总体目标存在疑问。让我解释: 地图分为正方形。每个塔控制一个正方形。要接管一座塔,您必须将其摧毁-一旦被“摧毁”,塔将更换团队并恢复其所有生命值。 问题是球队开始失利。假设地图是这样的: 忽略图片中的红线) 由于这些团队仅在自己控制的区域内重生,因此这意味着蓝色团队的重生区域要比红色团队小得多。这意味着蓝队总是在他们所捍卫的领土上,但是红队大多在很远的地方产卵。 使用Photoshop更好地可视化问题: 用黑点代表红队的成员,用白点代表蓝队的成员(在此示例中,两个团队都有10名成员),您可以清楚地看到蓝队永远无法被击败。红色团队中的任何成员都只是团伙,不知所措,然后真正远离战斗而重生。是的,在该示例中,理论上可以选择其中一个或两个领土。但是问题变得更糟了。想象一下这个例子,如果蓝队只有一个地区。 顺便说一句,这不仅仅是理论上的。实际上,我已经离开服务器和AI坦克作战了3个多小时,没有团队能够获胜。 所以总结一下问题: 当一个团队控制的领土较少时,他们拥有的每个领土中会有更多的该团队成员,因此,对立团队永远不可能获胜。 现在,让我们谈谈我尝试过并拒绝的可能解决方案: 一种解决方案是完全删除重生。这意味着: 占领领土不是问题,因为您不会攻击许多新产生的对手。 取胜不会那么困难。 然而, 就像《战车世界》一样,这会鼓励用户谨慎玩游戏。 如果用户死亡,他们要么在他们面前等待很长的无聊时间,要么不得不退出并加入新的战斗。 我还可以使每座防御塔都能给团队带来更大的力量(例如,越多的防御塔就越有健康)。这个: 从技术上确实解决了问题。一个玩家的团队可以压倒另一个团队。 然而: 战斗太快了。一旦一支球队获得一两座塔,那么“滑坡胜利”就太过分了,在这种情况下,团队获得的额外力量可以使对手消灭对手。 输给失败的球队并没有多大乐趣,能够以少得多的投篮命中获胜者而几乎无法伤害他们。 我还可以将塔楼简单地永久摧毁,而不是让它们接管其他团队。但是,这将创建一个永久相等的匹配项。 玩家从其控制区域行进相同的距离,在无人区中进行相等的战斗,并且永远无法到达对方的塔上摧毁它们。无论如何,这也是原始问题的牺牲品,因为有大量玩家刚刚在这个小区域内重生,保护了所有塔楼,而敌方玩家则不得不穿越整个地图来攻击它们。这使问题变得更糟。 我可以限制重生,或者有一个重生计时器。但是显然 玩家不想坐在那里。 它打断了必须等待的动作。 我可以离开游戏了!我可以增加商店和购买技巧的进度。然而, 我是独立开发者。对于我来说,多人游戏商店系统,技能以及存储玩家数据的工作量很大。对于那些意义不大或对于整个游戏来说令人满意的事情,这是一项巨大的工作。 简而言之,我对此做了很多实验,并对此进行了很多思考,但是似乎没有明确的答案。 而且,即使一个团队拿下了所有的塔并赢得了胜利,那又将如何呢?地图刚刚重置,战斗又开始了吗?这将是重复的,无聊的。 简而言之: 我的游戏需要一个客观的系统来实现,它可以使一个团队获胜,但又不能使胜利毫无价值,并且可以使两个团队进行漫长而愉快的战斗。 编辑:我忘了提及自己领土内的球员获得了健康恢复,这意味着自己领土内的防守者甚至具有更多优势。

6
如何优化距离功能?
在开发一款相当简单的类似RTS的游戏时,我注意到我的距离计算正在影响性能。 在任何时候,都会进行距离检查,以了解一个单位是否在其目标范围内,射弹是否已达到其目标,玩家是否跑过了皮卡,常规碰撞等。列表继续进行,并检查两点之间的距离经常使用。 我的问题就是这个。我想知道除了常规的sqrt(x * x + y * y)方法以外,游戏开发人员还有哪些替代方法可以检查距离,如果我们每帧执行数千次,这将非常耗时。 我想指出的是,我了解了曼哈顿的距离和平方的距离比较(通过跳过sqrt瓶颈)。还要别的吗?

2
如何在Blender中合并两个对象
我做了什么 我使用“细分曲面”修改器创建了一个Cube对象,以便为spehere建模。 我创建了一个长方体,看起来像一个有角度的长棒。 我想做的事 我想合并这两个对象。因此,我只想拥有一个对象-一个(立方体锁定像)球体,并且在其一侧伸出一个接力棒。它看起来应该有点像头,底部附有喉咙。 我想怎么做 我不想应用“细分曲面”修改器 -我希望以后可以很好地编辑对象。 我不想在接力棒和球体之间留任何空间。它应该是连贯的。 应该没有任何坏作法。一切都应该很好。 我的问题 我怎样才能很好地合并这两个对象?谢谢。-我希望我想描述的很清楚。
23 3d  models  blender  3d-meshes 

2
我的游戏即将完成!现在我该怎么做?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我有一个即将完成并准备启动的HTML5 /画布游戏。这是一款2D游戏,您可以在其中探索并破坏程序生成的景观,制作物品和结构以求生存。我必须完成“结局”并修复一些错误,但是游戏已经为玩家准备好了。 该游戏将免费在网络上播放,我计划开始针对iOS和Mac App Store推出工作版本。即使在游戏启动后,我也将继续为其添加内容。 有人可以推荐我在启动游戏前应该做的事情吗?谢谢!

9
老板之战有多重要?
当前形式的老板大战有什么意义?对于大多数游戏,老板遇到的情况通常是: 这是一个难题,您必须找出老板的弱点何时暴露出来。 敌人只有更多的生命,可以重击,或者受到特殊攻击。 脚本式的战斗,您必须在正确的时间按下正确的按钮。 一项测试,了解您已经了解了该阶段试图教给您的知识。(即一种能力。)等等。 以后会变得常见的敌人。 在这种情况下,他们的战斗通常比正常战斗更长。有些游戏中有有趣的老板,这些老板实际上对故事有意义,但仍然没有什么意义。 为什么老板打架在游戏中如此盛行?有没有研究表明老板打架的重要性?从设计的角度来看,它们在游戏中实现什么功能?

5
如何在libgdx中制作屏幕HUD?
我是libgdx的新手,我发现自己被最简单的事情所困扰。似乎希望我以特定方式进行操作,但是文档不会告诉我那是什么。 我想制作一个非常简单的2D游戏,玩家可以控制飞船。鼠标滚轮将放大和缩小,并且信息和控件将显示在屏幕上。 但我似乎无法使鼠标滚轮无法缩放UI。我已经尝试过介于两者之间的投影矩阵 这是我的(当前)代码: public class PlayStage extends Stage { ... public void draw() { // tell the camera to update its matrices. camera.update(); // tell the SpriteBatch to render in the // coordinate system specified by the camera. spriteBatch.setProjectionMatrix(camera.combined); spriteBatch.begin(); aButton.draw(spriteBatch, 1F); playerShip.draw(spriteBatch, 1F); spriteBatch.end(); } } camera.zoom通过滚动(int量)设置。 我已经尝试了十多种变体,主题是在绘制按钮之后但在飞船之前更改相机的投影矩阵,但是无论我做什么,按钮和飞船都会发生相同的事情。所以: …
23 libgdx 

2
我通常一次可以绑定多少个纹理?
我正在开发一个游戏引擎,并且只能在现代(Shader Model 4+)硬件上工作。我认为,当我完成此工作时,这将不是一个不合理的要求。 我的问题是:现代图形卡上一次可以绑定多少个纹理?16就足够了。我可以期望大多数现代图形卡支持这种数量的纹理吗? 我的GTX 460似乎支持32,但是我不知道这是否代表大多数现代视频卡。

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.