游戏开发

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

3
P2P网络隐藏位置?
我一直在致力于安全游戏的P2P架构,并且已将问题分为五个子问题: 非法修改发送的游戏状态 准确掉落作弊者 同意游戏状态 避免“前瞻”作弊 隐藏对手的敏感信息 我几乎解决了前四个问题,但我遇到的是最后一个问题。 在详细介绍之前,我只想问一下在建立“防欺诈” p2p网络列表中是否缺少任何内容。我对诸如使用aimbots之类的作弊方式不感兴趣,仅对使p2p网络像集中式服务器一样安全不感兴趣。 因此,到目前为止,在隐藏敏感信息方面,我一直专注于游戏中玩家的位置,在这种情况下,对手的位置并不总是应该知道的。然后,问题就变成了如何确定是否应该在不知道对手位置的情况下将位置发送给对手。 我已经排除了诸如对手发送多个错误位置供您比较您的错误位置之类的方法,因为您的对手很容易滥用这样的系统,因为如果其中一个错误位置碰巧从您的位置“可见”,他就会获得您的位置。 我一直专注于一种方法,在这种方法中,您会收到对手的“视野”,从而可以确定您是否应该发送职位。但是,这在英雄联盟之类的游戏中是个问题,在该游戏中,对手的视野也是高度敏感的信息。我试图通过使用奇异矩阵变换视野来解决此问题,这意味着您不能从视野的变换版本返回原始版本,但是由于它是线性变换,因此您仍然可以弄清楚您的位置是否在内部视界与否。 但是,这并不完美,转换后无法恢复确切的视场,但是可以获取有关视场中“坡度”的信息(视场由多条线构成,并且可以确定每条线的斜率)修复后,可以用于相对便宜地重建原始视野。 从本质上讲,我需要的是一个可以确定某个位置是否“可见”的函数,并且重建此函数/视野必须在计算上如此严格,以至于一旦完成重建视野,它就不再与游戏进行中。有没有超级聪明的人碰巧知道这种方法? Edit People对整个“视觉领域”感到有些困惑,因此我打算在这里给出更详细的解释。视野由一组线组组成,您只需检查您的位置在线的哪一侧,即可轻松检查某个位置是否在这些组中,如果您知道该组中所有线的位置在同一侧它在那个小组内部,因此在视野之内。 但是,发送的信息不是此行,而是行的变换和变换(矩阵乘以2 x 2),您仍然可以通过使用接收到的变换首先对其进行变换,以检查位置在行的哪一侧并将该值与转换后的行进行比较。这里的关键是变换是奇异的,这意味着不可能找到逆向返回到原始行。但是,可以通过仅检查变换后的线的哪一侧位于许多点上,直到精确地确定了直线的原点,比不知道的计算便宜得多,从而确定使直线重构的直线的斜率线的斜率。 我正在寻找一种确定点是否在区域内的方法,根据该方法无法重建该区域(我怀疑这种方法存在,因为您总是可以对其进行暴力破解),或者计算量很大。

1
如何自动化游戏测试?
我是这个测试领域的新手。我刚刚使用统一引擎开发了一款基本游戏,但我想对其进行测试。 我已经检查过硒,但是我不知道如何获取返回的值,该值包含游戏中正在执行的动作的信息。如果我能够获得价值,那么我将能够相应地采取必要的行动。
13 unity  testing 

