游戏开发

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

2
在追逐游戏中对玩家的敌人直线运动
我正在创建一个游戏,敌人会随机在地图上生成,然后每帧以随机速度向玩家移动。该地图没有障碍,因此敌人应始终沿直线移动。我写了几次移动函数,但是无论敌人总是打0、45、90、135、180、225、270、315角,但绝不打直线。这是代码示例: base_speed = random(); diff_x = abs(enemy_y_pos - player_x_pos); diff_y = abs(enemy_x_pos - player_y_pos); if (diff_x > diff_y) { y_speed = base_speed; } else if (diff_y > diff_x) { x_speed = base_speed; } if (enemy_x_pos < player_x_pos) { velocity.x = x_speed; } else if (enemy_x_pos > player_x_pos) { velocity.x = …
10 ai  movement 


4
3D中的程序性地形:做了什么?有共同的算法和/或理论吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 除了编程外,环境建模还需要大量时间。 我不知道所涉及的工作时间,例如在魔兽世界地牢级别,或其他类似城市的美好环境,未来环境,丛林,幻想等,但是这类工作是由艺术家从头开始的。 TorchLight级别随机化器涉及哪些技术,其他标题与此相似吗?有这种技术的姓氏吗?


2
为了学习Bullet,将Bullet用于2D物理而不是Box2D是否值得?
问题不多了。我并不担心开销,因为我确信它们都可以满足我的需求。基本上,由于Farseer物理引擎,我对Box2D概念很熟悉,但是当我跳到3D东西时,我想使用Bullet。也许Bullet即使在2D领域对我也具有一定的教育价值? 这个问题的一般版本是:如果我计划将来使用3D物理引擎,是否应该对2D游戏使用3D物理引擎?还是这是浪费时间而没有提供教育价值?

2
在大型瓷砖地图以及地牢上“分区”区域
我的游戏以伪无限且随机生成的方式具有类似于Minecraft的地图。又大 假设用户浏览了1000x1000区域(此处为2D),那么就是1,000,000个图块。 显然,我将无法将其全部存储在内存中。我也不只是想忽略10个磁贴或任何半径范围之外的所有内容-两者都不会更新(所有NPC,也许是反应性磁贴),我将不得不处理诸如1382,12918之类的笨拙位置。 因此,如果我要将其拆分为块或区域或诸如64x64的瓷砖之类的东西,则必须存储每个瓷砖和对象的位置,例如: 块a,b 位置x,y。 但是,如果我想要在地图中使用地牢之类的东西怎么办?因此,一块瓷砖可能会导致一个40层的地牢,每个区域的面积为40x40。我无法将它们完全存储在同一张地图中。 还有记忆的一面;我可以合理地同时在内存中存储多少?我可以很容易地按ID进行平铺,并在那里有普通的2D阵列。还是再说一次,有没有比包含瓦片类型的数据文件更有效的解决方案?所以对于64x64 ..那只会是20K或其他 我希望尽可能多地加载最真实的更新。但是我不知道在不浪费内存的情况下可以达到什么样的限制。

3
《我的世界》世界中的照明
《我的世界》是一款主要基于高度图的游戏,并使用该高度图信息使世界充满光明。据我了解,高度图中的最高点是受阳光影响区域的末端。上方的所有物体都被阳光照亮,下方的所有物体都受到附近8个半径范围内的光线的影响。 因此,如果您在世界之巅上有一个浮岛,那么位于其下方的所有事物都会被视为一个洞穴。当两个灯影响同一点时,较亮的灯将获胜(对此不确定)。 无论哪种方式,Minecrafts的照明模型都存在两个问题:首先,如果您的世界没有高度图,那么弄清楚究竟应该发出什么阳光以及什么不发出阳光变得很棘手。一种简单的方法是假设世界(在我的情况下)是一块漂浮的岩石,然后从两个方向遍历每个轴并找出岩石的开始和结束位置。但这并不能完全消除问题,因为岩石中的凹痕不应该处于黑暗中。 Minecraft本身会将光信息与有关块材料的信息一起缓存在其块中。因此,只有在世界被修改的情况下,照明才必须更新。不幸的是,该过程在更新上仍然相当缓慢,并且在快速更改灯光时,人们可以看到照明落后。如果很多块发生变化(TNT,日落等),并且您没有运行最快的计算机(或Mac上的Java),则尤其如此。 从我对3D图形照明的了解仍然有限,像Minecraft这样的世界应该不是最大的问题。您将如何解决这个问题? 我认为体素世界中照明的基本要求是 更新速度足够快,以至于可能在单个帧中发生。一个人可能可以在图形设备中进行照明并将更改后的照明信息下载到主RAM。 灯光信息必须能够快速用于主要游戏逻辑,因此不能完全基于图形设备:推理:灯光会影响草的生长,怪物的产卵等。 灯光更新必须是局部的,或者有其他一些限制,这样就不必重新照明可能很大的整个世界。 主要思想是使灯光更新更快,但不一定更美观。对于一般的灯光渲染性能改进,可以很容易地在其中添加SSAO,这将带来更好的效果。
10 opengl  maps  lighting 

3
减少图的边数,使其保持连接状态
我正在设计一个带有随机生成的地牢的游戏。我想将其视为一个连接的,无向的图,其中节点是房间,边缘是门或走廊。然后,我选择一个“侧面”节点作为地牢入口,计算该入口与所有其他节点之间的距离,并确定最远的节点之一是地牢的“目标”(宝藏,上司,公主等)。 我看到了两种生成最终地牢地形的方法: 首先生成一个随机图,然后在考虑边缘连接的情况下尝试用随机位置的房间填充2d世界。我认为这有时会很困难,因为可能会将房间生成器“锁定”以尝试将其放置在不可能的地方。 生成第一个房间,将它们随机放置在合适的位置,然后将结果映射到节点和边缘。我决定尝试一下。 我的想法包括: 首先生成一个包含整个地下城的大房间。 在大房间内的任意位置放置一堵墙,将大房间分成2个不同面积的小房间。 然后,我继续将每个房间划分为2个,直到它们变得太小或房间总数达到最大值(或其他任何条件)为止。每个新房间都是一个节点。 完成后,我检查每个房间并找到所有其他相邻的房间,将2个节点标记为通过边连接。 这样,我确保所有房间在2D世界中都有可能的位置,并通过连接的图形正确映射。 我的问题是连接房间的门和走廊太多。 因此,我想使用一种算法来减少连接的无向图的边数,但最后保持连接状态(所有节点保持可达)。

2
使用XNA在游戏中进行关卡设计?
我想知道游戏中的关卡设计。我目前的情况是围绕Tiled展开的-我有许多不同的层,其中包含不同类型的对象(对于不熟悉Tiled的任何人,对象不过是具有分配了任意属性的坐标)。 当前,每次对地图文件进行一些更改时,我都会重新编译游戏,以查看所有位置是否正确。如果检测到地图文件更改,是否可以让我的游戏自动重新加载关卡?XNA甚至允许这样做,还是内容管道的工作方式不允许这种方式的动态内容?任何提示或建议都是绝对欢迎的。
10 xna-4.0  tiles 

6
2D行星纹理的3D幻觉
几年前,我无意间听到了一种使用2D纹理为用户提供旋转行星幻觉的技术。鉴于用户无法更改其位置或视口。 这种技术叫什么名字?
10 2d  3d  terminology  planet 

3
您如何设计频繁变化的游戏的记录/重播系统?
我正在使用免费的MMORPG,但遇到了问题。 我(和其他人)正在开发游戏的视频记录系统。这个想法基本上是:我们记录所有带有时间戳的发送和接收的包,以及来自客户端的一些本地数据,然后将其转储到文件中。为了播放视频,我们仅模拟文件中的所有内容。我们还可以选择使用ffmpeg将视频导出到avi。 问题是:当我们在游戏的各个版本之间进行更改时,很难保持视频的向后兼容性(添加/删除命令,功能更改等)。有解决这个问题的好方法吗?而不是拥有一堆不同的播放器,并为每个版本的视频文件选择合适的播放器? 了解其他游戏如何处理这种情况将很有帮助。 感谢您的帮助,对不起我的英语。

1
不鼓励在Android游戏开发中使用集合吗?
在为Android开发游戏项目时,我正在挖掘一些有关游戏代码性能优化的信息。我知道在游戏代码中不鼓励使用Java 集合(例如List,Arraylist等),尽管集合是Java编程中的有用工具。为什么呢?我想知道技术细节,因为Collection框架会对Android系统产生多大的影响,为什么?在这方面的任何帮助将是巨大的。
10 android 

3
在哪里聘请平面设计师从事手机游戏?
我需要找到一个有才能为我的手机游戏创建一系列2D图形的人才。我的图形还不够令人印象深刻,但是游戏玩法却又稳定又有趣。 这是一个包含多个部分的问题: 我从哪里开始找人? 我应该为自定义图片和背景支付什么费用? 我应该使用哪种条款,以便在完成艺术品后获得专有的,免版税的所有权?

1
开发C64游戏的工具
只是想知道当今人们用什么来开发Commodore 64游戏? 我有《程序员参考指南》,其中包含所有详细信息,但是在现代时代,我认为我不必在实际的C64本身上进行开发? 是否有在Windows或Mac OS X上运行的工具有点像IDE,该工具提供了一些帮助和某些调试功能(例如,通过挂接到仿真器)或易于打包到.d64磁盘映像中? 6502汇编程序是一种选择的语言,还是C语言开发可行?(在这里忽略BASIC)
10 tools 

3
在线棋盘游戏引擎
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想创建一个棋盘游戏的在线实现。我可以使用什么引擎来编写游戏并使尽可能多的人容易使用它? 我希望它可以被广泛访问,因此最好将用户界面运行在浏览器中,而不是在单独下载的应用程序中运行。同样,它应该是跨平台的,而不仅限于一个平台。纯JavaScript / HTML是最好的,因为尽管Flash或Java也可以接受,但那样一来,它也可以在iPad上使用。Silverlight没有市场渗透力(例如,我没有安装),而且XNA太有限了。 更好的其他功能包括良好的聊天和社交功能(或与其他聊天或社交网络系统集成),排行榜或锦标赛系统,以及易于集成的机器人,以在周围没有足够的人类玩家时提供AI对手。游戏计时器,以使人们以合理的速度移动,也是很好的。保存游戏记录,并允许人们重播和查看记录以供研究,这也很好,尽管我并不期望太多,因为这些类型的功能只会出现在专门为象棋或围棋之类的游戏引擎中。 使用自由/开源软件将是一个很大的优势,因此我可以自己扩展它,尽管封闭的或托管的解决方案如果可以提供足够的上述功能或提供某种扩展功能的方法,则可以接受。 是否有满足我需求的此类系统?或即使不是完全匹配的,也很接近的东西? 一些不能完全满足我需求的类似系统包括: Yahoo Games,它是基于Web的,但是我不能为此编写自己的游戏(或该类别中许多类似服务器中的任何一个)。 数量是基于SVG和XMPP构建的。它是开放源代码,旨在成为一个开放标准,支持bot等,但是它需要单独下载客户端,并且似乎不再积极开发或使用。 SuperDuperGames,这是一个开放源代码的在线系统,用于执行回合制(通过邮件播放的方式)游戏。也就是说,它不是实时的或实时的,而是您在第二天左右提交您的举动,并等待某人提交他们的举动。这是一个活跃的社区,但我希望可以在几周或几个月内就可以现场玩游戏。

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.