首先,一些背景故事:

我正在什么可以相当于是一个“ roguelike ”游戏,所以我可以exersize一些有趣的想法,我有我的头左右浮动。该游戏是不会成为一个地牢抓取,但在任何情况下,显示会以类似的FASION要做,与简单的ASCII字符。

的情况,这是一个自我锻炼,我努力对自己的代码大部分的。

最后,我想有游戏上任意大的游戏世界可运行。 (到我设想在计算机实验室havening游戏网络和跨度许多显示器的点)。

现在,我已经得到了一些代码,可以读取和写入到文本控制台的任意部分,和一个简单的划分体系的建立,这样我可以有效路径找到。


现在的问题是:

我已经跑了一些基准,最大的瓶颈是文本控制台的重新绘制。

有一个游戏世界大型将要求显示的智能更新。我不想不得不重新把我的整个游戏缓冲每一帧... 我要如何设定,让只汲取游戏都已经被更新的部分一些指点。(而不仅仅是单个字符,因为我现在已经得到了)

我已经通过操纵WINDOWS.H Windows控制台,但我也有兴趣在得到它超过连接到服务器油灰客户在Linux机器上运行。

我试图适应某些视频处理例程,因为有将近1:像素和字符之间1的比例,但是我没有运气

我真正想要的一些背后的原理的简单解释。但是,一些实施例(psudo)码将是很好了。

有帮助吗?

解决方案

我不打算要求了解这一点,但我相信这是接近背后詹姆斯·高斯林的传奇的斯林的Emacs 重绘代码。见他的论文,题为适当,“重新显示算法”,以及普通字符串到-string校正问题

其他提示

使用诅咒,或者如果你需要自己做它,阅读有关VTnnn控制代码。这两种应用在Windows和* nix中的条款和控制台(和Windows)工作。您也可以咨询为线索的nethack源代码。这将让你改变的地方的变化发生在屏幕上的字符。

  

有一个游戏世界,大型意志   需要的智能更新   显示。我不希望有   每次重新把我的整个游戏缓冲区   框架...我需要一些关于一些指针   设置它,使之仅仅吸引   游戏的部分都已经   更新。 (而不仅仅是个人   字符我现在得到)

游戏世界的大小是不是真的有关,因为所有你需要做的是制定出可视区域为每个客户端和发送数据。如果你有一个典型的80x25控制台显示器那么你将要发送每次只需2个或3千字节的数据,即使你在颜色代码等的添加。这是典型的这种性质的大部分网游:更新哪些人可以看到,在世界上并不是一切

如果你想试图找到一种方法来减少你送什么,然后随意做学习之用的实验,但我们10年过去的地步,这是低效的更新控制台显示在一些接近实时,这将是一种耻辱,浪费时间来修复,并不需要固定的一个问题。请注意,上述链接的PDF给出O(ND)溶液,而简单地发送整个控制台为O(N),其中N定义为A和B和d的长度之和的一半。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top