一个基于HTML5 Canvas和Socket.io的多人在线弓箭手对战游戏,类似于io游戏风格。
- 多人实时对战: 最多30名玩家同时在一个房间内对战
- 大地图探索: 2000x2000像素的大地图,带有随机生成的障碍物
- 经验升级系统: 收集经验豆,随机三选一升级自己的弓箭
- PvP战斗: 击杀其他玩家获得他们1/3的经验值
- 多种升级选项:
- 伤害提升 - 增加箭矢伤害
- 移动速度 - 提高移动速度
- 生命值 - 增加最大生命值
- 穿透射击 - 箭矢可以穿透敌人
- 多重射击 - 同时发射多支箭
- 射击速度 - 减少射击冷却时间
npm installnpm start或者开发模式(自动重启):
npm run dev在浏览器中访问:http://localhost:3000
- WASD - 移动角色
- 鼠标移动 - 瞄准
- 鼠标左键 - 射击
- F键 - 收集附近的经验豆
- 地图上随机分布经验豆,收集可获得经验值
- 达到升级要求时会弹出三个随机升级选项供选择
- 升级所需经验:100 → 200 → 400 → 800 → 1600
- 每个玩家初始100生命值
- 箭矢基础伤害25点
- 击杀敌人可获得其1/3的经验值,被杀者保留2/3经验值
- 死亡后在地图随机位置重生
- 自动匹配到有空位的房间
- 每个房间最多30名玩家
- 实时显示房间内玩家数量
- Node.js - 服务器运行环境
- Express - Web框架
- Socket.io - 实时通信
- UUID - 唯一ID生成
- HTML5 Canvas - 游戏渲染
- JavaScript ES6+ - 游戏逻辑
- CSS3 - 界面样式
- Socket.io Client - 客户端通信
- 游戏状态面板: 显示生命值、经验值、等级、击杀数等
- 小地图: 显示地图全貌和玩家位置
- 排行榜: 实时显示击杀数排名前10的玩家
- 升级模态框: 选择升级选项的界面
- 操作说明: 游戏控制指南
- 收集经验豆升级自己的能力
- 击杀其他玩家获得更多经验
- 在排行榜上争夺第一名
- 成为最强的弓箭手!
可以在 server.js 中的 GAME_CONFIG 对象中调整游戏参数:
const GAME_CONFIG = {
MAP_WIDTH: 2000, // 地图宽度
MAP_HEIGHT: 2000, // 地图高度
MAX_PLAYERS_PER_ROOM: 30, // 每房间最大玩家数
PLAYER_SPEED: 3, // 玩家移动速度
ARROW_SPEED: 8, // 箭矢飞行速度
ARROW_DAMAGE: 25, // 基础箭矢伤害
BASE_HP: 100, // 基础生命值
EXP_DROP_RATIO: 0.33 // 死亡经验掉落比例
};游戏采用客户端-服务器架构:
- 服务器负责游戏逻辑、碰撞检测、状态同步
- 客户端负责渲染、输入处理、UI交互
- 通过Socket.io实现实时数据同步
祝您游戏愉快!🏹✨