我正在制作一款拥有 2d 世界的 MMO。 (这是一个学习项目,所以不要试图说服我放弃它 :) 我想为它试验一个新的数据存储,并且我读过关于 redis 的好东西。我已经完成了这些教程,我想我开始了解 Redis 的优势,但我不清楚如何为这样的世界建模。
这里有一些设计要求
- 我需要能够发送元素在世界中的当前位置。将这些划分为地理“房间”进行表演是可以接受的。
- 我需要能够在世界上“移动”一个物体,改变它的位置
- 我需要获取有关某个对象的信息:它的名称、类型、属性等。
- 我需要能够计算基本碰撞(obj a 想向右移动,那里有石头吗?)
您将如何在 Redis 中对其进行建模? redis是不是一个不合适的选择?
最佳答案
假设 2D 世界被分成已知坐标的正方形,您最好在 redis 中根据返回对象 ID 集(或导出/路径或地形等)的坐标生成键
例如一个非常简单的插图
obj:1:name = Rock
obj:1:passable = false
obj:2:name = Skeleton
obj:2:passable = true
loc:0:0:objs = {1,2} // loc:0:0 contains obj:1 and obj:2
loc:0:0:paths = {0:1, 1:0, 1:1} // three legal paths, to loc:0:1, loc:1:0, loc:1:1
我不是 Redis 专家,不知道这个域是否会导致您在 Redis 中出现问题,所以请对我的建议持保留态度。
关于Redis如何表示一个二维世界(MMO?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874090/