Questions tagged «patterns»

5
我如何实现Minecraft的制作网格之类的东西?
Minecraft中的制作系统使用2x2或3x3网格。您将食材放在网格上,如果将正确的食材放入正确的图案中,它将激活配方。 有关设计的一些有趣之处: 有些食谱可以将某些成分替换为其他成分。例如,镐头用棍棒作柄,头用木板,鹅卵石,铁锭,金锭或钻石宝石。 模式中的相对位置很重要,而不是网格上的绝对位置。也就是说,您可以通过将杆和煤(或木炭)以正确的模式放置在3x3网格上的六个位置中的任何一个位置来制作手电筒。 图案可以水平翻转。 我可能想得太多,但这似乎是一个有趣的搜索/减少集的问题。那么,从算法上来说,这是如何(或可能)起作用的呢?

1
单元测试C#/ XNA游戏项目
自从开始编程以来,我就一直从事游戏开发,但是从来没有非常认真过。我以业务应用程序开发人员的身份工作,但我在业余时间从事一些游戏的开发。 在商业世界中(在Microsft Web开发堆栈上),ASP.NET MVC变得非常流行,因为它易于对界面的工作方式进行单元测试。 我想知道一种设计模式(MVC,MVP,MVVM等)可以用来编写一款游戏,其中所有游戏逻辑都可以轻松进行单元测试。这可能或可行吗?我是在浪费时间吗,进行完整构建然后运行“集成”类型测试而不是单元测试会更好吗? 示例代码会很棒,但是写起来也很有用。 (我尝试添加一个单元测试标签,但没有必要的代表...)

5
API不可知的桥梁(即OpenGL / D3D /任何)。您是否使用它们,如何制作它们。专业人士和骗子[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 您正在制作3D引擎。您想要最好的多平台世界。突然您意识到,如果要在Windows机器上使用Direct3D,在OSX / Linux上使用OpenGL,则必须牺牲这两个最小公分母的支持功能。 有些人可能会在三个OS上使用OpenGL,因为它本身似乎是最小公分母。一切都很好。然后,您必须将图形API后端移植到Nintendo的GX,还必须创建PS3和Xbox360路径。 你是做什么?您是否设计自己的API(本身是最不常见的),并为每个平台编写后端实现,还是为每个平台编写自己的分支? 如果您选择设计自己的API,是使用网桥模式还是自己的伏都教?疯狂在哪里停止,您意识到一切都停止了,厨房水槽方法也必须停止,并且基本上每个平台都有一个单独的引擎作为分支。或者,您坚持一切和厨房水槽,并在每个平台的后端模块专业化中保留平台特定信息。

2
在2D阵列中找到形状,然后进行优化
我刚刚被允许使用一张图像...下面的游戏图像显示了一些变暗的块,这些块被认为是“ T”形的一部分。可以看出,代码使带有红色斑点的块变暗,而没有看到带有绿色轮廓的“ T”形。 我的代码遍历x / y,将块标记为已使用,旋转形状,重复,更改颜色,重复。 我已经开始尝试以极大的恐惧来修复此检查。当前的想法是: 遍历网格并记下所有模式出现的情况(不使用标记框),并将其放入数组中 再次循环遍历网格,这次注意哪些块被哪些模式占用,因此哪些块被多个模式占用。 再次遍历网格,这次注意哪些模式阻碍了哪些模式 感觉不错... 我现在该怎么办? 我想我必须 尝试各种形状相互冲突的组合,从首先阻碍大多数其他图案的形状开始。我该如何处理? 使用说我有3个相互冲突的形状占据8个块的理性,每个形状是4个块,因此我最多只能有两个形状。 (我也打算合并其他形状,在进行冲突形状处理时可能需要考虑分数加权,但这可能是另一天) 我不认为这是一个垃圾箱包装问题,但是我不确定要寻找什么。希望有道理,谢谢您的帮助 编辑尽管有明确的问题,每个人似乎都已经了解了,是的, 我想在每种颜色中找到最大的“ T”形 (因为如果我给你2分,而你又获得3分,你会有点生气)

4
游戏设计中的每帧函数调用与事件驱动消息传递
据我所知,传统的游戏设计使用多态和虚拟功能来更新游戏对象的状态。换句话说,在游戏中的每个对象上以规则的间隔(例如,每帧)调用同一组虚拟函数。 最近,我发现,还有另一个- 事件驱动的消息传递系统可用于更新游戏对象的状态。在这里,对象通常不会按帧进行更新。取而代之的是,构建了高效的事件消息传递系统,并且仅在收到有效事件消息之后才更新游戏对象。 事件驱动的游戏体系结构在Mike McShaffry编写的《Game Coding Complete》中有很好的描述。 我可以在以下问题上寻求帮助: 两种方法的优缺点是什么? 哪里比另一个更好? 事件驱动游戏设计在所有领域都通用且更好吗?因此,即使在可移植的平台中,也建议使用它吗? 哪一个更有效,哪个更难开发? 要澄清的是,我的问题不是要从游戏设计中完全消除多态性。我只是希望了解使用事件驱动消息传递与常规(每帧)调用虚拟函数以更新游戏状态的区别和好处。 示例: 这个问题在这里引起了一些争议,因此让我为您提供示例:根据MVC,游戏引擎分为三个主要部分: 应用层(硬件和操作系统通信) 游戏逻辑 游戏画面 在赛车游戏中,“游戏视图”负责以最快的速度(至少30fps)渲染屏幕。Game View也会侦听玩家的输入。现在发生这种情况: 玩家将燃油踏板踩到80% GameView构造一条消息“将Car 2油门踏板压到80%”,并将其发送给Game Logic。 Game Logic会获取消息,评估,计算新车的位置和行为,并为GameView创建以下消息:“绘制2踩下燃油2的燃油踏板”,“ 2声音加速”,“ 2坐标X,Y” .. 。 GameView接收消息并进行相应处理
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.