游戏开发

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

3
框架独立运动
我还阅读了有关运动的其他两个主题: 基于时间的运动与基于帧频的运动?, 什么时候应该使用固定或可变时间步长? 但是我认为我对框架独立运动缺乏基本的了解,因为我不了解这些线程在说什么。 我跟着lazyfoo的SDL教程一起学习了框架无关的课程。http://lazyfoo.net/SDL_tutorials/lesson32/index.php 我不确定代码的运动部分在说什么,但是我想是这样的(如果我错了,请纠正我):为了使帧独立运动,我们需要找出一个物体有多远(例如精灵)在特定时间范围内移动,例如1秒。如果点以每秒200像素的速度移动,那么我需要通过将200 pps乘以1/1000秒来计算该点在该秒内移动了多少。 那正确吗?本课说: “速度(以每秒像素数为单位*自上一帧以来的时间,以秒为单位。因此,如果程序以每秒200帧的速度运行:200 pps * 1/200秒= 1像素”) 但是...我以为我们将200 pps乘以1/1000秒。每秒帧数是什么业务? 如果有人可以给我一些关于框架独立运动如何工作的详细解释,我将不胜感激。 谢谢。 加成: SDL_Rect posRect; posRect.x = 0; posRect.y = 0; float y, yVel; y = 0; yVel = 0; Uint32 startTicks = SDL_GetTicks(); bool quit = false; SDL_Event gEvent; while ( quit == false …
11 frame-rate 

