Questions tagged «objects»

9
如何避免玩家与世界之间的循环依赖?
我正在开发2D游戏,您可以在其中上下左右移动。我基本上有两个游戏逻辑对象: 玩家:相对于世界的位置 世界:绘制地图和玩家 到目前为止,World依赖于Player(即具有对它的引用),需要其位置来确定在何处绘制玩家角色以及要绘制地图的哪一部分。 现在,我想添加碰撞检测,以使玩家无法穿过墙壁。 我能想到的最简单的方法是让玩家询问世界是否可以进行预期的移动。但这会在播放器和世界之间引入循环依赖关系(即,每个都有对另一个的引用),这似乎值得避免。我想出的唯一方法是让World移动Player,但是我发现这有点不直观。 我最好的选择是什么?还是避免循环依赖不值得?

3
如何为许多独特的武器/法术/能力构建代码
我是一个没有经验的程序员,使用Python(类似于Pogue,到目前为止还没有PyGame,因为我仍然只关注文本),因此在FTL的背景下创建了“类似Roguelike”的游戏。 我的游戏将包含大量产生独特能力的武器(入门者约为50种)。我正在努力了解如何以既强大(就允许武器产生根本不同的效果)又具有可扩展性(以便以后可以通过将它们放入文件夹等方式添加更多武器)的方式来构造目标代码。 )。 我的第一个本能是拥有BasicWeapon类,并从该类继承不同的武器。但是,这对我来说似乎是个问题:要么我必须使BasicWeapon类变得如此准系统以至于它基本上是无用的(所有武器共有的唯一功能就是名称和类型(手枪,斧头等)),或者我必须预测每个我将想出独特的效果并将其编码到BasicWeapon中。 后者显然是不可能的,但是前者仍然可以工作。但是,这给我留下了一个问题:我应该将单个武器的代码放在哪里? 我是否要创建plasmarifle.py,rocketlauncher.py,swarmofbees.py等,然后将它们全部放入游戏可以导入它们的文件夹中? 还是有一种方法可以拥有一个数据库样式的文件(也许像Excel电子表格一样简单),而该文件却以某种方式包含每种武器的唯一代码-无需求助于eval / exec? 关于后一种解决方案(数据库),我认为我正在努力解决的基本问题是,尽管我理解保持代码和数据之间的分离是可取的,但我觉得武器模糊了“代码”之间的界限和“数据”一点;它们代表了可以在游戏中找到的各种各样类似的事物,从某种意义上说,它们就像数据一样,但是它们中的大多数将至少需要一些不与其他任何项目共享的唯一代码,从某种意义上说,它们自然就是码。 我在此站点的其他地方找到的部分解决方案建议给BasicWeapon类提供一堆空方法-on_round_start(),on_attack(),on_move()等-然后为每种武器覆盖这些方法。在战斗周期的相关阶段,游戏将为每个角色的武器调用适当的方法,并且只有定义了方法的对象才会实际执行某项操作。这会有所帮助,但仍然无法告诉我每个武器的代码和/或数据应该放在哪里。 有没有其他语言或工具可以用作半数据,半代码嵌合体?我是否完全掌握了良好的编程习惯? 我对OOP的理解充其量只是个粗略的知识,所以我希望对那些不太计算机科学的回答表示赞赏。 编辑:沃恩·希茨(Vaughan Hilts)在下面的帖子中明确指出,我本质上讲的是数据驱动编程。我的问题的实质是:我如何以一种数据可以包含脚本的方式实施数据驱动的设计,从而使新武器能够在不更改主程序代码的情况下做新事情?

4
什么是存储动态游戏对象的最有效容器?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我正在做第一人称射击游戏,我知道很多不同的容器类型,但是我想找到最有效地存储动态对象的容器,该对象将在游戏中频繁添加和删除。EX子弹。 我认为在那种情况下,它将是一个列表,以便内存不连续并且永远不会进行任何大小调整。但随后我也正在考虑使用地图或集合。如果有人有任何有用的信息,我将不胜感激。 我是用c ++编写的。 另外,我想出了一个我认为可行的解决方案。 首先,我将分配一个大尺寸的向量。比如说1000个对象。我将跟踪此向量中最后添加的索引,以便知道对象的末尾在哪里。然后,我还将创建一个队列,该队列将保存从向量中“删除”的所有对象的索引。(不会进行实际的删除,我只知道该插槽是免费的)。因此,如果队列为空,我将添加到向量+ 1中最后添加的索引,否则,我将添加至队列前面的向量的索引。

