为HTML游戏构建可开发的世界地图的最有效方法

时间:2019-06-02 13:46:51

标签: html game-engine babylonjs

我有一个多人合作游戏项目,主要关注的是游戏地图。

一些上下文

玩家与世界地图互动。该地图是第一个预先生成的。该地图应基于图块(每个图块代表世界的一部分)。但是,玩家应具有更改地图的能力(在此处构建某些内容,在此处破坏另一项内容)。所有其他玩家都应该可以看到地图的这些修改。

问题

什么是有效的方法?

  • 经典数组存储在服务器端,并在用户执行操作时更新此数组?从该阵列构建映射时,客户端上的CPU消耗是否很大? (图像地图?<map></map>
  • 使用gdevelopbabylonjs之类的游戏“引擎”吗?

从我的角度来看,对我来说,要完全自定义地图,数组解决方案似乎是完成此任务的简便方法。但是我对此主题没有任何经验。

我最近对此map generator进行了查看,并尝试在其上构建地图(<map></map>),但这不允许我在生成地图后对其进行自定义。

1 个答案:

答案 0 :(得分:0)

我认为您最好的选择是:

  • 将地图数据存储在简单的可序列化数据结构中。例如,带有一些整数的对象的双精度数组-Tile Type枚举,Building Type,状态数据(如果需要)等等,这将使您可以轻松地在服务器和客户端之间进行序列化和发送数据。

  • 使用游戏引擎/画布渲染器/ webgl渲染器通过数据数组向客户端渲染视图。我对PIXI.js(使用WebGL或Canvas的2D渲染框架)和Phaser(基于PIXI的2D游戏引擎)有丰富的经验。因此,如果您的游戏是2D,我可以向您推荐这两个。 PIXI仅用于渲染,其中没有游戏逻辑,您将必须实现它。如果游戏不是那么复杂,或者您想学习如何自己做东西,那是很好的。另一方面,Phaser是具有完整游戏开发功能的完整游戏引擎,但这也意味着它对您可能不需要的东西更加肿。

  • 当用户单击发送到服务器的“用户x单击的图块x,y”时,处理输入,编辑主数据数组,然后将其发送回所有客户端。您可以将Web套接字用于该请求,也可以仅用于普通的HTTP请求

或者,您可以使用“大型”游戏引擎之一,然后从那里将其编译为js和html-Unity,Godot,Cocos创建者(在此实际上是用JS编写的)