项目概述与目标
随着 Web 技术的演进,HTML5、CSS3 和现代 JavaScript 已经能够承载复杂的交互应用。GalGame(视觉小说)作为强调剧情叙事和角色互动的类型,非常适合用纯前端技术实现。本项目以《擅长捉弄人的高木同学》为题材,结合圣诞节主题,构建了一个功能完整的 Web 端互动游戏。
我们的目标很明确:不依赖重型框架,仅用原生技术栈搭建一个包含场景管理、角色表情系统、对话分支机制的引擎。同时确保响应式设计能适配多端,并优化内存使用以保证流畅体验。
技术架构选型
我们采用纯前端方案,避免引入复杂依赖。核心由 HTML5 语义化标签、CSS3 动画布局以及 ES6+ 模块化编程构成。
项目结构
GalGame 项目结构
├── index.html # 主游戏文件
├── images/ # 资源文件夹
│ ├── takagi_normal.png
│ └── ...
└── README.md # 说明文档
这种单页应用(SPA)模式简化了部署流程,所有逻辑集中在 index.html 中,便于调试和维护。
核心功能实现
1. 游戏状态管理
游戏的核心在于状态流转。我们采用集中式的数据结构来维护当前场景、玩家选择历史及资源加载情况。
// 游戏核心数据结构
const gameData = {
currentScene: 0, // 当前场景 ID
playerChoices: [], // 玩家选择历史
useImages: true, // 是否启用图片模式
loadedImages: new Map(), // 已加载的图片缓存
images: {
'normal': 'takagi_normal.png',
'happy': 'takagi_happy.png',
// ...更多表情
},
emojis: {
'normal': '',
// ...对应 emoji
}
};
这种设计让状态变更可追踪,方便后续扩展存档或调试功能。
2. 场景与对话系统
场景数据采用 JSON 格式,每个节点包含角色、文本、表情及分支选项。
// 场景数据结构示例
const scenarios = {
: {
: ,
: ,
: ,
: [
{ : , : },
{ : , : }
]
},
: {
: ,
: ,
: ,
: [
{ : , : },
{ : , : }
]
}
};


