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

为HTML游戏构建可进化世界地图的最有效方法,html,game-engine,babylonjs,Html,Game Engine,Babylonjs,我有一个多人合作游戏项目的想法,我主要关心的是游戏地图 一点背景 玩家与世界地图交互。这张地图是第一张预生成的地图。此地图应以平铺为基础(每个平铺代表世界的一部分)。然而,玩家应该有能力改变地图(在这里建造一些东西,在这里摧毁另一个东西)。这些地图的修改应该对所有其他玩家可见 问题 这样做的有效方式是什么 经典阵列存储在服务器端,并在用户执行操作时更新此阵列?从该阵列构建映射时,客户端的CPU消耗不是很大吗?(图像地图?) 使用游戏“引擎”,如或 从我的角度来看,对于我来说,要完全定制地图,

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

一点背景

玩家与世界地图交互。这张地图是第一张预生成的地图。此地图应以平铺为基础(每个平铺代表世界的一部分)。然而,玩家应该有能力改变地图(在这里建造一些东西,在这里摧毁另一个东西)。这些地图的修改应该对所有其他玩家可见

问题

这样做的有效方式是什么

  • 经典阵列存储在服务器端,并在用户执行操作时更新此阵列?从该阵列构建映射时,客户端的CPU消耗不是很大吗?(图像地图?
  • 使用游戏“引擎”,如或
从我的角度来看,对于我来说,要完全定制地图,阵列解决方案似乎是一种简单的方法。但我在这方面没有任何经验


我最近对此进行了研究,并尝试在其上构建地图(
),但这不允许我在地图生成后自定义地图。

我认为您最好的选择是:

  • 将地图数据存储在简单的可序列化数据结构中。例如,具有一些整数的对象的双数组-平铺类型枚举、建筑类型、状态数据(如果需要),等等,这将允许您轻松序列化并在服务器和客户端之间发送数据

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

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

或者,你可以使用一个“大”游戏引擎,然后从那里编译成js和html——Unity、Godot、Cocos creator(在这个游戏中,你实际上是用js编写的)