2
如何在2.5D世界中同时使用深度测试和纹理透明度?
注意:我已经找到了答案(我将在这个问题之后发布)-我只是想知道我是否做对了,或者是否有更好的方法。 我正在使用OpenGL ES(JOGL)制作“ 2.5D”等距游戏。“ 2.5D”是指世界是3D,但使用2D等距图块进行渲染。 我必须解决的原始问题是必须按顺序(从后到前)渲染纹理,以便图块正确重叠以产生合适的效果。经过一番阅读,我很快意识到这是2D的“老帽子”方法。由于玩家可以修改3D世界(因此东西可以出现在3D空间中的任何地方),因此很难有效地做到这一点-因此,我利用深度缓冲区似乎是合乎逻辑的。这意味着我不必担心以正确的顺序渲染内容。 但是,我遇到了一个问题。如果将GL_DEPTH_TEST和GL_BLEND一起使用,则会创建一种效果,在将对象与背景混合之前,先按z顺序对其进行“排序”(这意味着您应该在透明度应达到的地方获得一种奇怪的重叠)。 这是一些应该说明问题的伪代码(顺便说一句,我在Android上使用libgdx)。 create() { // ... // some other code here // ... Gdx.gl.glEnable(GL10.GL_DEPTH_TEST); Gdx.gl.glEnable(GL10.GL_BLEND); } render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); // ... // bind texture and create vertices // ... } 所以问题是:如何解决透明度重叠问题?

8
物理完美(或附近)的3d声音引擎[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我是游戏编程的新手,尽管我在控制台/网络开发方面有多年的经验。我的问题不仅仅在于找不到所需的内容,还在于我没有真正执行成功搜索的术语。 我正在寻找一个非常注重声音的物理引擎。实际上,我一点也不在乎。我的意思可以通过一个例子更好地解释: 假设一个第一人称游戏。您正对着北方,周围有人向您扔笛子(请不要理会这种情况的荒谬性)。笛子在前进的过程中旋转,通过其孔发出声音。有一阵风,南下五节。 我想象一个物理引擎将能够计算出长笛的轨迹以及击中笛子后的方向。我想要的是让物理引擎从任何听众的角度计算将发出的精确声音。 是否存在这样的引擎?如果有几个,那么上面的示例哪一个最好?
11 audio 

5
使用数据库的分布式C ++游戏服务器
我的基于C ++回合的游戏服务器(使用数据库)不能抵御当前平均客户端(玩家)数量,因此我想将其扩展到多个(超过一个)数量的计算机和数据库,而所有客户端仍将保留在其中一个游戏世界(服务器必须相互通信并使用多个数据库)。 是否有一些教程/书籍/通用标准解释了如何以最佳方式做到这一点?
11 server  databases 

1
三角剖分A *(TA *)寻路算法
我需要帮助来了解Demyen在他的论文《基于有效三角剖分的寻路》(第76-81页)中描述的Triangle A *(TA *)算法。 他描述了如何使常规A *算法适用于三角剖分,甚至在到达/扩展最终节点之后也可以搜索其他可能更理想的路径。当最终节点展开时,常规A *停止,但是在三角图中使用时,这并不总是最佳路径。这正是我遇到的问题。 第78页的图5.4中说明了此问题: 我了解如何计算论文中介绍的g和h值(第80页)。 而且我认为搜索停止条件是: if (currentNode.fCost > shortestDistanceFound) { // stop break; } 其中,currentNode是从打开列表(优先级队列)中弹出的搜索节点,其f得分最低。shortestDistanceFound是到目前为止找到的最短路径的实际距离。 但是,如何从以后的搜索中排除以前找到的路径?因为如果再次进行搜索,显然会找到相同的路径。我是否要重置已关闭的列表?我需要修改某些内容,但是我不知道需要更改什么。该论文缺少伪代码,因此会有所帮助。

3
他们如何跟踪《 Left 4 Dead》中的NPC?
他们如何跟踪《 Left 4 Dead》中的NPC僵尸? 我说的是NPC,它们只是走进墙壁或漫无目的地徘徊。即使玩家看不到它们,它们也在那里(例如在房间内或在门后)。假设走廊和室内大约有10个左右的僵尸。游戏是否将所有这些僵尸都保留在列表中并通过向其发出命令进行迭代?它们只是在用户处于特定半径内或到达特定位置时才产生吗? 假设您将4个单位(由玩家控制)放置在整个地图上完全不同的地方。假设您没有被拥挤,那么您还没有杀死任何这些无目标的NPC。游戏会记录总共10 x 4 = 40个僵尸吗? 还是我的理解力完全消失了? 我问的原因是我是否要在移动设备上实现类似的功能,所以跟踪40个或更多的NPC可能不是一个好主意。
11 game-design  ai 

6
如何确保老虎机的支付比例合适?
我对老虎机的随机数生成器,转轮停位计算以及如何为用户提供良好的获胜机会进行了大量研究。 我不知道的是如何正确确保该机器的付款率达到(假设)95%。 因此,我在其上设置了22个空格。充满16个不同的符号。 当我得到随机数时,将mod除以64并得到余数,我跳到循环表上,查看虚拟挡块与卷轴位置的关系。 既然我已经知道如何停止转轴,那么我是否可以确保支付比率正确?他们投入的每一美元,如何确保机器支付0.95美分? 感谢您的想法。 我正在使用动作脚本(如果可以解决语言问题),但是总的来说,我只是在寻找理论。 编辑:只有在他们可以购买更多代币来玩更多游戏的情况下,才涉及真钱。如果他们要实际击中任何一条支付线,就不会有实际的钱支付给该人。

3
TRON:游戏AI算法?
Lightcycles或其他类似的名称。 给定一个表示游戏地图的2d数组,其中每个元素可以为0或1(0表示空白,1表示填充空间),那么TRON敌人AI的算法是什么?
11 2d  ai 

2
在OpenGL中,如何发现深度缓冲区的深度范围?
我正在为iOS开发GL多遍渲染应用程序。第一遍渲染到深度缓冲区纹理。第二遍使用深度缓冲区中的值来控制片段着色器的应用。我想将深度缓冲区中的值重新缩放为有用的值,但是在执行此操作之前,我需要知道深度缓冲区值的深度值范围。我该怎么做呢?

7
低耦合和紧密内聚
当然这要视情况而定。但是,当较低级别的对象或系统与较高级别的系统通信时,是否应首选回调或事件而不是将指针指向较高级别的对象? 例如,我们有一个world具有成员变量的类vector<monster> monsters。当monster类与进行通信时world,我应该更喜欢使用回调函数,还是应该在world类内部具有指向该类的指针monster?

7
游戏中绘画与逻辑的分离
我是一个刚刚开始玩游戏开发的开发人员。我是.NET专家,所以我迷上了XNA,现在正在为iPhone使用Cocos2d。我的问题确实更笼统。 假设我正在构建一个简单的Pong游戏。我要上Ball一Paddle堂课。来自商业世界的发展,我的第一个直觉是在这两个类中的任何一个中都没有任何绘图或输入处理代码。 //pseudo code class Ball { Vector2D position; Vector2D velocity; Color color; void Move(){} } 球类中没有任何东西可以处理输入或处理绘图。然后,我将有另一个班级,Game班级或我的班级Scene.m(在Cocos2d中)将球更新,并且在游戏循环中,它将根据需要操纵球。 事实是,在许多有关XNA和Cocos2d的教程中,我看到了这样的模式: //pseudo code class Ball : SomeUpdatableComponent { Vector2D position; Vector2D velocity; Color color; void Update(){} void Draw(){} void HandleInput(){} } 我的问题是,对吗?这是人们在游戏开发中使用的模式吗?它以某种方式与我习惯的一切背道而驰,让我的Ball类做所有事情。此外,在第二个示例中,我Ball知道如何移动,如何使用Paddle?是否Ball需要了解Paddle?在我的第一个示例中,Game该类将同时引用Ball和和Paddle,然后将这两个都发送给某个CollisionDetection管理器或其他东西,但是如果每个单独的组件自己完成所有工作,那么我该如何处理各种组件的复杂性呢?(我希望我有道理.....)

3
将敌人随机放置在二维网格上
我想将物品和敌人随机放置(或尽可能随机放置)。目前,我使用XNA的Random类来生成一个介于X的800和Y的600之间的数字。感觉就像敌人向地图顶部生成的次数多于在中间或底部生成的数。我没有为生成器添加种子,也许这是要考虑的事情。 是否描述了其他可以改善2D网格上随机敌人放置的技术?
11 xna  2d  sprites  random 

2
高效的骨骼动画
我正在考虑为RTS游戏采用骨骼动画格式(如此处提示)。屏幕上每种模型的单独代表将很小,但会有很多! 在骨骼动画(例如MD5文件)中,每个单独的顶点都可以附加到任意数量的关节上。 在GLSL中进行插值时,如何有效地支持这一点?还是引擎在CPU上做动画? 还是引擎对每个顶点的最大关节数设置了任意限制,并对那些不使用最大数量的关节调用nop乘法? 是否有游戏在类似RTS的设置中使用骨骼动画,从而证明在集成显卡上走骨头路线时我无需担心?

7
与游戏开发相关的典型面试问题是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我已经看过StackOverflow的一些示例,但是我想知道你们中的任何一个都可以显示求职面试问题的具体示例...它们在与游戏开发相关的工作上是否有所不同?

2
如何为Python程序分发本机可执行文件?
最近,我所有的工作都是使用Python(和Ruby)进行的,我爱上了这两种语言。有许多用于Python开发游戏的库,但是我看到的问题是,这些框架中有许多都没有涵盖游戏创建的“发行”方面。我想用Python(以及我需要的任何其他纯Python额外的库)编写游戏代码,并能够为主要PC平台(Windows,Mac和Linux)分发可执行文件。 有没有其他选择,或者什么是最佳组合?(也许pyglet + cx_freeze)
11 python  pyglet 

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.