Articles of 表演

如何提高程序地形生成和平滑的效率?

我正在开发一个生成无限程序地形的algorithm。 目前效率不高。 我该如何改进呢? 该algorithm首先生成一个16×16高度的地图,每个地形单元噪声单一,然后进行一些“平滑迭代”(平均高度相对于邻居,调整高度看起来连接)。

一种模型使用10种材料?

我制造了10多个机器人。 他们都有不less于4种材料,有的有12种材料。 我不能回去解决这个问题。 这将如何影响游戏的performance呢?

使用不可变string的animationtypes内存使用

现在我正在编写一个具有典型的20世纪80年代和90年代角色扮演游戏的animation打字效果的游戏。 在这里可以看到一个例子。 input效果是通过获取目标string并在每一帧中渲染它的子string来生成的。 子串的长度最初为零,但每隔几百毫秒增加一次。 这给人的印象是string正在输出 。 伪代码或多或less看起来像: var message = "This is some dialogue."; var substringLength = 0; if (someTimeHasPassed) { render(message.substring(0, substringLength); substringLength++; } 这很好,但我使用垃圾收集语言与不可变的string。 每隔几毫秒,我在堆上创建一个新的子string。 垃圾收集变得非常频繁,我在移动设备上收到内存警告。 有没有一种方法来产生这种打字效果,而不会在内存中创建大量的string?

限制MonoGame操作(爆炸,声音等)

我试图find一种方法来处理限制/管理需要定期(受监管)的行动。 现在,如果我想在MonoGame中调节一个“动作”,我需要设置一个“定时器”。 比方说,我想在更新循环中产生一堆爆炸,但是我不想发送垃圾邮件。 我会设置一个variables来跟踪倒计时到下一次我可以产生爆炸,另一个variables之间的时间为: public override void Update(GameTime gameTime) { // ExplosionTimer is a class variable, defaulted to 0 // ExplosionTimerMax is a class variable set to something like 1000 milliseconds ExplosionTimer += elapsedGameTime; if (ExplosionTimer >= ExplosionTimerMax) { // Perform actions ExplosionSound.Play(); SpawnExplosion(); // Reset the timer ExplosionTimer = 0; } // Other update […]

多次绘制相同的模型

我正在寻找方法来提高XNA / Monogame中我的绘制方法的效率,并理解事情是如何工作的。 我只是在屏幕上绘制了多个(砖,红,绿,蓝,黄)4组模型(100-120个模型,因此绘制每个模型25-30次)在当前帧。 下面是我如何绘制4种模型(红色的)中的一种: Matrix[] transforms = new Matrix[Brick.Red.Bones.Count]; Brick.Red.CopyAbsoluteBoneTransformsTo(transforms); ModelMesh mesh = Brick.Red.Meshes[0]; BasicEffect effect = (BasicEffect)mesh.Effects[0]; effect.EnableDefaultLighting(); effect.View = Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up); effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), aspectRatio, 1.0f, 10000.0f); foreach (Brick brick in Bricks) { int i = brick.Index / Columns; int j = brick.Index % Columns; modelPosition = new Vector3(-HalfWidth + j […]

在Monogame中,为什么在“窗口全屏”渲染时多个图块绘制缓慢?

我有这个绘图function( 这里推荐作为一个解决scheme)。 它在整个窗口上绘制瓦片没有问题,但我的游戏减慢到30fps后,最大化“窗口全屏”,这是我的电脑上的1600×1200。 (因此窗口中的1600/16 * 1200/16 = 7500个瓷砖) 虽然我想添加更高级的东西到这个简单的渲染,我想知道是否有可能在monogames中以实例化的方式绘制这个瓷砖? (就像在OpenGL 3.3中)还是有其他方法来加速它? BTW。 降低瓷砖的数量是不是一个办法,我需要更新每帧的整个屏幕,因为传入的透明GUI。 protected override void Draw(GameTime gameTime) { frameCounter++; GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); for (int x = 0; x < Window.ClientBounds.Width / 16; x++) { for (int y = 0; y < Window.ClientBounds.Height / 16; y++) { int offX = x + mainCamera.Position.X; int offY = […]

MonoGame性能更好,然后XNA?

我目前正在考虑使用MonoGame将XNA游戏移植到其他平台。 我是否正确地理解这一点 ,即使在Windows 7下,由于使用SharpDX,我也可以期待游戏的渲染速度更快?

每个NPC的一个AI对象

让我们考虑一下你将有大约1k npcs的游戏,每个游戏必须自己做出决定。 每个人是否应该有一个决定要做什么的对象,或者可能存在一个来处理每个单位? 另外,让我们考虑一个复杂的AI,而不是仅仅检查NPC是否可以看到玩家,也不是判断NPC是否会攻击。 像矮人要塞一样。

实例化许多预制件作为一个统一的预制件

在[实例化多个预制]和[把单个父预制件下的所有预制件,然后在场景中实例化父预制件]之间有任何性能差异。 希望你明白我想说什么。

链接与蒙皮几何之间的折衷

将几何连接到节点与使用蒙皮几何之间的内在联系是什么? 特别: 你使用每种方法会获得什么function? 做一个对另一个的性能影响是什么? 有什么特定的情况下,你会想做一个在另一个? 另外,这些问题的答案往往是引擎特定的? 如果是这样,多less?