游戏开发

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

3
P2P多人游戏与客户端服务器的局限性
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我正在阅读多人游戏架构。 到目前为止,我发现的大多数文章都是关于客户端-服务器模型的。 我想知道使用p2p架构的局限性是什么?可以使用哪些“类”游戏(或更常见的游戏)来实现?不是吗 总体而言,它与客户端-服务器模型的主要区别和局限性是什么?

1
libgdx中的Texture,TextureRegion,TextureAtlas,Sprite和Image之间有什么区别?
我到处搜索了教程。我见过人们使用上述类来加载图像。 根据我的理解,所有类都无法读取两个图像的幂次,因此TextureRegion / TextureAtlas通常用于加载Sprite工作表,其中工作表包含多个图像。而对于Texture / Sprite / Image,它们用于加载带有单个图像的Sprite工作表。 但是,我不确定在哪种情况下应该使用Texture / Sprite / Image,在哪种情况下应该使用TextureRegion / TextureAtals。 如果我写错了,请纠正我,因为在看了各种教程后,我对API中的术语有些困惑。
12 libgdx 

2
更改GL_TEXTURE_WRAP)_(S / T)有什么作用?
我正在研究一些OpenGL初学者教程,而当前的教程则教如何将纹理应用于简单的矩形。教程中的状态告诉我将纹理参数GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T设置为GL_CLAMP_TO_EDGE,但是我不确定它的实际作用。我知道这与如何处理大于/小于被映射到的空间的纹理有关,但是我不确定这实际上会导致什么行为。GL_CLAMP_TO_EDGE有什么作用?与GL_CLAMP,GL_CLAMP_TO_BORDER,GL_REPEAT有何不同?在此先感谢您,如果可以为像我这样的白痴提供图片,请多加帮助。
12 opengl  textures 

1
在均匀地形上进行2D,非网格移动的寻路
我正在寻找游戏中寻路的最佳解决方案。该地图最终是基于网格的,但是实体使用浮点定位,并且可以沿任何方向移动到地图上的任意点。我的游戏中的“地面”具有统一的移动成本,但是当然可能存在障碍。大多数障碍都是静态的,尽管游戏中还会有其他有生命的实体,但我可能会不考虑它们而逃脱-这是一款等距的主题医院风格战略游戏,因此没有战斗力。 我见过的大多数寻路文章都涉及3D或基于网格的2D运动。有什么建议可以涵盖我的用例吗?非常感谢。
12 2d  path-finding 

2
用Perlin蠕虫产生洞穴
我目前正在尝试使用3D Simplex Noise生成类似于Minecraft的体素地形,并且还希望实现洞穴。 我在此线程中找到了Perlin Worms的方法,该方法产生了非常好的结果。但是,我不知道如何逐块生成它。这是否可能,或者有其他替代方法可以逐块地产生类似洞穴的蠕虫吗? 编辑:这是我不知道如何解决的问题。 编辑2:这是将2D脊状多重分形噪声与“单纯形噪声”高度图组合而成的结果。仍然需要一些调整,但这几乎是我想要的结果。感谢Byte56。

4
旧游戏(例如Golden Axe或Street或Rage)是否使用图块地图?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想知道是否像Golden Axe(genesis)或Rage Street(genesis)之类的旧游戏在关卡中使用了tilemap或背景位图。 我找不到任何能解释这个问题的资源,并且可以在网上搜索周围的背景图像,但从未为这些关卡找到任何图块图。当然,这并不能回答问题,但是看起来他们在整个级别上都使用了背景位图。 但是我不确定那些旧的控制台存储这样的“大”图像并进行渲染是否可行。 有谁知道在那些旧系统上的编程知识,并且知道这些“透视”级是如何构建的?
12 tilemap 

