游戏开发

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

3
如何使2D游戏分辨率独立?
我正在开发一个简单的2D游戏。我已经完成了手机版本。 但是,我的老板希望游戏能够在他的RT上运行。我正在执行“转换”,但是我的按钮放在错误的位置,因为我对屏幕尺寸进行了硬编码,如下所示: texture = game.Content.Load<Texture2D>("StartScreen"); mainFrame = new Rectangle(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height); // button definitions startbrect = new Rectangle(300, 258, 88, 88); startbtext = game.Content.Load<Texture2D>("bplay"); 在此示例中,mainframe可以,但startbrect不是,因为我定义了与Windows Phone屏幕匹配的尺寸。当所有Windows 8手机的屏幕都不同时,如何处理响应式设计?是否有公式或宏可以计算出每次合适的尺寸?
10 c#  2d  resolution 

2
如何在libgdx中实现按程序生成的图块?
我正在libgdx中创建一个简单的自上而下的Zelda式游戏,我想实现程序生成的基于图块的地牢,类似于此。 Libgdx确实有一个名为TiledMap的类,这似乎可以满足我的需求,但是官方文档之外的文档显示TiledMaps只能与.tmx文件(即预先设计的地图)一起使用。我做了很多谷歌搜索都无济于事,所以我在这里要求最后的希望是希望有人对使用libgdx进行动态生成的瓦片地图有经验。 编辑:能否将StaticTiledMapTiles与上面链接到的教程结合使用以实现我的目标? 谢谢!

6
为什么在塔防游戏的每个阶段都会产生“波澜”?
例如,在《植物大战僵尸》中,僵尸成波状出现。如果我记得,总是至少有两次浪潮。第一个波及较容易的波,然后当您达到90%的阶段时,将出现一个“更短的波”,该波更短,更硬,并且一堆僵尸同时出现。 我的问题是,当您从一个波浪更改为另一个波浪时,为什么游戏会决定宣布?如果他们愿意的话,他们可以让关卡从头到尾进行升级,而无需这样做。 出于某种原因,这是否会使游戏变得更加有趣?在哪里可以了解有关此技术的更多信息(例如:它有名称)吗?

3
我可以从A跳到B吗?
我正在为侧滑车制作一些基本的AI,并且我需要知道AI单元是否可以仅通过跳跃就可以从A点到达B点。 我的角色的飞行轨迹有点用处不大,因为他们可以在空中施加力量(例如在Jazz Jackrabbit 2中),因此与经典弹丸的轨迹不同: 投掷或发射的弹丸将采取(...)没有推进力的路径。 ……我想我的问题更多是关于带有推进力的弹丸(例如火箭)。 为了说明这一点,这是我跳并不断按下“左键”时飞行曲线的样子(在左端看起来有所不同,这是我在空中进行一些操作的地方): 飞行期间施加的力始终平行于X轴,因此,如果我按住“左”,则为F =(-f,0);如果我按住“右” ,则为F =(f,0)。 他的动作非常像跳台滑雪者: 因此,它与经典的抛物线轨迹有很大不同(来源:Wikipedia): 更困难的是,我正在模拟简单的空气阻力,因此我的角色只能加速到某个最大速度值。 这是通过在相反的方向施加较小的力来完成的: b2Vec2 vel = body->GetLinearVelocity(); float speed = vel.Normalize(); //normalizes vector and returns length body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() ); AIR_RESISTANCE_MULT是一个常数,在我的情况下等于0.1。 假设我的角色是一个非常小的点。 而且我没有考虑障碍,所以我的问题是这样的... 在给定初始速度V的情况下,如何确定(至少可靠地猜测)我在跳跃时应用于角色的脉冲J =(0,-j),重力G =(0,g),力F =(+ -f ,0)如果我们真的决定考虑空气阻力 (这是可选的) ,那么在飞行和AIR_RESISTANCE_MULT期间会持续应用(这是可选的),是否某个点位于我的角色将采用的路径绘制的曲线下方? 我实际上不知道从哪里开始计算,实际上,我不一定对确切的答案感兴趣。良好的破解/逼真度将非常棒,因为AI绝对不需要完美运行。 …

