游戏开发

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

2
在2D游戏中实现相机/视口
将相机/视口实现到2D游戏的最实用方法是什么? 我读过,应该存储对象的世界位置而不是相对于屏幕的位置? 现在的情况: 我实现了一个简单的2D游戏,从XML文件加载对象和关卡。当前,级别XML文件如下所示: <map> <tile obj="ground" x="0" y="555" /> <tile obj="ground" x="16" y="555" /> <tile obj="ground" x="32" y="555" /> ... </map> 所有对象都有一个二维矢量“位置”,将其当前位置存储在屏幕上。 我想要的是: 图片中: 相机为800x600或640x480 块和精灵为16x16像素。 世界大小可能有所不同 坐标可能应该相对于世界而不是相对于屏幕进行标准化? 视口相对于播放器x,y的位置,并在播放器到达相机死区时移动(类似于此视频)。 我问的是伪示例/文章,但是如果您需要了解我在开发中使用的东西:SDL和C / C ++。
20 c++  2d  architecture  camera 

5
游戏技巧的技巧,以避免处理网络滞后补偿?
实施网络滞后补偿很难,如何避免呢? 也许可以使用技巧并建立游戏机制,从而将滞后视为非关键甚至是游戏的自然组成部分? 这些技术是什么,是否有使用这些技术的现有游戏(MMORPG,策略等)? 更新: 回合制游戏不需要时滞补偿,但是有趣的是可以看到实时的方法(或者仅仅是实时的印象,这是重要的部分-不应阻止用户并强迫其等待)。 我避免滞后补偿的主要原因是简单性。
20 networking  mmo  rpg  rts  lag 

8
我如何鼓励玩家在基于团队的游戏中彼此“交谈”?
为了吸引某种类型的玩家(高度社交),我想知道游戏机制要求或至少鼓励玩家进行口头交流(我假设是具有团队和私人渠道的高级文字聊天系统) ,甚至聊天机器人)之间的交流,如果他们想在游戏中成为团队的成功者,或者至少获得最好的结果。 我对任何需要讨论的东西都感兴趣。在“比赛”之前,之中或之后。 如果重要的话,那将是(主要是)团队对环境的游戏,但也允许玩家独自完成某些任务(团队处于离线状态),或者偶尔进行PvP / GvG(我对呼unt声感到无聊) 。 让团队成员互相交谈(而不是争论!)可以增加他们的“亲密感”,因此作为长期的“保留机制”发挥着重要作用。

5
游戏设计中的电子表格?
在过去的两周中,有两次我从著名的成功游戏开发人员那里听说,他们在设计游戏时使用电子表格。 这是GDCVault视频中的第一位David Whatley:从零到时间杂志:应用程序成功 第二个是围墙花园周刊。 大卫说,他将一切建模,并使用excel模型查看一切如何进行。他到底在说什么?是否看到游戏机制如何相互反应? 在某个地方,我可以了解更多有关如何执行此操作的信息?

1
三重缓冲的好处是什么?
我阅读了上一个问题中写的所有内容。据我了解,在双缓冲中,程序必须等到复制或交换完成的图形后才能开始下一个图形。在三重缓冲中,程序具有两个后备缓冲区,并且可以立即开始绘制不涉及这种复制的缓冲区。 但是,如果在可以利用第三个缓冲区的情况下使用三重缓冲,这并不意味着绘制帧的速度快于监视器可以刷新的速度。因此,您实际上并没有获得更高的帧速率。那么,三重缓冲的好处是什么?

4
什么是存储动态游戏对象的最有效容器?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我正在做第一人称射击游戏,我知道很多不同的容器类型,但是我想找到最有效地存储动态对象的容器,该对象将在游戏中频繁添加和删除。EX子弹。 我认为在那种情况下,它将是一个列表,以便内存不连续并且永远不会进行任何大小调整。但随后我也正在考虑使用地图或集合。如果有人有任何有用的信息,我将不胜感激。 我是用c ++编写的。 另外,我想出了一个我认为可行的解决方案。 首先,我将分配一个大尺寸的向量。比如说1000个对象。我将跟踪此向量中最后添加的索引,以便知道对象的末尾在哪里。然后,我还将创建一个队列,该队列将保存从向量中“删除”的所有对象的索引。(不会进行实际的删除,我只知道该插槽是免费的)。因此,如果队列为空,我将添加到向量+ 1中最后添加的索引,否则,我将添加至队列前面的向量的索引。

