基于javascript 2d图块的游戏渲染(terraria风格)

2ic8powd  于 2023-02-07  发布在  Java
关注(0)|答案(3)|浏览(130)

我以前做过terraria的克隆。我发现,作为一个项目,它们非常有趣。但是随着terraria的1.2更新,我想要一个可以随时随地在任何计算机上运行的克隆。所以我正在使用HTML5。
起初,我认为它会很简单--就像我过去使用的其他语言一样。
但是一旦我开始尝试,我就开始面临许多问题。我没有任何代码可以分享,因为我已经删除了所有代码,并无数次地尝试。我只能在我的网站上实时编辑,所以当我想再试一次时,我要么创建一个全新的页面,要么只是编辑我现有的页面。由于缺乏无限的存储空间,我编辑了我现有的页面。
我所尝试的一些伪代码如下:
设置fillStyle为black.循环宽度和高度/16并创建x个rect().填充所有rect.绘制玩家(用图像或另一个不同颜色的rect).
这很好用,我可以渲染得很好。但是它比我想要的要长得多。如果我用它来渲染的话,我会得到大约.4FPS。所以我想知道的是,我如何才能有效地渲染一个扩展到视口区域之外的基于2d瓦片的Map?
我不想要理论,我知道概念。我需要帮助理解如何实现这些概念。一些代码,这样做准有效将是梦幻般的看到。
编辑:
我只能实时编辑,因为我使用的是chromebook,没有选项让我使用文本编辑器,然后在完成后上传文件。

cyvaqqii

cyvaqqii1#

如果你渲染了整个东西一次,那么你会得到更少的滞后。也许有16x16网格在整个Map中,可以保存,然后作为一个整体渲染需要?你可以(重新)渲染他们时,他们被修改,当他们第一次出现。

bpsygsoo

bpsygsoo2#

我在一个类似的游戏中也是这样做的。我注意到的一件事是,对于非常大的Map,再次绘制整个背景需要很长时间。相反,制作多个画布元素,只绘制一次背景。然后使用另一个画布在上面绘制玩家和敌人(以及其他非静态的瓦片)。

mbskvtky

mbskvtky3#

我只是用scratch.mit.edu来编码,现在canvas元素好像错了,就是这样:<canvas width="840" height="1244"></canvas>。里面什么都没有。但是,我确实发现了一些非常令人不安的事情。现在,当我说<canvas>元素是空的,我不完全正确。它也有<iframe>元素,但它也是空的。但是它确实有一个源代码(src)查看此内容:

<iframe src="svg://#7382939238578,9234973905703426598345345.3457178293748298384923.23749824.2374932.773.210597348347239" id="SVG"&gt;&lt;input src="terraria-stamped.html"></iframe>

所以,我想出了这样一个地球模型。2D,播放器设计师(可能不起作用),Terraria字体(也可能不会工作),到目前为止,一个Map(X标记斑点)。另外,我添加了深红色(从狮鹫那里得到的主意)但是它在地下产卵。它的产卵半径是产卵点右侧的184格,还有156个瓦片。NPC不能在那里有房子。查看故事。

<a href="http://www.sites.google.com/ucaes.org/terrariacode/">click here.</a>

相关问题