6
电子游戏如何面向对象?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我一直想知道电子​​游戏,尤其是大型3D项目在多大程度上使用了面向对象的技术。我认为这两者都是很酷的,troll并且werewolf从enemy其中的某些属性继承并重写了它们的属性。但是,也许课程太重而无法进行实践,我不知道...
18 objects 

5
两倍接近的物体出现两倍大?
因此,我正在考虑创建一个2D游戏,在其中您还可以通过更改所在层来沿Z轴移动。根据深度,我想缩放2D精灵。 有一次,有人给我演示了一个演示,其中有很多2d子画面,通过滚动可以更改摄像机的深度。因此,放大时,对象将更靠近播放器,并显得更大。然后我想知道,当物体靠近1个单位时,该物体应该多大。您将如何计算?所以那个家伙告诉我:我使用的一条基本规则是:“对象的接近度是它的两倍,而外观则是它的两倍”。 现在,通过我自己进行测试,我知道该规则不适用于现实世界;)但是,在现实世界的计算中是否存在一些用于视角或某些常数的常量?还是公式? 我知道这可能不是问这样问题的最佳地点,但是由于这是我唯一一个用于解决与游戏有关的问题的网站,而且我的情况是游戏,因此我想尝试一下。另外,我有点期待这个人知道3D透视图和矩阵等方面的所有知识,因为它可能与3D游戏有关;) tl; dr: “一个接近两倍的物体,出现两倍大的物体”在现实世界中并非如此。但是哪个常数或公式正确?

2
如何使用Painter的算法获得准确的结果?
不久前,我问如何确定一张脸何时与另一张脸重叠。建议是使用Z缓冲区。 但是,我不能在当前项目中使用Z缓冲区,因此我想使用Painter的算法。不过,我不知道何时表面在另一个表面的后面或前面。我尝试了很多方法,但是它们都在极端情况下失败,或者即使在一般情况下也失败。 这是到目前为止我尝试过的排序方法的列表: 到每个面的中点的距离 到每个面的每个顶点的平均距离 每个顶点的平均z值 最大化每个面的顶点的z值并首先绘制这些值 每个面的顶点的最低z值并绘制最后一个顶点 问题在于,人脸可能距离更近,但距离仍然更远。所有这些方法似乎都不可靠。 编辑:例如,在下面的图像中,以蓝点为中点的表面绘制在以红点为中点的表面上,因为蓝点更近。但是,这是因为红点的表面较大,而中点距离较远。带红点的表面应该涂在蓝色的表面上,因为它更近,而中点距离则相反。 Painter算法中究竟使用什么来确定绘制对象的顺序?
14 3d  algorithm  objects  face 

4
面向对象的OpenGL
我使用OpenGL已经有一段时间了,并且阅读了大量的教程。除了它们中的许多仍在使用固定管道这一事实外,它们通常会将所有的初始化,状态更改和绘制都放在一个源文件中。对于教程的有限范围来说,这很好,但是我很难确定如何将其扩展到完整的游戏。 如何将OpenGL的使用跨文件分割?从概念上讲,我可以看到拥有一个仅将内容渲染到屏幕上的渲染类的好处,但是诸如着色器和灯光之类的东西将如何工作?我应该为灯光和着色器之类的课程设置单独的类吗?

1
如何随机放置不重叠的实体?
我正在为正在开发的游戏创建随机生成的环境。我正在使用OpenGL和编码Java。 我试图将树木随机放置在我的世界中(以创建森林),但是我不希望模型重叠(当两棵树之间的距离太近时会发生这种情况)。这是我在说什么的图片: 如果需要,我可以提供更多代码,但这是必要的代码片段。我存储在我的对象ArrayList有List<Entity> entities = new ArrayList<Entity>();。然后,我使用以下方法将该列表添加到该列表中: Random random = new Random(); for (int i = 0; i < 500; i++) { entities.add(new Entity(tree, new Vector3f(random.nextFloat() * 800 - 400, 0, random.nextFloat() * -600), 0, random.nextFloat() * 360, 0, 3, 3, 3); } 其中每个都Entity遵循以下语法: new Entity(modelName, positionVector(x, y, z), rotX, …
11 opengl  java  objects 
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.