3
为什么RK4比Euler集成更好?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 8个月前关闭。 在这些精彩幻灯片的结尾,作者比较了所介绍的所有不同集成商。除了改进的Euler集成和Runge Kutta 4集成(均通过所有测试)外,它们都无法实现。 我想我应该提到我正在开发一个物理强度不是很高的2D游戏。我只是想知道改进的Euler集成会在哪里出现不足,而必须使用RK4。 我的游戏主要包括简单的重力(跳跃和下降),沿X和Y轴的运动以及边界框碰撞。实施RK4是否值得,还是经过改进的Euler足以满足要求?我看到了很多讨论都对Euler Integration的用户提出了质疑,但是据我所知,改进的Euler在简单的2D问题上是同等的。我想它也会更快。

6
对话框树如何工作?
也就是说,当子对话结束时,什么与语音之间的联系以及如何在语音之间移动? 如果您有C#中基本对话框树的任何示例,请发布它们。
20 c#  dialog-tree 

2
libGDX的所有教程在哪里?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我已经在网上搜索了有关LibGDX的帮助和教程,但是除了wiki上关于stackexchange的提问之外,我什么都找不到。除了源(演示)和Wiki之外,还有其他在线隐藏或间接的教程吗? 根据我的阅读,关于LibGDX的文档并不多,所以我只看到两个选项 放弃使用其他框架。 问人们很多问题。
20 android  libgdx 

1
我怎样才能平均分配出几张纸牌?
给定一组纸牌(带有宽度和高度的矩形图像),我该如何旋转和定位每张纸牌,使它们以“扇形”模式出现,就像您在现实生活中握住一手纸牌一样。为此需要什么数学运算? 更新 这是最终的JavaScript浏览器实现:https : //cosmicrealms.com/blog/2013/03/16/hand-of-cards/ 和 http://jsfiddle.net/tyyvk/108/

7
如何避免游戏对象在C ++中意外删除自身
假设我的游戏中有一个怪物,可以让神风敢死队在玩家身上爆炸。让我们随机选择一个怪物的名字:爬行者。因此,Creeper该类具有一个类似于以下内容的方法: void Creeper::kamikaze() { EventSystem::postEvent(ENTITY_DEATH, this); Explosion* e = new Explosion; e->setLocation(this->location()); this->world->addEntity(e); } 这些事件未排队,将立即分派。这会导致该Creeper对象在调用的内部某处被删除postEvent。像这样: void World::handleEvent(int type, void* context) { if(type == ENTITY_DEATH){ Entity* ent = dynamic_cast<Entity*>(context); removeEntity(ent); delete ent; } } 由于Creeper对象在kamikaze方法仍在运行时会被删除,因此在尝试访问时它将崩溃this->location()。 一种解决方案是将事件排队到缓冲区中,然后再分派它们。这是C ++游戏中的常见解决方案吗?感觉有点像破解,但这可能只是因为我在具有不同内存管理实践的其他语言上的经验。 在C ++中,对于对象从其方法之一内部意外删除自身的问题,是否有更好的一般解决方案?
20 c++  scene-graph 

2
是否可以免费使用基于十六进制的地图的好的图素集?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 有人知道免费提供的基于十六进制的地图有什么好的图素集吗?来自Wesnoth战役的砖块似乎已获得许可,允许其他人在游戏中使用它们,但我正在开发的游戏的规模是十六进制相当于一个人站立的区域,而Wesnoth磁贴的比例更大(例如,有些六角形的森林磁贴上有多棵树)。是否有其他游戏或其他提供十六进制拼贴图形的资源?
20 tiles  assets 


6
在边缘包裹的世界中寻找行进方向
此问题是从Stack Overflow 迁移而来的,因为可以在Game Development Stack Exchange上回答。 迁移 8年前。 我需要找到从2D世界中的一个点到边缘被包裹的另一点(例如小行星等)的最短距离方向。我知道如何找到最短的距离,但正在努力寻找它的方向。 最短距离由下式给出: int rows = MapY; int cols = MapX; int d1 = abs(S.Y - T.Y); int d2 = abs(S.X - T.X); int dr = min(d1, rows-d1); int dc = min(d2, cols-d2); double dist = sqrt((double)(dr*dr + dc*dc)); 世界的例子 : : T …
20 c++  algorithm 

3
OBB与OBB碰撞检测
假设您有两个边界框对象,每个边界框对象都将框的当前顶点存储在矢量中,并且该对象的所有顶点都相对于公共轴旋转和平移。 这是一张图像来说明我的问题: 如果两个OBB重叠任何链接以帮助解释该问题的解决方案,我将如何解决?请不要太费解了...

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.