我有一个多人合作游戏项目,主要关注的是游戏地图。
一些上下文
玩家与世界地图互动。该地图是第一个预先生成的。该地图应基于图块(每个图块代表世界的一部分)。但是,玩家应具有更改地图的能力(在此处构建某些内容,在此处破坏另一项内容)。所有其他玩家都应该可以看到地图的这些修改。
问题
什么是有效的方法?
<map></map>
)从我的角度来看,对我来说,要完全自定义地图,数组解决方案似乎是完成此任务的简便方法。但是我对此主题没有任何经验。
我最近对此map generator进行了查看,并尝试在其上构建地图(<map></map>
),但这不允许我在生成地图后对其进行自定义。
答案 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编写的)