原生 Canvas 做的一款微信小游戏《街道守卫战》 我们想做一款很直接的小游戏微信里打开就玩没有广告没有充值入口也不靠签到、礼包和付费抽卡留人。玩家想玩的时候打一关不想玩就退出。游戏进度只缓存在当前设备的微信本地。如果主动清除缓存、重装微信或者更换设备记录不会跟着走再次打开就从头开始。这听起来不像常见的“长线运营方案”却是《街道守卫战》最重要的产品定位不制造负担不打断游戏也不把简单的快乐包在一层层活动入口里。最近我们把最初的街头防守原型逐步做成了微信小游戏《街道守卫战》。游戏没有使用 Unity、Cocos 等引擎主体由原生 JavaScript、微信小游戏 API 和 Canvas 2D 完成目前已经形成了从选关、战前构筑、波次战斗、Boss 战到结算成长的完整闭环。它刻意没有做什么介绍玩法之前先说几个游戏刻意保留的“没有”。没有广告开始战斗、失败、结算和领取奖励都不会插入广告。没有付费套路没有充值入口、付费属性、付费复活和付费抽卡。没有体力限制想玩几局就玩几局不需要等待恢复。没有复杂账号负担进度使用微信本地缓存清除缓存后从第1关重新开始。没有冗长启动流程扫码进入后即可体验核心战斗。游戏里确实存在随机卡牌、武器升级和成长系统但它们都属于正常的单局或通关玩法不需要付费也不会要求玩家观看广告。我们更希望玩家留下来的原因是“这一局还挺有意思”而不是“奖励还没领完”。两条车道也能做出策略空间《街道守卫战》的基础操作很简单玩家控制角色在两条车道之间移动队伍会自动向前射击。敌人不断从道路上方压进来玩家需要根据怪物分布切换车道同时收集队友、武器、技能和随机增益。看起来只是两条车道但真正影响一局结果的选择并不少是优先扩大队伍还是尽快提高单体火力面对密集怪群时使用火焰、冰冻还是毒雾遇到武器补给时继续强化当前流派还是切换新武器Boss 释放范围技能时是抢时间输出还是先移动到安全车道正面出现护盾怪和维修怪时应该优先攻击哪一个。每个关卡包含6波战斗最后一波进入 Boss 战。普通怪物负责制造持续压力冲锋、护盾、分裂、维修、召唤等特殊单位则会不断改变玩家的处理顺序。玩法宣传示意图实际界面与效果以游戏内版本为准。队伍规模在一局中会逐渐扩大。人数越多火力越强但道路上的减法和除法道具也可能让队伍快速缩水。玩家需要一边观察怪群一边判断道路上的选择是否值得。这种设计不依赖复杂操作却能让短时间战斗不断产生决策。Boss 不只是“血更厚”如果 Boss 只是普通怪物的放大版战斗很快就会变成单纯的数值检验。因此在设计 Boss 时我们更关注“预警—判断—应对”这个过程。目前 Boss 可以组合使用多种技能召唤额外怪物开启护盾向车道投放炸弹释放直线激光制造持续毒雾发动地裂攻击进入强化或狂暴状态。危险区域出现后玩家会得到短暂的预警时间需要在两条车道之间快速判断。更高难度下Boss 的主技能和副技能还会形成组合。例如一条车道被冰冻区域限制另一条车道正在出现地裂预警。此时玩家不仅要考虑躲避还要决定什么时候使用技能、什么时候保留火力。Boss战宣传示意图实际界面与效果以游戏内版本为准。这种设计的好处是即使操作仍然保持轻量玩家也不会只盯着伤害数字而是需要观察战场状态。随机构筑让重复挑战不完全一样进入关卡前玩家会从三张随机卡牌中选择一项增益例如提升伤害提高射击速度增加开局队友获得技能补给增加暴击率提升对 Boss 的伤害获得额外护盾让重武器更早出现。战斗过程中还会出现数学增减道具、重武器箱和元素技能。当前版本包含6类武器手枪冲锋枪霰弹枪步枪火箭筒加特林。不同武器并不只是更换贴图而是具有不同的攻击节奏、弹道数量、穿透能力和范围效果。例如霰弹枪适合处理靠近的怪群步枪拥有穿透能力火箭筒可以制造范围爆炸加特林则依靠高射速形成持续压制。此外游戏还提供火焰、冰冻、毒雾3类范围技能火焰适合快速清理密集怪群冰冻能够减缓怪物推进毒雾擅长持续消耗高生命目标。构筑系统宣传示意图实际界面与效果以游戏内版本为准。目前游戏包含30个关卡以及普通、困难、挑战、噩梦4种难度。关卡通关后会获得星级。星级不会直接替代单局构筑而是提供轻量永久成长例如开局队伍、基础伤害、暴击、射速和技能强度。这样既能让长期推进得到反馈也尽量避免后期完全依赖数值碾压。。原生方案的优点比较直接启动链路短项目依赖少包体结构清楚调试方便可以完全控制每一帧的更新和绘制。代价也很明显。当玩法逐渐增加以后场景、战斗、碰撞、UI、音频、存档和资源加载都需要自己维护。当前项目正在逐步把关卡配置、成长规则、战斗系统和本地存档拆成更清晰的模块。开发过程中踩出来的几个经验1. 先保证战场可读再增加特效手机屏幕很小。子弹、怪物、技能、掉落物和提示同时出现时特效越多不一定越好。危险区域必须有稳定的颜色语言冰冻使用青蓝色火焰使用橙红色毒雾使用绿色普通攻击使用明亮的蓝白色。技能预警和实际伤害效果也要有明显区别。玩家必须先看懂哪里危险特效才有意义。2. 难度不能只调整生命值当前4种难度除了改变敌人生命值还会调整速度、伤害、生成压力和补给频率。特殊怪物数量、Boss 技能组合和玩家技能槽位也会发生变化。这种差异比单纯把敌人生命值乘几倍更有挑战感也能让不同难度形成不同的战斗节奏。3. 随机奖励必须让玩家看得懂随机不等于完全不可控。战前卡牌一次只展示3项通过颜色和图形快速表达奖励方向武器箱也会提示玩家是在继续强化还是切换武器。减少阅读成本以后玩家才会真正思考构筑而不是闭着眼睛随便点一个。4. 本地缓存也需要存档版本号成长字段一旦变化旧存档很容易出现兼容问题。项目中的本地存档带有schemaVersion通过微信本地存储缓存关卡、星级和设置。读取时会对数据进行归一化并为旧版本保留迁移备份。当前版本不把玩家进度上传到云端。这样设计足够轻量也意味着需要明确告诉玩家清除微信缓存、重装微信或者更换设备以后本地记录无法恢复游戏会从第1关重新开始。我们不把这一点藏起来。这里没有需要玩家永久保留的付费资产也没有充值记录想重新开始时清除缓存就可以回到最初状态。目前完成了什么现在的版本已经可以完整体验30个关卡4种难度6类武器3类元素技能多种特殊怪物每关6波战斗多类 Boss 技能组合战前卡牌选择星级和永久成长中英文界面音乐和音效设置微信本地进度缓存。后续会优先完善本地存档兼容性、核心战斗代码模块化、新手引导和关卡平衡。每日挑战、无尽模式和成绩分享也是我们正在考虑的方向但有一个原则不会改变不插广告不做充值套路不用体力和签到制造焦虑。打开就玩扫码体验《街道守卫战》不需要额外安装独立 App使用微信扫描下方小游戏码即可进入。没有广告没有充值入口。游戏进度缓存在微信本地清除缓存后从头再来。体验以后也欢迎在评论区告诉我们哪一种武器最顺手哪个 Boss 技能最有压力新手阶段是否容易理解你更希望下一版增加新关卡还是无尽或每日挑战模式。这些反馈会直接影响后续的平衡和开发优先级。