游戏开发

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

2
在计划在Unity中着色精灵时,白色是开始的最佳基础颜色吗?
我正在研究Unity中的游戏原型,该游戏将由实心方形子画面/图块组成。我认为我可以为游戏中的每个图块代表具有不同颜色的不同类型的对象。 我认为我可以导入一个单一的正方形精灵,并在Unity中对其进行适当的着色,而不是导入许多不同颜色的正方形。 我在Photoshop中调整色相和饱和度的经验表明,白色不是容易更改的颜色,因为白色的东西通常保持白色。我在Unity中进行的测试表明,尽管我会根据我的Photoshop经验,可以将精灵的“颜色”更改为除白色以外的任何其他颜色,并且精灵似乎被适当地着色。 由于在Unity中进行更改时,白色对象似乎确实具有适当的颜色阴影,因此我的直觉告诉我这是最好的基础颜色,这意味着我可以导入单个白色方形精灵并简单地调整颜色以表示不同的对象和对象状态。 白色精灵实际上是最开始的最佳彩色精灵吗?为什么这样的事情在Unity中起作用而不是在Photoshop中调整色相和饱和度?
10 unity  sprites  color 

2
我怎样才能使蛇的尾巴跟随头部?
完成任务后,通过构建一个小的Snake克隆才开始使用libGDX,我遇到了一个问题,我可能会在一段时间内感到羞愧。 我目前有一个蛇头(在这个阶段是一个简单的矩形)在游戏画布上移动。构造蛇的其余部分最直接的方法是让头部拥有一个SnakeElements的Java Collections LinkedList,它会根据玩家的操作来增加/减小大小。 让这个SnakeElements列表紧随其后,但是事实证明这并非易事。 当前执行此操作的函数如下,并且每当头部更新其位置时都会调用该函数: private void moveTail (float x, float y, int direction) { float tmpx, tmpy; int tmpdirection; int offset_x, offset_y; for (SnakeSegment snse : tail) { offset_x = 0; offset_y = 0; tmpx = snse.getX(); tmpy = snse.getY(); tmpdirection = snse.getDirection(); switch(direction) { case 0: offset_x …
10 java  libgdx 

1
如何有效地渲染大型地形网格?
最近,我一直在思考如何在游戏中生成地形的最佳方法。在另一个项目中,我通常使用高度图,因此所有核心工作都基于所使用的引擎,但是现在无法完成,因为地形具有数百万个必须精确绘制的特定多边形。而且,其中许多不能从Y向量进行解析(因为下面隐藏了多边形),也就是说,高度图在这里没有用。在这种情况下,我必须使用COLLADA对象。 有人告诉我要在Blender之类的软件中手动划分模型,但是不幸的是,这也是不可能的,因为这些地形是在另一个软件中成块创建的,然后加载到游戏中(这就是想法)。因此,每次必须手动对其进行切片将是一项巨大的工作。 因此,自从一周以来,我一直在研究如何解决此问题并以程序方式将此网格,地形(对应于相机平​​截头体)加载,以尽可能地节省性能。我遇到了许多有关过程网格生成的文档,我认为可以通过将网格映射到八叉树来解决我的问题。这是一项巨大的工作,至少对我来说是如此,这就是为什么我在这里,因为我不想冒险走错误的道路,而无需经验丰富的人来信。 简而言之,我有数百万个顶点和索引共同构成了地形,但是出于明显的原因,我无法同时绘制它们。它需要某种程序。将大型网格物体视为地形的最佳方法是什么?有没有关于这本书的具体书?有没有最佳的实施方法? 很抱歉出现任何错误,我是这个领域的新手。

1
我找到了一个与我同名的游戏!我该怎么办?
前几天,我在Google Play上发布了我的游戏Eyeroller。我检查了Google Play上没有同名游戏。但是今天我在Google上搜索了“ eyeroller”(是的,我早就应该这样做了),并且意识到AppStore上有一个名为eyeRoller的游戏。如您所见,它们是完全不同的游戏。 这有什么法律含义?诸如商标和版权之类的问题可以吗?我应该更改游戏名称吗?

7
如何使MUD中的永久死亡对玩家来说似乎可以接受并公平?
我已经考虑编写MUD多年了,我有很多想法,我的朋友们认为这真的很酷(这就是我希望能达到的目标-口口相传)。 问题是,我一直想要的一件事是我的朋友和陌生人讨厌:永久死亡。现在,我对此的情感反应是每次内脏的反感。我很确定我是唯一想要这个的人,或者如果我不想要的话,我就是少数。 现在,我想要它的原因是因为我希望玩家的行动至关重要。与许多其他MUD具有一组静态城市状态和社会机构等不同,我希望我的玩家做的事情(如果有的话)能够真正改变这种状况。这包括杀人。 如果您杀死某人,您并没有使他们超时,而是杀死了他们。杀人会怎样?他们走了。他们不会在半小时内回来再跟您聊聊。他们走了。永远。 通过使死亡成为永久性死亡,您使死亡变得无关紧要。如果角色弧线的高潮正在获得超速罚单,那将是相似的。它便宜了。永久死亡可以减轻死亡的负担。 我该如何:1)说服我的玩家(和随机的人!)这实际上是一个好主意?,或者 2)寻找其他方法使死亡和暴力与现实生活中的事情一样重要(当然,在游戏中除外),而没有角色删除?那里有什么替代品?
10 multiplayer  mmo  mud 

2
如何将我的游戏放在NES卡带上?
如何创建NES墨盒?有教程吗?我需要将一个可以在模拟器中运行的游戏放在盒带中。怎么做?从头开始有可能吗?或者至少我可以使用现有的盒带并覆盖其中的内容?
10 modding  roms 

2
外推打破碰撞检测
在对精灵的运动进行推断之前,我的碰撞效果非常好。但是,在对精灵的运动进行推断(以使物体平滑)之后,碰撞不再起作用。 这是外推之前的工作方式: 但是,在执行推断后,碰撞例程将中断。我假设这是因为它作用于外推例程(位于我的render调用中)产生的新坐标。 应用推断后 如何纠正这种行为? 我尝试在推断后再进行一次额外的碰撞检查-这似乎确实解决了许多问题,但是我将其排除在外是因为将逻辑放入渲染中是不可能的。 我还尝试制作了spritesX位置的副本,对其进行推断并使用该位置而不是原始位置进行绘制,从而保留了原始位置以供逻辑使用-这似乎是一个更好的选择,但仍然会产生一些奇怪的效果与墙壁碰撞时。我很确定这也不是解决此问题的正确方法。 我在这里找到了几个类似的问题,但是答案并没有帮助我。 这是我的推断代码: public void onDrawFrame(GL10 gl) { //Set/Re-set loop back to 0 to start counting again loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ SceneManager.getInstance().getCurrentScene().updateLogic(); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; tics++; } extrapolation = (float)(System.currentTimeMillis() + skipTicks - …


1
为AI找到达到目标的正确速度
我有一艘以最大速度行驶maxSpeed并且rotationSpeed每秒可以转度的船。船舶始终沿其面向的方向移动,这意味着船舶行驶的速度越快,其转弯半径就越大。 我知道我的位置,以及旋转和目标的位置。 我想弄清楚的是,目标物体是否在此速度下或者更好的旋转半径内,所以我能以最大速度行驶是为了在不不断绕转目标的情况下转向目标。 有没有一种有效的方法来做到这一点? 到目前为止,这是我在想的事情:因为我知道每步走了多远,每步旋转了多少,所以我可以弄清楚接下来两帧中的位置。我当前的位置是p1,我的下一个位置是p2,然后是p3。我可以取(p1,p2)和(p2,p3)的垂直平分线。他们的交点将给我一个圆心。然后,我可以测试目标是否在该圈子中。 我不确定这是否可以在3D模式下工作(我不确定如何使用输入来计算球体)。此解决方案也无法找到合适的行进速度,也无济于事,我不得不尝试几次以不同的速度找到合理的行进速度。 任何人都可以提出更好的解决方案吗?

1
如何确保Roguelike的视场对称?
我正在研究类似Rogue的游戏,为此,我创建了一个光线跟踪/投射视场(FoV)算法,该算法包括将Bresenham线绘制到实心圆中的每个点。它没有伪影(并且相当有效),但是却缺少我的一个重要要求:对称(如果您可以看到怪物,那么它也必须能够看到您)。 这是我的代码的非对称行为的示例。在左图中,我站在一个角落(红色的“ X”块=墙)。我可以看到右上方的图块。但是,如果我移至其中一个图块(右图),将无法再看到我所来自的图块。 我认为我可能会追求某种形式的“ 允许视野”,但这仅仅是因为Roguebasin的文章建议允许对称。是否存在获取对称性的替代方法?

2
折射玻璃着色器
我有一个无限的六边形地板,是通过在镶嵌细分着色器对中镶嵌点网格生成的: 请注意,这是一个扁平的线框-“阴影”是一种照明技巧: 现在,我想使它看起来像是厚的折射玻璃,但是不确定如何进行。 我想到的第一件事是 设置包含所请求的“厚度”块的制服 在计算光照时,请使用斯涅尔定律来计算光线穿过十六进制块的光程长度(如果实际上与“厚度”制服说的一样厚),并求和该长度上的alpha。这样可以提高透明度,但不能处理内部反射/ TIR等问题。 我还没有尝试过,所以我不确定视觉效果如何。 最终,对于这个特定级别,我试图在光盘战役中使用《 Tron:Legacy》中使用的六角形玻璃地板外观。(有关示例,请参见此图像。) 有什么建议吗?
10 shaders  glsl 

4
对于简单游戏,是否有单独的游戏循环线程是必需的?
我是游戏开发的新手。为了学习,我正在android平台上重新创建此游戏。您可以在上面的链接中观看游戏视频。这是一个简单的游戏。 我已经阅读了很多有关游戏开发入门的文章,几乎所有文章都建议在单独的线程上使用游戏循环,这对于其他游戏也很有意义。但是,对于这个特定的游戏,我需要启动一个单独的线程吗?

3
为什么资产需要自定义内存管理?
几乎所有与游戏编程有关的资源,尤其是3D开放世界游戏,都在谈论您如何不断地在磁盘,系统内存和视频内存之间进行资产的卸载和重新加载。我可以在控制台上理解这一点,因为它们具有非常简单的内存管理方案,无法处理任何潜在的溢出。 但是,在PC上,情况就大不相同了。操作系统提供了用于系统内存的虚拟内存,图形驱动程序负责从CPU到GPU的来回交换。那么,为什么一次加载所有内容并仅处理预取并仅确保在交换所需资产时没有阻塞是为什么呢? 这并不是说所有的事情都是像那样天真地分配的malloc。一切都将保持连续并且与缓存保持一致。如果您不必担心手动分页和换页,那么提高内存访问的效率可以说很容易... 更新: 在对异步缓冲区传输进行了一些了解之后,我发现图形驱动程序可以自动分页内存的方式不是最理想的。CPU资源是否也是如此?即,是否最好始终手动管理何时在存在虚拟内存的情况下何时加载和卸载给定资源?

3
多重纹理真的只是“使用多个纹理”吗?
这可能看起来很愚蠢,但却使我烦恼。据我了解,多重纹理化每个着色器仅使用一种以上的纹理(通常以某种方式进行混合)。因此,我没有创建2个纹理,而是创建了2个或更多纹理,这很明显! 为什么有一个特殊的术语呢?除了“使用多个纹理”之外,还有更多的功能吗?我想念什么吗?

4
如何制作没有OOP的游戏?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我目前正在研究游戏开发和练习制作游戏。 我在游戏中经常使用OOP。例如,发射的每枚导弹都是一个Missile对象的实例,并添加到Missile对象列表中。游戏中的每个坦克都是一个Tank物体。等等。 该程序的整个设计都基于此。例如,拥有一个Missile物体列表可以使我每一帧移动导弹,牵引导弹等。而Tank每个坦克都有一个对象实例可以让我检查每个坦克是否与某些物体发生碰撞等。 我很难想象如何用非OO语言编写游戏(比《吃豆人》更复杂)。(当然也要尊重非OO程序员)。不仅要花费多长时间,而且主要要以这种方式设计游戏。 我无法想象不使用面向对象的程序设计游戏,因为我对如何设计游戏程序的全部理解是基于OOP的。 我想问一问:今天,有没有像我上面所描述的那样没有使用OOP编程的游戏?是否有没有将OOP用作开发过程中主要因素的“专业”游戏? 如果是这样,您能否给我一个想法,例如,在没有OOP的情况下,如何实现坦克与N枚导弹之间的碰撞检测?

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.