您好,欢迎来到Deep Madness开发日志的第4周。 这个星期,我继续研究瓷砖系统。 在大多数情况下,这意味着我没有很多可以吸引您的视觉吸引力的东西,但我确实做了一个小改动,使整个游戏看起来更好。 我用实际纹理替换了正方形。

在技术方面,我不得不花费大量时间来处理位图渲染代码。 我使用的原始版本相当随意。 您会看到,位图本质上是由两个部分组成的,即标题和像素数据。 标题包含信息,例如图像的宽度和高度,以及每个像素使用了多少数据以及类似的其他技术细节。 像素数据本质上是一长行数字,它逐行记录图像中每个像素的颜色。 最初编写位图渲染代码时,我不知道如何获取任何标头信息或如何找到标头结束和像素数据开始的点。 我最初的解决方案是只跳到数据的结尾,然后再跳回到像素数据的开头,因为我可以计算得出。 显然,这很奇怪,并导致了各种问题。

正如我在解决此问题时所发现的,标题实际上告诉您像素数据从何处开始。 因此,一旦我解决了这个问题,修复其余问题就非常简单了。

您可能在上面的屏幕截图中注意到的另一件事是背景。 从艺术上讲,这并不是一个令人印象深刻的变化,但是从技术上讲,它表示我已添加到位图渲染工具箱中的另一项功能:平铺。 在本周之前,必须分别绘制位图的每个图块。 但是现在我可以在大面积上绘制一个图块,并根据需要重复进行。 从现在开始,我将在背景,地形,UI元素以及其他任何有重复图案的地方重复使用此功能。 这是一个简单但重要的功能。

最后明显的增加是屏幕移动。 如果查看上周版本的gif,您会注意到屏幕固定在适当的位置,角色在屏幕上四处移动。 现在,您的角色保留在屏幕的同一部分,并且摄像机跟随他在地图上移动。 这意味着世界现在(貌似)是连续的。 您可以从一张地图走到另一张地图,而无需意识到它们是分开的地图。

也就是说,地图仍然各自保存为单独的文件。 正如我上周提到的,这是一个有问题的方法。 将来,我将更加有效地工作。 但是,该功能对于用户而言并不十分明显,因为它仅影响事物的技术方面。
我本周所做的最后更改是更改游戏的坐标系。 这是一个技术性很强且毫无趣味的话题,因此我将尝试使其保持简单。 在每个数学课程中,当显示带有X轴和Y轴的图形时,X随右移而增加,Y随右移而增加。 但是在计算机图形学中,Y轴是相反的。 您计算机上第一行像素的Y为零。
当您要模拟世界时,整个系统非常不便。 当您必须做所有数学运算时,要记住整个宇宙都是颠倒的,因此很容易犯错。 因此,我做了一些工作,将游戏世界中某物的位置与屏幕上某物的位置分开。 现在,不再以像素为单位测量所有内容,而是以米为单位进行测量,并且在需要将其放在用户屏幕上时,将米转换为像素。
本周就这样。 感谢您的阅读。 希望您喜欢!