游戏开发

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

2
如何使我的混色游戏更加困难?
我正在做我的第一场比赛,结果太简单了。是否有标准的“技术”使之变得更加困难? 游戏非常简单。想象游戏2048。当您沿某个方向滑动时,所有块均会沿该方向滑动并发生碰撞或合并。但是,它不是合并数字(例如2048中的2 + 2 = 4),而是合并颜色,因此,将黄色块击中蓝色块会生成绿色(而红色+黄色=橙色,等等)。然后,如果您合并原色(蓝色)和新创建的第二色(绿色),则可以生成第三色(在这种情况下为“蓝绿色”)。 在这一点上,您可以点击第三色(我认为是“第三弹”),它将破坏所有的原色,因此“蓝绿色”将破坏所有“蓝色”块。如果无法移动,则将与2048相同,但会失败,但是通过制造炸弹,似乎很难将其卡住。 有经验的游戏设计师如何使这款游戏变得不那么平凡?


2
如何通过缓存友好的组件存储安全地支持组件到对象的通信?
我正在制作一个使用基于组件的游戏对象的游戏,但是我很难为每个组件实现一种与其游戏对象进行通信的方式。我将不解释所有内容,而是解释相关示例代码的每个部分: class GameObjectManager { public: //Updates all the game objects void update(Time dt); //Sends a message to all game objects void sendMessage(Message m); private: //Vector of all the game objects std::vector<GameObject> gameObjects; //vectors of the different types of components std::vector<InputComponent> input; std::vector<PhysicsComponent> ai; ... std::vector<RenderComponent> render; } 在GameObjectManager拥有所有的游戏对象及其组件。它还负责更新游戏对象。它通过按特定顺序更新分量向量来实现。我使用向量而不是数组,因此可以同时存在的游戏对象数量实际上没有限制。 class GameObject …

1
在2D物理引擎中,当物体静止时,如何避免无用的碰撞解决方案?
在我正在使用love-2d开发(用于学习)的物理引擎中,我通过以下方式实现了碰撞解决方案: FixedUpdate(dt) // I use fixed timestep foreach collide c1 in allNotStaticColliders c1.integartePhysic // i.e. apply gravitational force.. foreach collider c2 "near" c1 // "near"= I use spatial hashing if collide(c1,c2) resolve collision (c1,c2) // the heavy operation collison callbacks c1 collison callbacks c2 ... 如您所见,在gif动画的末尾,当所有对撞机几乎都固定在静态对象上时,FPS会衰减。 这是因为碰撞解决方案的数量随着对象在静止时花费更多的时间而增加。但是,许多计算都是“无用的”,因为对象已经相对彼此沉降到稳定的位置。 避免这些“无用的”碰撞检测的最佳实践(最好是不需要物理学位)是什么? 编辑:接受DMGregory提示,并得出此结果(尚不理想) (红色=静态,蓝色=活动,绿色=睡眠)


2
恒定时间制导导弹
我正在用玩家和导弹制作游戏。 我想从P1向P2发射导弹。导弹应始终仅花费五秒钟即可到达P2。导弹还应该跟踪P2。如果P2移得更远,则导弹必须加快速度以满足时序约束。如果P2向左移动,则导弹必须向左移动(并同时改变速度)。如果P2靠近P1,则导弹必须减速。 这可能吗?做到这一点的最佳方法是什么? 我目前没有Vector2D类(这实际上不是游戏,但是类推效果很好),因此,如果可能的话,我想要一个不需要的解决方案。 编辑:这实际上也不是导弹。:) 谢谢!

3
在关键时刻与人群打交道的策略
最近,我已将游戏引擎从转向行为切换为具有适当时间冲突解决方案的基于冲动的运动。这解决了很多问题(不再需要隧道化,是的),并使模拟更加稳定。但是,稳定性带来了新问题。 这三个球开始在图像底部附近的旅程,他们的目标是粉红球停下来的地方。在途中,红色和绿色的球卡在了墙的阻塞点。 在此之前,我可以依靠浮点错误和操纵行为的一般不稳定来使绿色和红色的球相互碰撞,直到它们成功通过了阻塞点。现在具有适当的碰撞分辨率,作用在球上的力会相互抵消,从而使球保持完全静止。 通常使用哪些方法来解决这种情况?某种优先级排队系统可能会起作用,尽管一旦我需要在两个以上的对象之间确定优先级,我就会发现它变得很复杂。

3
如何计算加速度受限的对象的路径?
例如,假设我有一辆汽车,并且一辆汽车具有特定的最小转弯半径,并且我想将该汽车从a点驾驶到b点,但汽车没有面向b点。如何计算指向b点的路径?能够在b点处指定方向也是很好的(例如,您想开车到车道上然后驶入车库-如果您通过在草坪上行驶而进入车道并没有多大用处并面向侧面:) 指向文档(甚至只是名称)的指针就很好-我根本找不到任何东西。 在我的尝试中,它们在简单的情况下仍然有效,但在诸如b点比最小转弯半径更靠近a点的情况下却失败了。 例如,如何确定与此类似的路径(粗体路径): 编辑:在我的实际问题中,有一些简单的路径约束,但是我已经有一个可以运行的A *算法,但是它允许事物进行瞬时航向更改,因此看到汽车突然转90°看起来很傻当他们到达一个转折点时,一角钱。

