2D游戏引擎如何组织游戏对象?

babaliaris

晚上好(来自欧洲)。

我正在尝试使用python和pygame创建一个2D游戏引擎,
引擎将与Unity 3D相似,但是您将只能创建2D游戏。
为了解释我的问题,我将向您展示一些我需要
继续学习之前要知道的课程


我有一个名为Sprite的类,它代表我的游戏对象,而我们关心的方法是render方法。每秒每帧调用一次此方法,该方法将sprite对象的图像绘制到屏幕中。它还调用另一个方法更新,您可以覆盖它并为您的sprite对象创建一些逻辑(我称其为brains:p)。我也有一个Scene,我将所有的Sprite对象存储到一个链表中。

为了渲染场景中的所有游戏对象,我使用上述算法Scene类中创建了一个方法

#obj is a sprite object.
#Is been called every frame per second.
for obj in gameobjects:
    obj.render()

如您所见,这是渲染场景中所有游戏对象的最简单方法。这是我的问题开始的地方。如果我们说我有10.000个游戏对象进入场景,则此for循环将延迟帧,从而导致滞后问题。

我想到的一种解决方案是仅渲染我可以看到的游戏对象(位于窗口边框内的游戏对象)。效果很好,但问题是我必须检查进入场景的所有游戏对象是否在窗口分辨率之内,并仅渲染它们。所以我做了这样的事情:

#This method is been called only every time there is a movement
#action into te game causing all the game objects to change position.
for obj in all_game_objects:
    if inside_resolution(obj):
        render_objects.append(obj)

#Is been called every frame per second.
for obj in render_objects:
    obj.render()

如您所见,我仍然需要检查所有游戏对象,所以我没有成功!

如果我能以某种方式将我的游戏对象组织到一个像二叉树之类的数据结构中,并创建一些仅返回窗口分辨率内的游戏对象的智能方法,那么我可以成功实现快速渲染系统。

所以我的整个问题是我可以使用什么数据结构来存储游戏对象?一棵树会非常快,但是如果不检查所有这些对象,我怎么能知道哪些游戏对象在屏幕分辨率之内呢?

据了解,像unity3D这样的现代游戏引擎正在使用树木渲染场景的不同区域(以及适合观看距离的区域),这就是它的工作原理。

我希望对我的问题的描述足够了。
谢谢您的耐心:p

弗雷德里克

将所有对象放置在一个二维网格中,该网格代表您的整个场景。然后,您可以轻松地仅遍历屏幕上可见的对象。现在,碰撞检测变得更加容易。

单元的大小取决于您。尝试不同的尺寸,看看哪种效果最好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多平台2D游戏引擎

来自分类Dev

使用 UNITY 游戏引擎开发 Android 2D 游戏

来自分类Dev

2D游戏,随机创建的对象

来自分类Dev

适用于Android的2D游戏引擎

来自分类Dev

2D等距(菱形)游戏引擎-反转精灵

来自分类Dev

Java 2D游戏引擎,LibGdx指示灯

来自分类Dev

用于制作PC平台游戏的2D Java游戏引擎

来自分类Dev

Unity2D-如何在2D游戏中围绕圆形移动和旋转游戏对象?

来自分类Dev

基于组件的游戏引擎:如何管理游戏对象之间的关系?

来自分类Dev

2D游戏范例

来自分类Dev

2D游戏范例

来自分类Dev

用于2D游戏引擎的Graphics2D包装器

来自分类Dev

LOVE2D游戏引擎; 2D Platformer碰撞系统

来自分类Dev

由组件组成的游戏对象的2D物理

来自分类Dev

2D Java游戏中的对象(精灵)异常移动

来自分类Dev

如何在Unity中找到2D游戏对象的长度

来自分类Dev

如何将2D图像作为游戏中的不同对象进行处理

来自分类Dev

如何为基于2D数组的游戏将对象随机放置在单元中?爪哇

来自分类Dev

具有网络服务支持的Android 2D游戏引擎

来自分类Dev

有没有基于Java的2D跨平台移动游戏引擎?

来自分类Dev

完全可复制的Javascript Physic 2D引擎,用于网络游戏

来自分类Dev

如何为2048游戏制作2D彩色图块

来自分类Dev

如何创建一个Android 2D游戏?

来自分类Dev

如何使敌人不要同时射击(2D游戏)?

来自分类Dev

如何在JavaFX中渲染场景?(2D游戏)

来自分类Dev

如何使2D游戏响应不同的分辨率?

来自分类Dev

如何在Godot中像素化2D游戏?

来自分类Dev

如何在 2d 游戏中创建“冲刺”能力

来自分类Dev

C#简单的2D游戏-使基本游戏循环

Related 相关文章

热门标签

归档