游戏开发

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

2
这是适合我们的MMORPG手机游戏的架构吗?
这些天,我正在尝试为公司设计一款新的MMORPG手机游戏的体系结构。该游戏类似于黑手党战争,iMobsters或风险。基本思想是准备一支军队与您的对手(在线用户)作战。 尽管我以前曾从事过多个移动应用程序的工作,但这对我来说却是新事物。经过大量的努力,我提出了一个架构,该架构借助高级流程图进行了说明: 我们决定采用客户端-服务器模型。服务器上将有一个集中式数据库。每个客户端将拥有自己的本地数据库,该本地数据库将与服务器保持同步。该数据库用作存储不经常更改的内容(例如地图,产品,库存等)的缓存。 使用此模型后,我不确定如何解决以下问题: 同步服务器和客户端数据库的最佳方法是什么? 在将事件更新到服务器之前,是否应该将事件保存到本地数据库?如果应用由于某种原因终止,然后将更改保存到集中式数据库,该怎么办? 简单的HTTP请求是否可以达到同步目的? 如何知道当前登录的用户?(一种方法是让客户端每隔x分钟继续向服务器发送一个请求,以通知该请求处于活动状态。否则,认为客户端处于非活动状态)。 客户端验证足够吗?如果没有,如果服务器未验证某些内容,如何还原操作? 我不确定这是否是一个有效的解决方案,以及它将如何扩展。如果已经在此类应用程序上工作的人们能够分享他们的经验,这可能有助于我提出更好的建议,我将不胜感激。提前致谢。 附加信息: 客户端是在称为果酱的C ++游戏引擎中实现的。这是一个跨平台的游戏引擎,这意味着您可以在所有主要的移动操作系统上运行您的应用程序。我们当然可以实现线程化,这在我的流程图中也有说明。我打算将MySQL用于服务器,将SQLite用于客户端。 这不是回合制游戏,因此与其他玩家的互动不多。服务器将提供在线玩家列表,您可以通过单击“战斗”按钮与他们进行战斗,并在播放一些动画后宣布结果。 对于数据库同步,我想到了两种解决方案: 存储每个记录的时间戳。还应跟踪本地数据库的最新更新时间。同步时,仅选择时间戳较大的行并将其发送到本地数据库。为已删除的行保留一个isDeleted标志,以便每个删除行为都只是一个更新。但是我对性能有严重的怀疑,因为对于每个同步请求,我们都必须扫描整个数据库并查找更新的行。 另一种技术可能是保留针对用户进行的每次插入或更新的日志。当客户端应用程序要求同步时,请转到该表并找出已更新或插入了该表的哪些行。这些行成功传输到客户端后,请删除此日志。但是我想到了如果用户使用其他设备会发生什么。根据日志表,已为该用户传输了所有更新,但实际上是在另一台设备上完成的。因此,我们可能还必须跟踪设备。实施此技术比较耗时,但不确定是否会执行第一个。

1
如何使用XNA / Blender将设备添加到3D角色模型中?
我看了很多Blender教程,但是我还没有看到如何交换子模型的示例。所以我的问题是,如何在角色模型上交换设备?具体来说,我希望能够动态添加/交换XNA中角色模型所拥有的衣服和物品。理想情况下,这些项目将遵循角色模型的骨骼结构。 例如; 从XNA中的裸露角色开始,我希望角色可以握住斧头并佩戴跟随角色动画的锁子甲。我还希望能够在游戏过程中的任何时候切换此设备以获取剑道和板甲邮件。我宁愿不为每种设备组合创建模型。有什么方法可以将一个模型的骨骼(例如剑骨)和网格添加到另一模型骨骼(例如右手骨骼)? 谢谢…
14 xna-4.0  blender 

1
Voronoi的优点和缺点是什么?
我在YouTube上看过一些Voronoi粉碎视频。 您有什么经验? 时间复杂度,资源复杂度,实现难度...方面的优缺点是什么? 它会模拟真实材料会如何反应吗?
14 algorithm 

