创新工场 / 开发说明

星际前线:防御战

部署机械炮塔,抵御异星集群。用有限晶矿搭配速射、破甲与减速火力,守住三大战区的最后前哨。

开始玩

作品简介与玩法

在三个战区建塔、升级,抵御每个战区的十波敌人。浏览器快捷键:1 / 2 / 3 建造,U 升级,空格开波,P 暂停,F 变速,M 音效;出售需要点击画面按钮。手机支持触屏,建议横屏。

依据:starfront/README.md。

制作工具与技术栈

JavaScript CommonJS 模块由 Node.js 脚本打成浏览器 bundle,构建不依赖第三方包。浏览器适配层取得 Canvas 2D 上下文、调度动画帧,并用 localStorage 存储进度。游戏美术由 Canvas 程序绘制。

依据:starfront/package.json、starfront/tools/build.cjs、starfront/src/core/browser-platform.js、starfront/README.md。

仓库未记录具体使用过的 AI 编程工具、模型版本或对话过程,无法据此还原制作工具使用史。

制作步骤

以下是根据现有源码组织的复现与阅读顺序,不是原作者开发过程记录。

  1. 阅读 src/data/maps.js、towers.js、enemies.js 与 waves.js,对应地图、炮塔、敌人与波次配置。
  2. 结合 src/game/battle-world.js 阅读战斗逻辑,再看 src/render/canvas-renderer.js 的画面绘制。
  3. 阅读 src/core/browser-platform.js 的浏览器输入和存储接入。
  4. 在 starfront/ 运行测试和构建,然后用本地静态服务器查看产物。
npm test
npm run build
python3 -m http.server 8766 --directory dist

依据:上述源码文件、starfront/README.md、starfront/package.json。

关键实现要点

  • 浏览器适配层把 pointerup 的画面坐标换算到 1280 × 720 的逻辑坐标,交给触摸回调。
  • 存档读取时先规范化关卡解锁数、星级与声音设置;读失败返回默认进度,写失败返回“本次进度未保存”。
  • 构建脚本从 browser.js 递归收集相对 require 模块,输出 game.bundle.js 和记录 bundle SHA-256 的 build-info.json。

依据:starfront/src/core/browser-platform.js、starfront/src/core/save-store.js、starfront/tools/build.cjs。

局限说明

浏览器存储不可用时仍可游玩,但进度无法持久保存。音效需要玩家首次操作激活浏览器音频。作品不是暴雪官方游戏。

依据:starfront/README.md。

给 AI 的需求示例

下面是基于现有模块提出的练习需求,不是历史提示词。

请先阅读 starfront/src/core/browser-platform.js 和 save-store.js,解释指针坐标换算与存档失败处理。在保持现有行为的前提下,为存储写入失败补充一个回归测试,并说明预期反馈。

练习依据:starfront/src/core/browser-platform.js、starfront/src/core/save-store.js。

小练习

阅读存档规范化函数,手动构造一个越界的解锁数和星级,预测加载结果,再运行测试核对。只在本地练习副本中修改。

练习依据:starfront/src/core/save-store.js、starfront/tests/save-store.test.js。