Publish Nano Banana asset edition
Browse files- .gitattributes +6 -0
- README.md +19 -5
- assets/device/circle.png +0 -0
- assets/device/cross.png +0 -0
- assets/device/slash.png +0 -0
- assets/digits/0.png +0 -0
- assets/digits/1.png +0 -0
- assets/digits/2.png +0 -0
- assets/digits/3.png +0 -0
- assets/digits/4.png +0 -0
- assets/digits/5.png +0 -0
- assets/digits/6.png +0 -0
- assets/digits/7.png +0 -0
- assets/digits/8.png +0 -0
- assets/digits/9.png +0 -0
- assets/digits/comma.png +0 -0
- assets/hand/fist.png +3 -0
- assets/hand/reach.png +3 -0
- assets/hand/relaxed.png +3 -0
- assets/hand/spread.png +3 -0
- assets/index-dzcLn9RP.js +0 -0
- assets/tex/concrete.png +3 -0
- assets/tex/rock.png +3 -0
- assets/tex/rock_smooth.png +0 -0
- index.html +63 -17
.gitattributes
CHANGED
|
@@ -33,3 +33,9 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
assets/hand/fist.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/hand/reach.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
assets/hand/relaxed.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
assets/hand/spread.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
assets/tex/concrete.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
assets/tex/rock.png filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,10 +1,24 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
|
|
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: SLACK — Nano Banana Edition
|
| 3 |
+
emoji: 🕸️
|
| 4 |
+
colorFrom: gray
|
| 5 |
+
colorTo: gray
|
| 6 |
sdk: static
|
| 7 |
+
app_file: index.html
|
| 8 |
pinned: false
|
| 9 |
+
license: mit
|
| 10 |
+
short_description: Kimi K3 reconstruction using generated game assets
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# SLACK — Nano Banana edition
|
| 14 |
+
|
| 15 |
+
A browser-playable 3D reconstruction of the monochrome first-person tether
|
| 16 |
+
game shown by ItsPolyCube.
|
| 17 |
+
|
| 18 |
+
This separate edition uses locally frozen visual assets generated through
|
| 19 |
+
OpenRouter with `google/gemini-3.1-flash-lite-image` (Nano Banana 2 Lite),
|
| 20 |
+
including the hand poses, environmental textures, device glyphs, and marker
|
| 21 |
+
digits. The deployed game makes no runtime API calls.
|
| 22 |
+
|
| 23 |
+
Click the game to start. Use the mouse to look, WASD to move, Space to jump,
|
| 24 |
+
and the mouse buttons for the tether interactions.
|
assets/device/circle.png
ADDED
|
assets/device/cross.png
ADDED
|
assets/device/slash.png
ADDED
|
assets/digits/0.png
ADDED
|
assets/digits/1.png
ADDED
|
assets/digits/2.png
ADDED
|
assets/digits/3.png
ADDED
|
assets/digits/4.png
ADDED
|
assets/digits/5.png
ADDED
|
assets/digits/6.png
ADDED
|
assets/digits/7.png
ADDED
|
assets/digits/8.png
ADDED
|
assets/digits/9.png
ADDED
|
assets/digits/comma.png
ADDED
|
assets/hand/fist.png
ADDED
|
Git LFS Details
|
assets/hand/reach.png
ADDED
|
Git LFS Details
|
assets/hand/relaxed.png
ADDED
|
Git LFS Details
|
assets/hand/spread.png
ADDED
|
Git LFS Details
|
assets/index-dzcLn9RP.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/tex/concrete.png
ADDED
|
Git LFS Details
|
assets/tex/rock.png
ADDED
|
Git LFS Details
|
assets/tex/rock_smooth.png
ADDED
|
index.html
CHANGED
|
@@ -1,19 +1,65 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
+
<title>WHITE KNUCKLE — tether recon</title>
|
| 7 |
+
<style>
|
| 8 |
+
html, body {
|
| 9 |
+
margin: 0; padding: 0; width: 100%; height: 100%;
|
| 10 |
+
background: #000; overflow: hidden;
|
| 11 |
+
font-family: "Courier New", ui-monospace, monospace;
|
| 12 |
+
-webkit-user-select: none; user-select: none;
|
| 13 |
+
}
|
| 14 |
+
#app { position: fixed; inset: 0; }
|
| 15 |
+
canvas { display: block; }
|
| 16 |
+
|
| 17 |
+
#overlay {
|
| 18 |
+
position: fixed; inset: 0; z-index: 10;
|
| 19 |
+
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
| 20 |
+
background: rgba(0,0,0,0.82);
|
| 21 |
+
color: #e8e8e8; text-align: center; cursor: pointer;
|
| 22 |
+
transition: opacity 240ms ease;
|
| 23 |
+
}
|
| 24 |
+
#overlay.hidden { opacity: 0; pointer-events: none; }
|
| 25 |
+
#overlay h1 {
|
| 26 |
+
font-size: clamp(28px, 6vh, 54px); letter-spacing: 0.34em;
|
| 27 |
+
margin: 0 0 6px 0; font-weight: 700; color: #f2f2f2;
|
| 28 |
+
text-shadow: 0 0 18px rgba(255,255,255,0.25);
|
| 29 |
+
}
|
| 30 |
+
#overlay h2 {
|
| 31 |
+
font-size: clamp(11px, 1.8vh, 15px); letter-spacing: 0.5em;
|
| 32 |
+
margin: 0 0 34px 0; font-weight: 400; color: #9a9a9a;
|
| 33 |
+
}
|
| 34 |
+
#overlay .glyphs { font-size: clamp(18px,3vh,26px); letter-spacing: 1.2em; text-indent: 1.2em; color:#cfcfcf; margin-bottom: 30px; }
|
| 35 |
+
#overlay .controls {
|
| 36 |
+
font-size: clamp(11px, 1.7vh, 14px); line-height: 2.1; color: #b8b8b8; letter-spacing: 0.12em;
|
| 37 |
+
}
|
| 38 |
+
#overlay .controls b { color: #fff; font-weight: 700; }
|
| 39 |
+
#overlay .hint { margin-top: 34px; font-size: clamp(10px,1.5vh,12px); color:#777; letter-spacing: 0.28em; animation: pulse 1.6s ease-in-out infinite; }
|
| 40 |
+
@keyframes pulse { 50% { opacity: 0.35; } }
|
| 41 |
+
#pauseTag {
|
| 42 |
+
position: fixed; left: 50%; bottom: 4.5%; transform: translateX(-50%);
|
| 43 |
+
color: rgba(255,255,255,0.55); font-size: 11px; letter-spacing: 0.3em;
|
| 44 |
+
z-index: 5; display: none; pointer-events: none;
|
| 45 |
+
}
|
| 46 |
+
</style>
|
| 47 |
+
<script type="module" crossorigin src="./assets/index-dzcLn9RP.js"></script>
|
| 48 |
+
</head>
|
| 49 |
+
<body>
|
| 50 |
+
<div id="app"></div>
|
| 51 |
+
<div id="overlay">
|
| 52 |
+
<h1>WHITE KNUCKLE</h1>
|
| 53 |
+
<h2>TETHER RECON // DAY ONE</h2>
|
| 54 |
+
<div class="glyphs">╱ ○ ✕</div>
|
| 55 |
+
<div class="controls">
|
| 56 |
+
<div><b>MOUSE</b> look</div>
|
| 57 |
+
<div><b>W A S D</b> drift · <b>SPACE</b> rise · <b>SHIFT</b> sink</div>
|
| 58 |
+
<div><b>LMB</b> fire tether · <b>RMB / Q</b> release</div>
|
| 59 |
+
<div><b>M</b> mute · <b>ESC</b> pause</div>
|
| 60 |
+
</div>
|
| 61 |
+
<div class="hint">CLICK TO DROP IN</div>
|
| 62 |
+
</div>
|
| 63 |
+
<div id="pauseTag">PAUSED — CLICK TO RESUME</div>
|
| 64 |
+
</body>
|
| 65 |
</html>
|