我正在制作一个MMO,它将有一个2d的世界。(这是一个学习项目,所以不要试图说服我放弃它:)我想为它尝试一个新的数据存储,并且我读过关于redis的一些好东西。我已经看过这些教程了,我想我已经开始了解redis的力量了,但是我不清楚我如何去模拟这样一个世界。
以下是一些设计要求
?
你会怎么用redis来模拟这个?红色是个不合适的选择吗?
发布于 2012-01-15 23:10:18
假设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我还不够专业,不知道这个领域会不会给你带来问题,所以请接受我的建议。
发布于 2012-01-15 23:24:42
Redis是一个键值存储,很可能不太适合这个任务,但如果我要尝试一下,我可能会阅读R-树(或另一个面向空间的数据结构),然后将这样的数据结构映射到键值存储模式上。例如,您可以在Redis中将MMO世界设置为R-树,方法是使树中的每个节点对应于Redis中的一个特定键,然后该键将包含边框(和/或其他叶数据)和指向每个子节点的键列表。
这至少允许您限制您的值大小(一个不一定由平面统一网格表示共享的属性),并按照log(n)的顺序保持任何给定操作所需的Redis查找次数。
玩得开心!听起来是个有趣的学习方法。
https://stackoverflow.com/questions/8874090
复制相似问题