【发布时间】:2012-01-02 05:46:04
【问题描述】:
我从 2 年前开始就在浏览器中构建策略游戏。它已经被一小群人积极玩过,所以它是一个有效的游戏。 我们的问题是它的资源匮乏。基本上你想要歌剧或铬。 IE9 或多或少无法播放,firefox 在某些地图上可能会很慢。
该游戏是一款基于图块的自上而下的游戏,地图使用 64x64 像素 DIV。
我们目前处于结束阶段,我们正专注于优化。消耗资源的东西之一是我们的动画水。我们将 32 块不同的水块分成 15 帧。因此,一个 1.1 mb 的 .gif 文件中有 480 个 64x64 图像。
这里是水的链接:http://www.warbarons.com/beta5/terrain/water/water2.gif
我们的游戏使用战争迷雾来隐藏你看不到的敌方单位和城堡,就像任何 RTS 游戏一样。所以在 .gif 之上通常有一个带有透明 PNG 的图层。
看起来这个解决方案对浏览器要求很高。当我滚动地图以在 FireFox 中显示水时,CPU 会上升 25%,而当看不到水时,它会在 4-5% 左右。
我已经在谷歌上搜索了几天,试图了解一种更好的技术。我发现了另外两种方法,或者使用遍历电子表格的画布标签,或者使用 CSS 循环遍历电子表格。
我看到这两个选项的问题是所有水砖必须保持同步。如果一个在另一个之前开始播放,波浪将不会同步,这会破坏无缝的外观。
我想知道是否有人有解决这个问题的想法?我知道拥有多个 gif 动画会导致不同步问题。
有没有一些更巧妙的方法来使用画布来做到这一点?甚至可以将画布与 div 混合使用,还是需要我们更改整个地图引擎?
任何帮助将不胜感激。
【问题讨论】:
-
“所以在 .gif 之上通常有一个带有透明 PNG 的图层”——这不是很容易作弊吗?
-
当您加载游戏时,只会从服务器获取您知道的信息。当您进入 FOW 时,对数据库的 ajax 调用正在检查您在移动期间将发现的所有图块。因此,客户没有关于他不应该知道的事情的信息。 PNG 只是为了表明您看不到该区域的内容。
标签: animation canvas map gif tile