4
2D塔防-敌人的子弹
我正在尝试找到一种好的方法来解决子弹击中敌人的问题。游戏是2D塔防,塔应该发射子弹并保证击中敌人。 我尝试了这种解决方案-http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/ 提到的链接也要减去子弹的起源和敌人(矢量减法)。我试过了,但子弹刚好绕过敌人。 float diffX = enemy.position.x - position.x; float diffY = enemy.position.y - position.y; velocity.x = diffX; velocity.y = diffY; position.add(velocity.x * deltaTime, velocity.y * deltaTime); 我对向量很熟悉,但不确定要使此解决方案有效需要执行哪些步骤(向量数学运算)。

2
如何使用Painter的算法获得准确的结果?
不久前,我问如何确定一张脸何时与另一张脸重叠。建议是使用Z缓冲区。 但是,我不能在当前项目中使用Z缓冲区,因此我想使用Painter的算法。不过,我不知道何时表面在另一个表面的后面或前面。我尝试了很多方法,但是它们都在极端情况下失败,或者即使在一般情况下也失败。 这是到目前为止我尝试过的排序方法的列表: 到每个面的中点的距离 到每个面的每个顶点的平均距离 每个顶点的平均z值 最大化每个面的顶点的z值并首先绘制这些值 每个面的顶点的最低z值并绘制最后一个顶点 问题在于,人脸可能距离更近,但距离仍然更远。所有这些方法似乎都不可靠。 编辑:例如,在下面的图像中,以蓝点为中点的表面绘制在以红点为中点的表面上,因为蓝点更近。但是,这是因为红点的表面较大,而中点距离较远。带红点的表面应该涂在蓝色的表面上,因为它更近,而中点距离则相反。 Painter算法中究竟使用什么来确定绘制对象的顺序?
14 3d  algorithm  objects  face 

3
XNA和C#与360的顺序处理器
阅读了这句话之后,我觉得他们可能是对的(Xenon和CELL BE 对分支和缓存无知的代码都非常敏感),但是我听说人们也在用C#编写出色的游戏。 因此,使用XNA 不可能做任何专业的事情是真的吗?或者发布者只是错过了使XNA成为游戏开发的杀手级API的原因? 从专业上来说,我并不是说可以从中赚钱,而是从更专业的游戏中了解物理模型和动画系统,而这些模型和动画系统似乎超出了语言的范围,从而对内在函数造成了明确的障碍。如果我想为我的游戏编写一个碰撞系统或流体动力学引擎,我不认为C#会为我提供这样做的机会,因为运行时代码生成器和缺少内在函数会影响性能。 但是,许多人似乎可以在这些限制下工作,使自己的游戏成功,但似乎可以避免任何问题。除了库已经提供或由着色器处理的内容以外,我还没有注意到任何XNA游戏都能完成任何复杂的工作。是否由于C#的限制而避免了更复杂的游戏动态,还是只是人们专注于完成游戏? 老实说,我不敢相信如果没有某种面向数据的方法或一些肮脏的C#hack来使AI战争能够维持许多单位的AI,以使其比标准方法更好地运行,我想这也是我的问题之一,如何是否有人破解了C#,所以它能够做游戏程序员自然使用C ++进行的工作?
14 xna  c# 

4
在哪里可以找到游戏美术师?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 在哪里发布合适的游戏美术师来创建少量32位精灵的好地方?这是针对内部代码战争框架的,因此只需很少的工作-可能需要几个小时。 有什么建议我应该在哪里发布来找人做到这一点?
14 sprites 

4
HTML5和Canvas是否适合快速制作游戏原型?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 HTMl5是否有可用于2D游戏快速原型制作的框架和流程?

