[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83805":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":8,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":25,"discoverSource":26},83805,"GKW_RoomTour","AG31447\u002FGKW_RoomTour","AG31447",null,"TypeScript",58,3,51,2,0,1,5,4,1.81,"GNU Lesser General Public License v2.1",false,"vue-remake",[],"2026-06-12 02:04:35","# GKW RoomTour\n\nA browser-based first-person 3D room tour that renders photorealistic Gaussian Splatting scans of Geekerwan's office spaces. Includes multi-room exploration, exhibit inspection, and a \"Pig King Chase\" minigame.\n\n[中文文档](README_CN.md)\n\n---\n\n## Features\n\n- **Multi-room tour**: 10 rooms with low\u002Fmedium\u002Fhigh quality Gaussian Splat tiers\n- **Data-driven**: Rooms, doors, colliders, spawns, and exhibits configured via JSON\n- **Desktop controls**: WASD, mouse look, pointer lock, `E` to interact, `Shift` to crouch\n- **Mobile controls**: Virtual joystick, touch look, crouch button, combat fire button\n- **Room transitions**: Seamless switching via door trigger zones\n- **Exhibit system**: Click-to-inspect panels with descriptions and images\n- **Pig King Chase minigame**: Boss fight with weapon\u002Fammo\u002Fmedkit pickups and enemy AI\n- **Settings panel**: Render quality, look sensitivity, muzzle flash, center dot, debug mode\n- **PWA support**: Installable fullscreen landscape web app with iOS home screen support\n- **Debug tools**: Wireframe overlays for colliders, doors, bounds, exhibits, and live coordinates\n\n---\n\n## Prerequisites\n\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F) 22 or higher\n\n---\n\n## Quick Start\n\n```bash\n# Install dependencies\nnpm install\n\n# Start dev server (listens on all network interfaces)\nnpm run dev\n```\n\nOpen the URL printed by Vite in your browser (default `http:\u002F\u002F127.0.0.1:5173\u002F`).\n\nOn Windows you can also double-click `Start Local Server.cmd`.\n\n> **Note**: Do not open `index.html` directly. The app requires an HTTP server to load ES modules, JSON configs, and splat assets. A warning will be shown if opened via `file:\u002F\u002F`.\n\n---\n\n## Production Build\n\n```bash\nnpm run build        # Build to dist\u002F directory\nnpm run preview      # Preview production build\n```\n\nThe output in `dist\u002F` can be deployed to any static file server.\n\n---\n\n## Controls\n\n### Desktop\n\n| Key | Action |\n|---|---|\n| `W` `A` `S` `D` | Move |\n| Mouse | Look around |\n| `Shift` | Crouch |\n| `E` | Interact (open door \u002F view exhibit) |\n\nPointer lock activates after clicking the \"Enter Scene\" button.\n\n### Mobile\n\n| Control | Action |\n|---|---|\n| Bottom-left virtual stick | Move |\n| Drag on empty screen area | Look around |\n| Bottom-right button | Crouch |\n| Right-side button (combat) | Fire |\n\n---\n\n## Project Structure\n\n```\n├── index.html                     # HTML entry point\n├── package.json                   # Dependencies and scripts\n├── tsconfig.json                  # TypeScript config\n├── vite.config.ts                 # Vite config\n├── MiSans-*.woff2                 # Local font files\n├── Start Local Server.cmd         # Windows one-click launcher\n│\n├── public\u002F                        # Static assets (copied as-is to build output)\n│   ├── manifest.webmanifest       # PWA manifest\n│   ├── apple-touch-icon.*         # iOS home screen icons\n│   ├── icon-192.png \u002F icon-512.png\n│   ├── THIRD_PARTY_NOTICES.md     # Third-party license notices\n│   ├── content\u002F\n│   │   ├── rooms.json             # Room\u002Fdoor\u002Fminigame config\n│   │   ├── exhibits.json          # Exhibit descriptions and images\n│   │   ├── asset-register.json    # Asset provenance tracking\n│   │   ├── unreal-layout.json     # Layout data exported from Unreal Engine\n│   │   └── splats\u002F                # Published .sog splat files (low\u002Fmedium\u002Fhigh)\n│   ├── exhibits\u002F                  # Exhibit images\n│   ├── images\u002F                    # Game sprites (Pig King, etc.)\n│   └── music\u002F                     # Background music\n│\n├── src\u002F\n│   ├── main.ts                    # Vue app entry point\n│   ├── App.vue                    # Root component (Canvas + UI layer)\n│   ├── style.css                  # Global styles\n│   ├── env.d.ts                   # TypeScript declarations\n│   ├── components\u002F                # Vue UI components\n│   │   ├── HudBar.vue             # Room title and status\n│   │   ├── SettingsDrawer.vue     # Settings panel\n│   │   ├── StartPrompt.vue        # Enter Scene button\n│   │   ├── InteractPrompt.vue     # Door interaction prompt\n│   │   ├── DesktopHelp.vue        # Desktop key hints\n│   │   ├── TouchControls.vue      # Mobile touch controls\n│   │   ├── MinigameOverlay.vue    # Minigame overlay (crosshair, boss HP, timer)\n│   │   ├── ExhibitDesc.vue        # Exhibit description panel\n│   │   ├── FadeOverlay.vue        # Loading\u002Ffade transition\n│   │   ├── ToastMessage.vue       # Toast notifications\n│   │   ├── AssetNotice.vue        # Asset status notice\n│   │   ├── DebugStats.vue         # FPS\u002FMS performance stats\n│   │   └── DebugCoordinate.vue    # Live coordinate display\n│   ├── composables\u002F\n│   │   └── useGame.ts             # Core game logic\n│   └── types\u002F\n│       └── game.ts                # TypeScript type definitions\n│\n└── scripts\u002F\n    └── convert-splats.ps1         # PLY → SOG batch conversion script\n```\n\n---\n\n## Room List\n\nThere are 10 rooms, starting from the Public Area. Each room has `low` \u002F `medium` \u002F `high` quality splat tiers.\n\n| Room ID | Name |\n|---|---|\n| `public-area` | Public Area (initial room) |\n| `gkw-lab` | GKW Lab |\n| `gkw-studio` | GKW Studio |\n| `biba-anechoic-chamber` | BiBa Anechoic Chamber |\n| `biba-office` | BiBa Office |\n| `biba-studio` | BiBa Studio |\n| `piao-office` | Piao Office |\n| `yunfei-office` | Yunfei Office |\n| `zhuwang-office` | Zhuwang Office |\n| `server-room` | Server Room |\n\n---\n\n## Room Configuration\n\n`public\u002Fcontent\u002Frooms.json` is the core configuration file. Each room includes:\n\n```jsonc\n{\n  \"id\": \"public-area\",\n  \"title\": { \"zh\": \"Public Area\" },\n  \"splat\": {\n    \"low\": \"\u002Fcontent\u002Fsplats\u002Fpublic-area.low.sog\",\n    \"medium\": \"\u002Fcontent\u002Fsplats\u002Fpublic-area.medium.sog\",\n    \"high\": \"\u002Fcontent\u002Fsplats\u002Fpublic-area.high.sog\"\n  },\n  \"spawn\": { \"position\": [0, 0, 0], \"target\": [0, 0, -1] },\n  \"bounds\": { \"center\": [0, 0, 0], \"halfExtents\": [10, 3, 10] },\n  \"colliders\": [\n    { \"center\": [0, 0, 0], \"halfExtents\": [2, 1, 0.5] }\n  ],\n  \"doors\": [\n    { \"id\": \"to-room2\", \"title\": { \"zh\": \"Enter Room 2\" }, \"center\": [3, 0, 0], \"halfExtents\": [0.5, 1, 0.3], \"target\": { \"room\": \"room2\", \"spawn\": \"from-public-area\" } }\n  ],\n  \"minigame\": { \u002F* Optional minigame config *\u002F }\n}\n```\n\n## Pig King Chase Minigame\n\n- **Trigger**: Approach the trigger point after entering the scene to reveal the START marker\n- **Boss**: Pig King (1000 HP) with walk\u002Fwindup\u002Fattack sprite animations\n- **Weapons**: Pistol (default, infinite ammo), Rifle (3-round burst), Shotgun (6-pellet spread)\n- **Pickups**: Weapons, ammo, medkits (+5 HP); respawn when player leaves the supply area\n- **Enemies**: NavMesh BFS pathfinding, windup-attack cycle, separated from other enemies\n- **Player**: 20 HP, 5 damage per hit\n- **Win\u002FLoss**: Defeat the boss or the player dies\n- **Mobile**: Dedicated fire button and combat UI\n\nOriginal Pig King sprites are kept in `public\u002Fimages\u002Fsprite\u002Fzw\u002F`; the runtime uses downscaled versions from `optimized\u002F` to reduce frame drops.\n\n---\n\n## License\n\nLGPL-2.1 license\n\nFor third-party dependency license information, see `public\u002FTHIRD_PARTY_NOTICES.md`.\n","2026-06-11 04:11:31","CREATED_QUERY"]