2
如何从变换矩阵中提取欧拉角?
我有一个实体/组件游戏引擎的简单实现。 变换组件具有设置局部位置,局部旋转,全局位置和全局旋转的方法。 如果将变换设置为新的全局位置,则局部位置也会更改,以在这种情况下更新局部位置,我只是将当前的变换局部矩阵应用于父级的变换世界矩阵。 在那之前,我没有任何问题,我可以获得更新的局部变换矩阵。 但是我正在努力如何在变换中更新局部位置和旋转值。我想到的唯一解决方案是从变换的localMatrix提取平移和旋转值。 对于翻译来说,这很容易-我只取第4列的值。但是轮换呢? 如何从变换矩阵中提取欧拉角? 是这样的解决方案右?: 要查找围绕Z轴的旋转,我们可以发现localTransform和X的X轴矢量之间的差值轴线parent.localTransform的矢量,结果存储在德尔塔,则:localRotation.z = ATAN2(Delta.y,德尔塔。X); 围绕X和Y旋转相同,只需要交换轴即可。

3
基于组件的设计中的输入处理
我知道这个问题已经问过几次了,但是我仍然不确定如何在基于组件的引擎中实现输入处理。 我使用的基于组件的设计基于T = Machine的博客系列以及Artemis(其中实体只是id)。 实现输入处理时,我有三个主要想法: 输入组件将保存其感兴趣的事件。输入系统会将键和鼠标事件转换为游戏事件,并使用输入组件在实体之间循环,如果它们对事件感兴趣,则输入系统将采取适当的措施。该动作将被硬编码到输入系统。 没有输入组件。您可以将具有特定事件的实体注册到输入系统。输入系统然后将消息(具有实体ID和事件类型)发送给其他系统,以便它们可以采取适当的措施。或与第一种情况一样,这些动作将被硬编码到输入系统中。 与第一种方法类似,该组件将包含事件到函数(即std::map<std::function>)的映射,而不是对输入系统的动作进行硬编码,输入将调用该函数。这具有能够将同一事件耦合到不同动作的附加效果。 您会建议上述任何一种方法,还是对我实现灵活的输入处理系统有任何建议?另外,我还不熟悉多线程,但是也欢迎任何使实现线程友好的建议。 注意:我希望实现能够满足的另一个要求是,我能够将相同的输入传递给许多实体,例如,同时移动相机实体和播放器。

4
等距交错地图:计算屏幕上点的地图坐标
我知道已经有很多相关资源,但是我还没有找到与我的坐标系相匹配的资源,因此在调整这些解决方案以满足我的需求时遇到了很大的麻烦。我了解到,做到这一点的最佳方法是使用转换矩阵。实现这没问题,但是我不知道我必须以哪种方式变换坐标空间。 这是显示我的坐标系的图像: 如何将屏幕上的点转换为此坐标系?

4
AGS在“点击冒险”中过时了吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我正在开发一款在AGS引擎上进行编码的“点击冒险”游戏,而就在最近,“这已经过时了吗?”的问题正在研究中。已经来了。 我会承认,AGS年代比较久远,并且与P&C类型本身已经过时了,但是我还没有找到专门针对这种特定格式游戏的类似东西。 那么,它已经过时了吗?如果是,是否有更好的选择?

2
延迟渲染中的阴影
我已经阅读了一些有关延迟渲染的材料,我想我对此有所了解。但是我不明白的是它如何实现阴影。据我所知,G缓冲区不涉及为每个光线创建一个阴影贴图,所以我对于光照通过如何知道每个像素是否被遮挡感到困惑。毕竟,从摄影机的角度可见的给定像素实际上可能从任何给定的光的角度都不可见,并且从摄影机的角度可能看不到遮挡的几何形状,因此在G缓冲区中没有任何内容。 如果开始渲染阴影贴图,则看起来与正向渲染几乎相同-为每个光源渲染场景中的所有几何图形以渲染阴影贴图。 那么延迟渲染如何完成与正向渲染等效的阴影?

1
如何将子弹物理学整合到我的游戏中?
我下载了在此处找到的发行文件,但不确定从哪里开始。在我的游戏中,我有多个椭圆和一个球体,我希望所有这些相互碰撞。(它们都有网格和相关的边界体积) 编辑-我只是意识到长方体实际上与AABB关联。我想至少得改变一下。 我需要遵循哪些步骤?

3
是否有开源CCG项目?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 5年前关闭。 我很难找到任何完善的开源收藏卡游戏项目。 我想找到要向移动平台学习并移植到移动平台的项目。