6
SIMD C ++库[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 2年前关闭。 过去,我将Visual Studio与DirectX XNA数学库一起使用。现在,我正在使用GNU编译器集合。任何人都可以通过良好的文档建议SIMD数学库?
14 c++  mathematics  simd 

5
如何计算导弹的转弯航向?
我有一枚从船上射出的导弹,它以一定角度射出,然后导弹以给定的转弯半径以弧线朝向目标转向。当我需要开始转弯以使导弹直奔目标时,如何确定弧上的点? 编辑 在发射导弹之前,我需要做的是计算并绘制飞行路径。因此,在所附示例中,运载火箭的航向为90度,目标在其后面。两种导弹均以相对于运载工具航向-45度或+ 45度的相对航向进行发射。导弹最初以已知的转弯半径转向目标。我必须计算转弯将导弹带到要直接攻击目标的转弯点。显然,如果目标处于或接近45度,则没有初始转弯,导弹只会直奔目标。 发射导弹后,地图还将在该线上显示导弹跟踪,以指示其飞行路线。 我正在做的是在模仿可运行软件的模拟器上工作。因此,在允许导弹发射之前,我需要绘制计算出的飞行路径。 在此示例中,目标位于运载火箭后面,但绘制了预先计算的路径。


4
RTS游戏AI线程
我有一个从头开始制作实时策略游戏的项目。我仍处于早期计划阶段,但是我已经进行了一些编程以了解其机制。 我知道如何编程。我对如何构造游戏类和面向计算机玩家的基于规则的(状态机)AI也有很好的想法。 我想开发一种教义,它会赋予特定单位特定的行为(但可以同时在多个单位上使用),例如侦察兵,跟随任务路线,保持位置(攻击不速之客或退缩)等 该学说仅适用于单位,因此它将具有单位的观点,而对整个地图的状况并不了解。 计算机AI将分析整个可见图,并根据另一套规则决定分配哪个单元的学说。 我正在C#和OpenGL中执行此操作。 就目前而言,在我开始主要构想之前,我还没有太多东西在测试中。我有一个游戏循环,所有游戏处理(我将其依次称为更新运动,战斗,渲染等)将发生,如果发生Application.Idle事件,则经常调用该循环。 现在,我在想。由于游戏循环中有很多事情要处理,因此计算机AI和单位应该在该循环中选择其动作还是会太慢? 如果我希望所有事物都同时存在,是否应该为计算机AI创建单独的线程?甚至每个单元都有单独的线程? 我在多线程方面没有太多经验。最好的方法是什么?
14 c#  ai  multithreading 

2
何时使用顶点数组以及何时使用VBO?
我正在尝试了解顶点数组和顶点缓冲区对象,但是我不了解以下方面的差异: 使用情况(例如地形等静态几何体,每一个帧都在变化的几何体,例如粒子系统等) 性能 便携性(旧显卡,控制台,Android或iPhone等设备等) 一些澄清?
14 opengl 

3
中点位移算法
在花了几个小时试图找出问题之后,这个问题主要是出于绝望。 如果您将视线移到上面的图片,您应该会看到我的中点位移算法算法正在(某种程度上)成功运行;产生一些连贯的噪声模式。 但是,它在图像上留下了黑色的虚线网格,我不知道为什么。我可以预见这是数学上的问题,但是我看不到它。也没有在任何在线资源中指出这是一个可能的问题;因此,对解决此错误的任何帮助将不胜感激。 unsigned char** mdp(unsigned char** base, unsigned base_n, unsigned char r) { size_t n = (2 * base_n) - 1; unsigned char** map = new unsigned char*[n]; for (unsigned i = 0; i < n; ++i) map[i] = new unsigned char[n]; // Resize // 1 0 1 // …

6
3D图形编程的数学主题
已关闭。这个问题需要更加集中。它当前不接受答案。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我了解3D图形编程需要以下数学主题。我已经在我的数学课程中开始其中一些学习。有人可以指出我的资源方向来解释它们如何应用吗?他们用来解决什么图形/游戏问题? 向量数学 矩阵数学 四元数 线性代数 据我所知,这些都是线性代数/矩阵主题。还需要其他主题吗?

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.