2
有哪些方法可以对地形进行纹理映射?
我正在与XNA一起开发3D游戏,并且正在努力营造一个适当而良好的环境。实际上,我遵循了一个教程来根据高度图创建地形。要对其进行纹理处理,我只需在其上应用草纹理并将其平铺多次。 但是我想要做的是具有真实逼真的纹理,而且还可以自动生成它(例如,如果我想使用Perlin噪声生成地形然后对其进行纹理化)。 我已经学习了多重纹理,如何为不同的纹理加载具有不同颜色的地图文件,但是我认为这并不是真正有效的方法,例如,对于悬崖或非常陡峭的区域,由于它是从地面观看的,因此会严重地平铺纹理最佳。(此外,我不知道该如何绘制道路或泥泞道路。) 我正在寻找一种有效的解决方案,以对过程生成的地形进行逼真的纹理映射。

3
我应该如何用代码为经济型游戏建模?
我想创建一个基于古代文明的经济游戏。我不确定如何设计。如果我正在开发一个较小的游戏,例如《太空侵略者》的副本,那么构造这样的游戏就不会有问题: 主控制类 图形类 玩家等级 敌人阶级 我不知道如何为大型项目(例如经济游戏)做到这一点。我是否创建一个包含许多城镇的国家/地区类别?城镇是否包含很多建筑类别,大多数包含人口类别?我是否会开设可供玩家绕行的寻径课程?

2
如何有效地确定基于3D体素的房间是否密封
我一直无法有效地确定大型房间是否封闭在基于体素的3D房间中,因此遇到了一些问题。我正在尽最大努力在不寻求帮助的情况下解决问题,但还没有尽力放弃,所以我在寻求帮助。 为了澄清起见,密封是房间内没有孔。有氧气密封器,用于检查房间是否密封,并根据氧气输入水平进行密封。 现在,这就是我的操作方式: 从封口砖上方的块开始(通风口在封口的顶面上),递归遍历所有6个相邻方向 如果相邻的图块是完整的非真空图块,请继续执行循环 如果相邻的块未满,或者是真空块,则递归检查其相邻块是否存在。 每次检查图块时,递减计数器 如果计数为零,则最后一个块与真空砖相邻,则返回该区域未密封 如果计数为零,并且最后一个块不是真空块,或者递归循环在计数器为零之前结束(没有真空块),则该区域将被密封 如果该区域未被密封,请进行一些更改以再次运行循环: 检查相邻块中的“透气”砖块而不是真空砖块 代替使用减量计数器,直到发现没有相邻的“透气空气”砖块为止。 循环完成后,将每个选中的块设置为真空砖。 这是我正在使用的代码:http : //pastebin.com/NimyKncC 问题: 我每3秒运行一次此检查,有时一个封闭程序必须循环遍历数百个块,并且在一个拥有很多氧气封闭程序的广阔世界中,每隔几秒钟的这些多个递归循环在CPU上可能很难。 我想知道是否有人在优化方面有更多经验可以帮助我,或者至少可以指出正确的方向。谢谢你
10 java  voxels  recursion 

1
通过计算着色器与管道着色器实现算法
随着DirectX和OpenGL的计算着色器的可用性,现在可以实现许多算法而无需经过光栅化管道,而是可以在GPU上使用通用计算来解决该问题。 对于某些算法,这似乎已成为直观的规范解决方案,因为它们本质上不是基于栅格化的,而基于栅格化的着色器似乎是利用GPU功率的一种解决方法(简单的示例:创建噪声纹理。此处无需对四边形进行栅格化)。 给定一种可以双向实现的算法,与使用计算着色器相比,使用常规着色器是否有一般(潜在)的性能优势?我们是否应该注意一些缺点(例如,在运行时从计算着色器切换到计算着色器是否存在某种异常的开销)? 在两者之间进行选择时,也许还会考虑其他优点或缺点吗?

2
UDP非阻塞还是单独的线程来接收?
我正在创建一个多人游戏(适用于64位以下的玩家)。我已经决定为网络循环设置一个单独的线程,但是我想知道是否最好创建一个额外的线程来接收UDP或将接收套接字设置为非阻塞(没有额外的线程)。 还是使用其他方法(例如异步套接字)更好?始终欢迎更好的方法!