5
为什么要使用资产清单文件?
有时您会看到人们建议这样做,而不是使用图形/声音文件/等。像这样... // Game code Image myImage = new Image("path/to/image.png"); ...您应该使用清单文件作为间接级别: // Manifest file MY_IMAGE: path/to/image.png // Game code Manifest myManifest = new Manifest("path/to/manifest"); Image myImage = myManifest.getImage("MY_IMAGE"); 我采用这种方法会有什么原因?如果我不使用编译语言,还会有理由这样做吗?

1
创建健壮的物品系统
我的目标是创建一个模块化/尽可能通用的物料系统,该系统可以处理以下内容: 可升级物品(+6武士刀) Stat修饰符(+15敏捷) 物品修饰符(%X几率造成Y伤害,几率冻结) 充电物品(魔术师使用30次) 套装物品(装备4件X激活Y功能) 稀有度(常见,独特,传奇) 可分解的(分解成一些手工材料) 可制作(可以使用某些材料制作) 消耗(5分钟%X攻击强度,恢复+15 hp) *我能够解决以下设置中加粗的功能。 现在,我尝试添加许多选项以反映我的想法。我不打算添加所有必要的功能,但是我希望能够按照自己的意愿实施它们。这些也应该与库存系统和数据序列化兼容。 我计划完全不使用继承,而是使用实体组件/数据驱动的方法。最初,我想到的系统具有: BaseStat:通用类,可随时随地保存统计信息(也可用于项和字符统计信息) Item:包含数据的类,例如列表,名称,itemtype和与ui,actionName,description等相关的事物。 IWeapon:武器界面。每个武器都有实现IWeapon的自己的类。这将具有Attack(攻击)和对角色统计的引用。装备武器后,它的数据(物品类别的stat)将被注入角色stat(无论拥有什么BaseStat,它都会作为Stat奖励添加到角色类别中)因此,例如,我们想制作一把剑(想产生带有json的物品类),所以剑将对角色属性增加5点攻击。因此,我们有一个BaseStat为(“ Attack”,5)(我们也可以使用enum)。装备时,此属性将作为BonusStat(将是不同的类)添加到角色的“攻击”属性中。因此,名为Sword的类将实现IWeapon,项目类别已创建。因此,我们可以向这把剑注入角色统计数据,并且在攻击时,它可以从角色统计数据中检索总的攻击统计数据,并在Attack方法中造成伤害。 BonusStat:是一种将统计信息添加为奖励而无需触及BaseStat的方法。 IConsumable:与IWeapon相同的逻辑。添加直接属性相当容易(+15 hp),但是我不确定要使用此设置添加临时武器(%x攻击5分钟)。 IUpgradeable:可以使用此设置来实现。我正在考虑将UpgradeLevel作为基本属性,在升级武器时会增加它。升级后,我们可以重新计算武器的BaseStat以匹配其升级级别。 在此之前,我可以看到该系统相当不错。但是对于其他功能,我认为我们还需要其他东西,因为例如,我无法在其中实现Craftable功能,因为我的BaseStat无法处理该功能,这就是我遇到的问题。我可以将所有成分添加为统计信息,但这没有任何意义。 为了使您更轻松地进行此操作,以下一些问题可能会对您有所帮助: 我是否应该继续执行此设置以实现其他功能?没有继承就可能吗? 您有什么办法可以想到,在没有继承的情况下实现所有这些功能? 关于物品修饰符,如何实现?因为它的性质非常通用。 有什么建议可以做些什么来简化构建这种架构的过程? 有没有我可以挖掘的与此问题相关的来源? 我确实尽力避免继承,但是您认为在保持相当可维护性的同时,可以轻松地通过继承解决/实现这些继承吗? 由于我的问题范围很广,因此可以随意回答一个问题,这样我就可以从不同的方面/人那里获得知识。 编辑 遵循@ jjimenezg93的回答,我用C#创建了一个非常基本的系统进行测试,它可以正常工作!看看是否可以添加任何内容: public interface IItem { List<IAttribute> Components { get; set; } void ReceiveMessage<T>(T message); } public interface …

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.