3
如何以全像素间隔移动相机?
基本上,我想阻止相机移动到亚像素,因为我认为这会导致精灵明显地更改其尺寸,即使只是稍微改变一下。(是否有更好的用语?)请注意,这是一款像素艺术游戏,我想拥有清晰的像素化图形。这是显示问题的gif: 现在我尝试的是:移动相机,投影当前位置(因此是屏幕坐标),然后将其舍入或投射为int。之后,将其转换回世界坐标,并将其用作新的相机位置。据我所知,这应该将相机锁定在实际的屏幕坐标上,而不是分数。 但是由于某种原因,y新头寸的价值才爆炸式增长。在短短的几秒钟内,它增加到了类似的程度334756315000。 这是一个基于LibGDX Wiki中的代码的SSCCE(或MCVE): import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; public class PixelMoveCameraTest implements ApplicationListener { static final int WORLD_WIDTH = 100; static final int WORLD_HEIGHT = …
13 libgdx  pixel 


2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

1
如何使动物在天际中可玩
我对Skyrim Creation Kit有一些经验,并做了一些小的修改。我对创建新的种族非常感兴趣,并且已经制作了一个mod,可以让玩家创建一个老人,一个孩子或一个德雷摩拉。为此,我只是在编辑器中找到了它们的ID,然后选中了“可播放”框(未选中的“子”框)。当我在某些非人类种族(例如狼,马或龙)中尝试此操作时,一旦在角色创建屏幕中选择该种族,游戏就会崩溃。 我的问题是:为什么游戏会立即崩溃,并且有一种方法可以使动物/怪兽比赛相当容易地进行(我对脚本编写或创建网格物体的知识并不多)。谢谢。

1
何时使用混合树与状态机进行动画制作
我是一位经验丰富的游戏开发者,最喜欢用3d动画角色制作游戏(在Unity中),并且努力弄清楚何时使用混合树与动画状态机。我从概念上理解了两者,但是在Unity和其他来源的大量教程中都看到了混合树和用于角色动画的动画状态机。我不确定何时/为什么一个人比另一个人更好,希望有人能指出我正确的方向。 我的游戏是第三人称角色扮演游戏rpg a'la WoW或KOTOR或Mass Effect(我知道不同的系统,但视角和战斗风格在较高水平上是相近的)。我有无数动画来制作攻击,格挡,假装,死亡,行走,奔跑,跳跃,射击等,但是我不清楚如何自然地将它们排序。 我已经看到用于运动的混合树在尝试保持角色运动流畅性时对我来说很有意义,但是我不明白如何从该混合树进入攻击状态,到目前为止,我还没有看到任何东西超出运动范围(没有攻击等等)。我需要从运动状态到攻击/死亡/闪避状态制作混合树吗?我是否仅使用状态机就拥有更多控制权?我对状态机有点谨慎,因为它们非常常见,而且我怀疑在不混合的情况下,变态动画排序的潜力更大。 我打算使用Unity字符控制器并编写自己的逻辑脚本来驱动它。对于AI,我将使用内置的导航网格物体代理。角色控制器动画的处理方式是否与AI动画不同? 任何见解都将受到欢迎! 谢谢

3
我必须在哪里贷学分?
首先,这不是讨论获得信贷的最佳地点,而是在允许的地方进行讨论。 因此,举例来说,如果我只在安装目录中包含一个credits.txt文件,那还是可以的,我必须在游戏中放置一个可以阅读它们的地方。 是否有任何一般规则,还是由需要信用的个人决定?
13 assets  business 

2
如何对由许多小三角形组成的物体执行碰撞检测?
我知道可以通过较小的三角形来创建(或近似)任何形状。任何矩形都可以由2个较小的三角形创建。任何圆形都可以由许多薄的“比萨饼切片”三角形创建。这如何转换为碰撞检测? 我了解如何使用顶点计算矩形重叠。我了解如何使用中心,半径和距离来计算圆重叠。 但是,如何对由小三角形构成的形状进行碰撞检测?不是细节,而是一般概念。

2
如何使用Scene2D制作弹出窗口?
我有一个带有徽标和一堆按钮的主菜单屏幕。当按下登录按钮时,我弹出一个对话框,要求输入用户名和密码。 除“弹出”外,此方法工作正常。目前,新对话框只是移动了所有内容,但我想将其放置在当前场景上。 我只是在学习Scene2D。
13 java  libgdx  menu  scene2d 

1
在2D瓷砖地图上计算“视锥”的有效方法?
我正在尝试计算一个特定单位在面向地图上的某个方向(在一定范围和朝向范围内)时可以“看到”哪些区块。最简单的方法是向外绘制一定数量的图块,并对每个图块进行射线投射。但是,我希望有一些更有效的方法。图片说一千个字: 红点是单位(朝上)。我的目标是计算黄色磁贴。绿色块是墙(墙位于图块之间,很容易检查是否可以在两个图块之间通过)。蓝线代表的是类似我所说的“光线投射”方法,但我不想这样做。 编辑:单位只能面向北/南/东/西(0、90、180或270度),FoV始终为90度。应该简化一些计算。我在想有一种递归的/基于堆栈/基于队列的算法,但是我不太清楚。 谢谢!
13 2d  algorithm  tilemap 

4
玩家对平板电脑感到疲劳吗?
我正在考虑为平板电脑制作游戏。来自PC /控制台的背景,我敏锐地意识到用户界面的巨大差异,因此我需要考虑目标平台来进行设计。 我担心的一方面是玩家的疲劳感。PC和控制台上使用的输入设备(键盘和游戏控制器)针对扩展播放进行了优化,并具有成熟的人体工程学设计。大多数经验丰富的玩家都可以轻松使用它们一个小时,只需数以千计的按键操作,而不会感到疲劳。设计用户体验时,其后果从设计师可以依靠这个级别的大小/长度,步骤需要执行命令,游戏的节奏等等。 触摸屏平板电脑呢?玩家会更快疲劳吗,还是无法在单位时间内执行多次轻击/刷卡操作?如果是这样,是否有任何资源或有关此问题的指南?

5
如何使用自定义引擎在多个平台上运行?
Unity和Unreal等游戏引擎可以在多种平台上运行。我想知道他们是如何做到的。 我已经使用C ++和OpenGL已有一段时间了,我正在寻找的资源是集成一些东西,使我可以在不同的平台上运行而无需重写。类似于LibGDX,您可以使用基本API编写代码,然后该API将其转换为HTML,Android,iOS等。我知道我可以使用其他引擎代替编写自己的引擎,但是我对学习经验很感兴趣。

3
如何模拟色盲以进行辅助功能测试?
是否有可以下载的应用程序(或Windows的某些配置,或其他内容)可以让我看到我的游戏对不同色盲用户的显示方式? 有已经很好的问题如何避免严重,设计你的游戏色盲。VisCheck还提供了一个Photoshop滤镜是一个不错的主意,除了其图像处理上载服务已关闭。 因此,有没有可以用来模拟色盲并查看外观的工具?理想情况下,我想尝试其他类型(红色/绿色,蓝色/黄色,中度/严重)。 如果不是,除了忽略它或与色盲人接触(我不知道)以外,其他游戏开发人员如何测试/避免这个问题?

4
避免资源的双重压缩
我将.pngs用于纹理,并在.zip游戏项目的文件中使用虚拟文件系统。这意味着我的纹理被压缩和解压缩了两次。这个双重压缩问题的解决方案是什么?我听说过的一种解决方案是将.tgas用于纹理,但是似乎很久以前,因为我已经听说过。另一个解决方案是在上实施解压缩GPU,由于这样做很快,因此无需考虑开销。

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.