1
如何在RPG中平衡经验获取
我目前正在开发一款具有经典经验值和升级机制的RPG游戏。玩家杀死怪物,获得经验值,并在它们收集足够多并变得更强时升级。 如何平衡达到每个等级所需的Exp点数和每个等级上每个怪物授予的Exp数?

4
是什么使游戏音效“好”?
我正在做一个小游戏,并且找到了一些我想使用的免费音效。 问题是我无法在游戏中获得音效“属于”的声音。我不知道该寻找什么可以使音效与我的其他游戏风格保持一致。 我对影响音频与图形的啮合有一些想法。例如,我觉得对于我的图形样式来说,当前的SFX I可能过于“逼真”,这很像卡通。此外,对于各种SFX应该达到的音量是否有黄金标准?(例如,我认为脚步声或其他常见声音应该几乎听不见,而敌人的死亡或“大事”应该更大声)。 我发现了有关图形的类似问题,我在寻找类似的声音效果响应。

1
多灯快速照明
如何实现多灯快速照明? 我不想束缚玩家,他可以放置无限数量,并且可以在关卡中重叠(点)灯。 问题在于,包含动态循环(用于计算光照)所必需的着色器往往非常慢。 我的想法是,如果有可能在编译时编译一个着色器n次,其中n是光照数量。如果在编译时知道数字n,则可以自动展开循环。是否可以仅使用不同数量的灯光来生成同一着色器的n个版本? 然后,在运行时,我可以决定将哪个着色器用于关卡的哪个部分。

3
在二维平铺游戏中寻找实体的可能移动
我在为此提出一个特定的搜索词时遇到了问题,但是如何在基于2D回合的策略游戏(即FF:战术,火焰纹章,进阶战争)中寻找可能的动作。 在这一点上,我没有太多考虑地形(甚至碰撞)的问题。我只是想知道我可以使用哪种算法来找出X实体可以移动5个图块并比其攻击2个更远的图块。 我知道我可以使用Dijkstra之类的东西来找到两点之间的距离。一种可能的实现方式是从玩家位置开始,然后从那里分支,直到Dijkstra返回的距离大于移动次数。 只是想知道是否有人可以指出我正确的方向(即算法名称,技术,文章等)。

2
下降块和复杂形状
我目前有一个简单的类似Tetris的游戏,遇到了我无法解决的问题。 与俄罗斯方块中有一个单独的下降形状不同,我有多个可能需要互锁的形状需要下降;我需要计算他们的最终职位。考虑以下: 要计算绿色形状的最终位置,我只需向下扫描每个正方形,直到碰到另一个正方形或板的边缘。完成 对于多种简单形状,我会按照自己的方式进行开发。因此,发现红色不需要移动,橙色下降1,绿色下降3。完成 我不知道如何对待互锁的绿色和红色形状。使用#2的逻辑,我们最终会“卡住”漂浮在空中。如果我向下扫描以获取绿色形状,则会遇到红色,因此不会移动,反之亦然。解决方案可能是将两种形状视为一种。 与#3类似,在这种情况下,我也可以通过将对象视为一个对象而成功。 与#3和#4不同,我无法将形状视为一个形状,因为橙色形状最终会浮动一个正方形太高... 问题6的另一种变化。 可能还有其他情况,使我有许多形状在越来越复杂的情况下交织在一起,但是我认为以上内容涵盖了问题的最基本部分。 我觉得我还没有遇到/想过一个优雅的解决方案,并且非常感谢您提供任何见解,想法或资源。 解 根据下面的@ user35958的答案,我想出的解决方案确实很优雅,我创建了以下递归函数(伪代码) function stop(square1, square2){ // Skip if we're already stopped if(square1.stopped){ return; } // Are we comparing squares? if(!square2){ // We are NOT comparing squares, simply stop. square1.stopped = true; } else { // Stop IF // square1 …

1
我可以在游戏中使用Playstation控制器按钮图标吗?
我目前正在开发一款将在PC上发布并带有控制器支持的游戏,并且我正在尝试寻找一种方法来最好地表示游戏中的控制器图标。 我假设我不能先没有某种形式的许可就直接在游戏中使用Playstation或Xbox控制器图标(对吗?)。 那么,如何在PC游戏中为控制器传达“按X进行交互”之类的最佳方式呢?

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.