2025年4月16日星期三

我的世界大战僵尸-mvz-443

我的世界大战僵尸 MVZ 443

这篇文章将介绍 MVZ443 游戏

更多截图介绍见 MC大战僵尸 443版本 | PVZ同人创作论坛


Intro

好久不见, 自从去年8月,blogger这里就一直闲置了,这期间我尝试了自建blog, 但是因为精力所限没有维护,原来的server到期云端文章就丢失了,同时本地的计算机也重新装机也是祸不单行,这期间我也没有写多少文章,因此影响不是很大.

在这段时间内,除了自建Blog,我还大量的学习了前端知识,现在可以真正自豪地称呼自己是全栈工程师了,另外我成功应聘了腾讯的前端开发实习生.可能下半年更新blog的机会不会太多了.

运用所学,我在2025冬做了私密图纸音乐房间,你可以在另外一篇博文中看到私密图纸音乐室 ~ 绯境之外~Outside of Scarlet,

以及春季以来做的本篇文章索要介绍的MVZ443,和另外一个提供给同学的计算机设计大赛项目的前端页面.


基础架构

说实话我还是想介绍更多游戏性的内容,因此这方面一笔带过.

我使用 phaserjs/template-react-ts: A Phaser 3 TypeScript project template that demonstrates React communication and uses Vite for bundling 框架, 该框架提供了Phaser3和React库的沟通桥梁.

来一点Claude生成的概述

技术栈

  • 前端:React + TypeScript + Phaser.js游戏引擎

  • 网络通信:WebSocket实现联机功能

  • 后端:Go语言服务器

  • 存储:IndexedDB本地存储

  • 构建工具:Vite

项目结构

前端核心架构

  1. React层

    • components/ - UI组件(菜单、设置、商店等)

    • context/ - 全局状态管理(存档、游戏状态等)

    • DocFrame.tsx - 主界面框架组件

  2. 游戏层

  3. 网络层

    • utils/net/ - WebSocket通信与帧同步

核心系统

  1. 游戏实体系统

    • IPlant - 植物基类

    • IMonster/IZombie - 怪物基类

    • IMutant - 变异体系统

  2. 管理器系统

  3. 联机系统

    • 帧同步机制

    • 房间创建和加入

    • 消息队列发送和接收

  4. 存档系统

    • SaveManager - 管理游戏进度

    • 支持导入导出JSON格式存档

后端架构

  1. 联机服务器

    • Go语言实现的WebSocket服务器

    • 支持房间管理和帧同步

    • 支持SSL证书配置

  2. 关卡编辑器

    • 独立的Go语言GUI工具

    • 用于编辑关卡数据(波次、奖励等)

特色功能

  1. 游戏玩法

    • 多种植物和僵尸类型

    • 升级系统和技能系统

    • 星之碎片特殊能力

  2. UI体验

    • 3D卡片效果

    • 翻页和滑动动画

    • 响应式设计适配PC和移动设备

  3. 联机模式

    • 支持多人同时游戏

    • 公共服务器和自建服务器

    • 房间管理系统

  4. 其他特性

    • 多语言支持

    • 图鉴系统

    • 商店和进度系统


游戏性

局外养成

这次我参考了小时候非常爱玩的美食大战老鼠, 因此有了和其他植物大战僵尸改版风格迥异的局外养成系统.这里的养成每几级可以解锁器械的精英能力,当然每一级都可以很微小地提高器械的基础能力.

当然这里的养成不是为了逼迫用户氪金hhh(毕竟我这个是公益免费游戏,说句难听的,想作弊可以直接下载json存档修改), 我的目的是想让前期的器械在后期也可以获得较高的出场率,因为前期的器械升级的难度肯定更低.

联机

这应该是这款游戏最最最独特的一点了,我学习了帧同步的机制,爆改了游戏逻辑,另外开发配套的服务端, 终于获得了所有植物大战僵尸改版没有的联机模式!!

当然这套联机模组由于部分限制,比如由于历史技术债,我的游戏的画面的绘图是和设置选择的分辨率密切相关, 所有物品的偏移都是和分辨率有关,因此为了状态同步必须所有玩家都设置相同的分辨率.

除此之外,我个人觉得是一点影响游戏体验的缺点都没有了,另外我还根据帧同步机制封装了新的timer替换scene.timer, 避免使用浏览器setTimeOut api,而是改用服务器帧(固定的delta)驱动定时器和物理世界, 做到了完全的同步场景状态.

当然视觉看来,用的是time.Now系列真实时钟,因此视觉帧是平滑的不受影响.

动画

这不是我的特长,但是我确实为了完成这个前无古人借鉴的html版PVZ,做了很多的动画...最让我头痛的巨人僵尸(突变僵尸),和boss的各种关节真的很烦...

平衡

真的不会做啊,但是真的有借鉴别人的数值.

Final

来点游戏截图吧

预计五月份时候会发布正式版前最后一个体验版的最后一个part, 真的不是套娃... 做Boss什么的想想就让人头痛

更多的话写进游戏文档中了,可以去看看

1743558475754.webp

1742695896755.webp

1742182875994.webp

0 评论:

发表评论