dreamingmoths/silent-hill-museum

GitHub: dreamingmoths/silent-hill-museum

一个在浏览器中直接解析并展示《寂静岭2》原始二进制3D模型资产的数字档案馆。

Stars: 42 | Forks: 2

# 寂静岭博物馆 灰姑娘小美人鱼白雪公主 时钟钢琴音乐盒 ![构建状态](https://img.shields.io/github/actions/workflow/status/laura-a-n-n/silent-hill-museum/build.yml?&style=for-the-badge&color=blue) ![测试状态](https://img.shields.io/github/actions/workflow/status/laura-a-n-n/silent-hill-museum/test.yml?label=tests&style=for-the-badge&color=blue) ![版本](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Flaura-a-n-n%2Fsilent-hill-museum%2Fmain%2Fpackage.json&query=%24.version&style=for-the-badge&label=version&color=red) ![许可证](https://img.shields.io/github/license/laura-a-n-n/silent-hill-museum?style=for-the-badge&color=purple) ![kaitai](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/132dca28a8141707.svg) ![Three.js](https://img.shields.io/badge/Three.js-black?style=for-the-badge&logo=Three.js) ![TypeScript](https://img.shields.io/badge/TypeScript-black?style=for-the-badge&logo=typescript) ![JavaScript](https://img.shields.io/badge/JavaScript-black?style=for-the-badge&logo=javascript) ![Python](https://img.shields.io/badge/Python-black?style=for-the-badge&logo=python) **在线网站**:[silenthillmuseum.org](https://silenthillmuseum.org/) [_寂静岭博物馆_](https://silenthillmuseum.org/) 是一个寂静岭(Silent Hill)资产的数字档案馆。 该博物馆直接在您的浏览器中读取原始二进制文件,并通过交互式展览将其呈现给您。 ## 它是如何工作的? 二进制格式使用 [Kaitai Struct](https://kaitai.io/) 进行文档化,这是一种强大的声明式二进制解析语言。它既可作为人类可读的大纲,也是一个可以被编译为多种语言解析器的严格规范。请参阅 [寂静岭 2 mdl 格式](https://github.com/laura-a-n-n/silent-hill-museum/blob/main/ksy/mdl.ksy) 的 ksy 文件。 特别是,ksy 文件会被编译为 JavaScript 解析器,从而允许 JavaScript Kaitai Struct 运行时(runtime)促进原始资产的解析。此外,我们从 Kaitai 源码生成 TypeScript `.d.ts` 类型定义,使得本项目可以用 TypeScript 编写。其美妙之处在于,它使得 IDE 能够了解二进制文件的结构。 一旦一切解析完毕,我们使用 [Three.js](https://threejs.org/) 将资产绘制到屏幕上。 ## 安装说明 要在本地开始,您需要安装好 [pnpm](https://pnpm.io/installation)。要查看资产,您还需要完全解压《寂静岭 2:最期之梦》(PC版)。 1. 克隆该代码库并进入该文件夹。 ``` git clone https://github.com/laura-a-n-n/silent-hill-museum.git cd silent-hill-museum ``` 2. 将《寂静岭 2》中的 `data` 文件夹复制到此代码库的 `public` 目录中。 3. 安装依赖项。 ``` pnpm install ``` 4. 运行安装脚本。 ``` pnpm setup ``` 5. 启动开发服务器。 ``` pnpm dev ``` 这应该足以让您开始了。有关更多脚本,请参见 [package.json](https://github.com/laura-a-n-n/silent-hill-museum/blob/main/package.json)。 ### 高级设置 如果您想编辑 Kaitai Struct (ksy) 文件,您需要一份 Kaitai Struct 编译器的副本。 为了从 ksy 源码生成 TypeScript .d.ts 文件,本代码库依赖于一个尚未合并到主分支的 Kaitai Struct 编译器[分支](https://github.com/kaitai-io/kaitai_struct_compiler/pull/233)。非常感谢 [aquach](https://github.com/aquach) 让这个项目成为可能。 1. 安装 [Kaitai Struct 编译器](https://kaitai.io/#download)。它应该作为 `kaitai-struct-compiler` 命令全局可用。 要确保此步骤成功,请在此文件夹的根目录中尝试运行 `pnpm kaitai all`。 2. 将 aquach 的 Kaitai Struct TypeScript 编译器的[这个分支](https://github.com/laura-a-n-n/kaitai_struct_compiler)作为本代码库的子目录克隆。它的功能相同,我只是将其与最新代码进行了合并。 3. 按照[这些说明](https://doc.kaitai.io/serialization.html#_building_the_compiler_from_source)在新克隆的文件夹中从源代码构建 Kaitai Struct,但请注意检出 `feature/typescript` 分支,而不是 `serialization` 分支。 要测试一切是否成功,请在此代码库的根目录中尝试运行 `pnpm kaitai js`。 现在,每当对 ksy 文件进行更改时,请在提交前运行 `pnpm kaitai js && kaitai ts`。
标签:3D可视化, 3D模型, 3D渲染, CMS安全, JavaScript, Kaitai Struct, Python, Syscall, Three.js, TypeScript, WebGL, Web开发, 安全插件, 寂静岭, 恐怖游戏, 数字博物馆, 数字档案馆, 数据可视化, 无后门, 游戏, 游戏模型查看器, 游戏资产提取, 经典游戏, 自动化攻击, 逆向工具