4
为什么我的C#6代码无法在Unity中编译?
为什么Unity无法使用C#6代码?它总是给我编译器错误。以下是一些代码示例: using static System.Convert; using static System.Environment; $"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}"; 我使用Visual Studio作为我的代码编辑器,并且构建时没有错误。如果我在Unity中按播放,它将无法建立。
9 unity  c# 

1
没有教程,如何使我的游戏更直观?
我目前正在开发手机游戏应用程序。游戏中详细描述了一棵树,上面有几个树枝,不同种类的鸟儿在上面飞来飞去。每只鸟都有不同的重量,使用者的目的是在树枝断裂之前平衡树的每一侧的重量。我附上了游戏的屏幕截图,希望有人对如何使用户更容易理解游戏的概念提出建议,而不必让他们做教程。其次,当您看屏幕截图时,您对游戏的目的有何猜想?第三,我希望在树上添加一个弯曲功能,使用户可以通过实际移动手机来保存树,但是用像素图进行设计时会出现问题-还有其他想法吗? 谢谢,

1
ResolutionException:找不到com.google.android.gms:play-services-games:8.1+的候选工件
出现此错误: EditorAssemblies.ProcessEditorInitializeOnLoad(System.Type类型)(在C:/buildslave/unity/build/Editor/Mono/EditorAssemblies.cs:123处)作为TargetInvocationException抛出:调用的目标抛出了异常。System.Reflection.MonoCMethod.Invoke(System.Object obj,BindingFlags invokeAttr,System.Reflection.Binder绑定程序,System.Object []参数,System.Globalization.CultureInfo文化)(在/ Users / builduser / buildslave / mono-runtime-和-classlibs / build / mcs / class / corlib / System.Reflection / MonoMethod.cs:519)System.Reflection.MonoCMethod.Invoke(BindingFlags invokeAttr,System.Reflection.Binder绑定程序,System.Object []参数,System.Globalization .CultureInfo文化)(位于/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:528中)System.Reflection。 如何解决呢?

1
在启动画面中加载广告?
我有一些广告需要很长时间才能加载。我不知道这有可能让他们负载,同时利用在启动画面。我看了这个答案: /programming/5133342/how-can-i-make-my-ads-appear-faster-in-my-android-app 答案是建议使用启动屏幕加载广告。如何确定何时加载广告以继续进行下一个活动?如果用户在飞行模式下会发生什么,会卡在启动画面中吗?我已经看到了admob添加侦听器,但这需要adview,但是我的adview在下一个活动中吗?我该如何解决这个问题? 另外,当我尝试执行此操作时: AdView.setAdListener(new AdListener() { // Implement AdListener }); 我得到: 不能从静态上下文引用非静态方法。问题是,我正在尝试查看何时完成下一个活动中的添加。

1
如何在LibGDX 3D中引发碰撞事件?
在下面的代码中,我举了一个我想做的事的例子。我有相机,当它碰到其中一个盒子时,我希望它停止移动,该怎么办? public class Main extends ApplicationAdapter { private final ModelBuilder builder = new ModelBuilder(); private final Environment environment = new Environment(); private ModelBatch modelBatch; private PerspectiveCamera camera; private Model model; private ArrayList<ModelInstance> instance = new ArrayList<ModelInstance>(); private FirstPersonCameraController controller; private BoundingBox[] boxBounds = new BoundingBox[1000]; private BoundingBox cameraBox = new …

1
生成用于地形生成的Octree
我以前已经实现了行进立方体/四面体以渲染IsoSurface。它可以正常工作(YouTube),但是性能却很糟糕,因为我从来没有绕过根据视距实现可变的“细节级别”(甚至删除了旧的,遥远的块)。 我决定再次尝试一下,这次要正确地做。我首先创建了一个OctreeNode,它在Build()被调用时的工作方式如下。 如果块太小而无法构建,请立即返回。 算出表面是否穿过该块的体积。 如果是这样,则决定我们是否要提高LOD(因为相机已关闭) 如果是这样,则生成8个子代并对其调用相同的过程 如果没有,请使用当前节点的尺寸构建网格 一些伪代码: OctNode Build() { if(this.ChunkSize < minChunkSize) { return null; } densityRange = densitySource¹.GetDensityRange(this.bounds); if(densityRange.min < surface < densityRange.max) { if(loDProvider.DesiredLod(bounds)² > currentLoD) { for(i 1 to 8) { if(children[i] == null) { children[i] = new OctNode(...) } children[i] = children[i].Build(); } } …
9 unity  c#  voxels  octree 

1
我如何找到四面体的周界?
我正在寻找最小化的方程式,以找到在给定四个3D点的情况下四面体外球面的中心坐标和半径。 我在互联网上发现的内容主要涉及平面3D三角形的外接球面,一些粗略的数学定义或一些非常单一的情况,例如规则四面体。无论如何,我设法找到下面的等式,但我错过了一些东西: -> -> -> let d1, d2, and d3 three vectors of any face of the triangle : | d1x d1y d1z | | x | | d1^2 | 2 * | d2x d2y d2z | * | y | = | d2^2 | | d3x d3y d3z | …
9 3d  sphere 

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.