尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A real-time multiplayer ASCII fantasy brawler that runs in the browser. The whole world is rendered as colored text glyphs with WebGL, lit by torches, campfires, runes and spells.
npm install
npm run dev # http://localhost:5173
npm run build # static site in dist/ (Vercel builds this automatically via vercel.json)
Pick a name (no account), a class and a mode. Everyone online shares one realm and follows the host's mode and map:
Maps rotate every round: Moonlit Vale, Ashen Wastes (rivers of lava, basalt spires, embers) and Frostmere (slippery frozen lake, snowy pines, ice crystals). Water can be waded at reduced speed, and a dash carries you across a narrow stretch. Lava is a wall to everyone but the Angel.
Classes (each has its own three spells on F / G / R, its own dash, and a signature):
| Class | Spells | Dash | Signature |
|---|---|---|---|
| ⚔ Knight | Crescent Wave, Judgment, Summon Blades (hold for a barrage) | Shield Charge: bowls enemies over | Wide sweeps, and every swing throws a sword wave; blocking refunds mana |
| ⚒ Berserker | Fireball, Inferno Leap, Eruption | Inferno Rush: leaves burning ground | Bloodlust: under 40% HP he hits harder and heals on hit |
| ✦ Sorcerer | Arcane Missiles, Chain Lightning, Meteor | Phase Shift: chainable teleports (22 MP each) leaving purple ooze | Deepest mana, strongest spells |
| ☾ Shadow | Shadow Daggers, Shadowstrike, Smoke Bomb | Shadow Step: invisible while dashing | Backstab: hits from behind or out of smoke always crit |
| ☠ Necromancer | Soul Bolt (drains life), Raise Dead (costs blood + mana), Corpse Nova | Grave Swap: trade places with a minion | His minions are little purple copies of him |
| ✟ Angel | Holy Lance, Radiance (heal + ward), Starfall | Radiant Glide: a long glide | Flies over water and lava, immune to burning ground |
Tap the dash for a dodge; hold it to keep sprinting while mana drains. Max HP never grows during a match; kills add damage and mana. Mana also comes back faster while moving, from melee hits and in a waystone's light.
Sound: every effect and the ambience (wind, insects, water, campfire crackle) is synthesized live with Web Audio, no audio files. M or the ♪ button mutes.
Desktop: WASD / arrows or hold left mouse to move, Shift to run, Space or a quick left-click to slash (hold Space for a ground slam), F / G / R (or right-click for F) for your class's three spells (hold any spell key to charge it with all your MP), hold Q to shield, C or Ctrl to dash (hold to sprint), E to travel at a waystone, Tab for the scoreboard, M to mute, mouse wheel or - / = to zoom.
Phone: drag to move; / slash (hold to slam), the three spell buttons (hold any to charge), ◊ shield, the dash button (hold to sprint); pinch with two fingers to zoom.
art/) on green screen. python art/build_knight.py (needs Pillow, NumPy, SciPy) cuts each frame out, packs art/knight-atlas.webp + .json, and the game converts frames to ASCII at runtime, recoloring the cape per player.python art/build_art.py finds each sheet's grid, keys out the green and packs small per-class atlases. The game loads an atlas only when someone plays that class, bakes the frames into ASCII in idle time, and falls back to the tinted knight and procedural effects until it arrives. Prompts for making more sheets are in art/PROMPTS.md.src/net.js, Trystero). Players find each other through public Nostr relays and connect directly over WebRTC. When a direct link is impossible (mobile data, strict Wi-Fi), game messages fall back to short-lived events on those same relays, a little laggier but it works on any network. The longest-standing host keeps the shared state and two standby hosts can take over. ?relayonly in the URL forces the relay path for testing. An optional /api/turn Vercel function can hand out TURN credentials if CF_TURN_KEY_ID / CF_TURN_API_TOKEN are ever set.