存储大型2D游戏世界

技术标签: 数据结构  空间

我一直在尝试如何存储2D游戏世界的不同想法。我对听到大量物体的听力技术很感兴趣,同时管理可见的集合(让我们说10万瓦片广场)。显然,这种技术可以根据游戏如何使该空间变化而有所不同。

让我们假设我们正在描述滚动的2D游戏世界,而不是基于屏幕,因为您可以在逆转的情况下从这种设置中公平地进行屏幕渲染,而逆转几点凌乱。

在这里寻找语言不可知的解决方案,所以它对别人更有帮助。

编辑: 我认为这里的一个很好的答案将是对想法的一般性审查,因为一些响应者试图考虑这一点,但也开始解释不同的解决方案如何适用于这些情景。这是一个有点复杂的问题,所以我期待一个很好的答案来反映这一点。

看答案

Quadtrees. 是存储有关大型二维世界和其内部物体的数据的相当有效的解决方案。


智能推荐

echarts实现2D世界地图

效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0...

2d游戏地图渲染图层顺序(1)

2d游戏里常见的45度角,建筑物之间相互覆盖渲染问题 但是难免会遇到覆盖不正确的情况 显然后面个建筑错误的覆盖了前面一个建筑。 在建筑物覆盖时不能简单粗暴的两个for循环去按从第一排到最后排,从左到右的顺序去覆盖。针对这种情况,可采用拓扑排序来解决问题   大概思路如下: 1.从第一排到最后一排挨个找建筑物,找到一个建筑物A后,去判断这个建筑物周边被什么元素覆盖 2.建设建筑物A被B、C...

2D横版跳跃游戏第二节

跳跃系统 按空格让玩家跳跃起来 **原理:将刚体y的速度等于跳跃的速度 ** 在C#Move脚本里添加代码 (1)先设置跳跃的速度 (2)让玩家跳起来 将刚体y的速度设置成跳跃的速度即可 (3)设置if语句 判定玩家按下了空格键 至此,保存进入游戏 你会发现玩家可以跳跃了 但是会发现玩家可以无限跳跃 为了游戏的平衡性和合理性 要让玩家到达地面上才可以跳跃 先给地面添加Ground1的标签 然后我们...

2D动作游戏开发与实现(翻译)

原文太长,所以将翻译与原文分成了两部分, 主要是讲2D游戏瓦片规则及不规则渲染与角色碰撞原理的。 因为单纯的2D游戏开发过于简单,所以本文尝试结合不同的2D平面游戏并将之归类,列出他们的优缺点,然后讨论下一些实施的细则。长远目标是在2D平面游戏开发方面的指导做的十分全面。如果有任何建议,更正,要求或者补充,请留言! 声明:有些文章的信息是通过反编译引擎的,并不是通过代码或者编程者本身。很有肯能他们...

《2048》-UGUI搞定2D游戏研发

课程介绍: 2048 是一款比较流行的数字游戏,五斗米老师带你完全还原这款游戏,发布到手机上完全可以达到以假乱真的地步。 这并不是一款入门游戏案例,你需要懂一点点C#,会一点点UGUI,学习这个案例最大的成就感在,不同设备的适配, 竖屏游戏也能横屏玩,这不在仅仅设置锚点位置了,除了这些动画的制作和使用,数据持久化,合并的核心算法, 九宫格图片使用 ……,来来来,小二,上...

猜你喜欢

原型对象,原型链

函数都有prototype属性,它指向原型对象。 实例对象有__proto__属性,它指向对象原型 每一个原型对象都有constructor输赢,指向构造函数,每一个原型对象又具有__proto__属性,这个指向Object.prototype.在这里插入图片描述...

Node 调用 dubbo 服务的探索及实践

2.Dubbo简介 2.1 什么是dubbo Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 2.2 流程图 Provider : 暴露服务的服务提供方。 Consumer : 调用远程服务的服务消费方。 Registry : 服务注册与发现的注册中心。 Monito...

mysql总结

mysql基础入门的总结     关于数据库:     数据库是软件开发人员要掌握的基本工具,软件的运行的过程就是操作数据的过程,数据库中的数据无非就是几个操作:增-删-查-改。         Mysql安装完成后,需要配置变量环境,找到配置路径path,然后把mysql安装目录bin文件导入就可以了。 然后运行cm...

adb及monkey常用命令

adb常用命令: 查看手机是否连接:adb devices   连接设备:adb connect 设备ip:端口号  若有连接多个设备需指明设备ip及端口号 安装APP:adb install [-r] 包名  -r表示覆盖安装,首次安装可省略 卸载APP:adb uninstall 包名 列出设备中所有应用包名:adb shell pm list packages ...

PC端浏览器如何设置无图模式

以谷歌浏览器为例,注意有些浏览器并不支持该功能。 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置--》隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图片,其中也可以只禁用某些网站图片,或者只开启自己想显示图片的网站...

问答精选

Correctly formatting GCM notifications?

I'm currently trying out the google cloud messaging service with its sample application "Guestbook." https://developers.google.com/cloud/samples/mbs/ I'm attempting to send notifications tha...

Are there any performance benefits of using Asynchronous functions over Synchronous in Node Js?

Now I came across an article that distinguishes between an Asynchronous function and Synchronous functions. From my understanding of the different examples and explanations, synchronous functions are ...

Python: Costing calculator output

Good day all I'm busy creating a small costing calculator for the signage department. I'm not getting the calculator to output the amount. Brief Description: You enter the height and width and then wh...

Flask-SQLAlchemy - model has no attribute 'foreign_keys'

I have 3 models created with Flask-SQLalchemy: User, Role, UserRole role.py: user.py: user_role.py: If I try (in the console) to get all users via User.query.all() I get AttributeError: 'NoneType' obj...

Seeding many PRNGs, then having to seed them again, what is a good quality approach?

I have many particles that follow an stochastic process in parallel. For each particle, there is a PRNG associated to it. The simulation must go through many repetitions to get average results. For ea...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答