Recompia
Pokémon Pokopia (Switch 2) recompiled to run natively on Windows with Linux/Handheld support. Multiplayer included, modding, feature enhancements and more! Join the discord community as well
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
A puzzle-RPG hybrid where every run's crossword grid is the dungeon map.
Answer clues to unlock corridors, fight word-themed monsters by building real
words from a letter rack, and chain vocabulary for bonus damage.
This repo is a playable browser prototype of the core loop: crossword-as-map
generation, corridor unlocking, and word-building combat. It's vanilla
JS/HTML/CSS with no build step and no external runtime dependencies.Read the full README ↗A puzzle-RPG hybrid where every run's crossword grid is the dungeon map. Answer clues to unlock corridors, fight word-themed monsters by building real words from a letter rack, and chain vocabulary for bonus damage.
This repo is a playable browser prototype of the core loop: crossword-as-map generation, corridor unlocking, and word-building combat. It's vanilla JS/HTML/CSS with no build step and no external runtime dependencies.
There's also a parallel Godot 4.3 build in godot/ — an
independent implementation of the same core mechanic (grid generation,
navigation, rendering), with its own README, data, and tests.
Any static file server works (ES modules need http://, not file://):
python3 -m http.server 8080
# or: npx serve .
Then open http://localhost:8080/.
The crossword grid on the left is the dungeon. Every entry in the word list
(src/wordlist.js) becomes one corridor — an across or down word.
Solving a corridor's clue (in the Across/Down panel) reveals its letters.
A corridor can only be attempted once it's adjacent to an already-solved
one, starting from the auto-unlocked entrance (QUEST).
Corridors with a monster drop you into a battle when solved. Corridors
with a reward (heal / score / bonus) pay out immediately instead.
A battle is framed as a fight so it does not read as another puzzle: a
BATTLE! (or BOSS BATTLE!) banner that says how you attack, your hero
facing the monster's portrait with a VS between them and both HP bars, a
brief splash as it opens, and a floating "-7" over whoever was hit after
every cast. The wording lives in src/battlefx.js (unit tested).
In battle, click letter tiles to build a word and hit "Cast Word." A valid dictionary word (3+ letters) damages the monster — longer words and consecutive hits (combo streak) hit harder, and casting one of the dungeon's own theme words ("VOCABULARY COMBO") doubles the damage. An invalid word wastes the turn and the monster hits back.
Losing a battle sends you back to the map at half HP; the monster isn't cleared, so you can walk back in and try again once you've healed up.
Clearing every monster corridor wins the run.
The ? next to the HP bar opens a how-to-play card (HP, Score, winning,
hints). It is generated from the game's real constants (src/rules.js), so
it cannot drift out of date, and pulses once for first-time visitors.
Pick a hero before each run (the picker opens on your first visit; tap the
portrait beside the HP bar to start a new run as someone else). Each has one
passive perk, defined as plain numbers in src/heroes.js so the game, the
picker and the How-to-play card always agree:
Your last hero is remembered. To add one: give it an entry in HEROES and
HERO_LIST, a palette in main.css ([data-hero="..."]) and its gear in
GEAR in src/avatar.js.
Hardcore mode (a checkbox in the Free play tab of the new-run picker; your
choice is remembered): a harsher way to play free runs, with its numbers in
one place (src/hardcore.js) so the game, the picker and the rules card agree.
Hardcore also has its own daily (see Daily Hardcore below). The Godot design doc gates hardcore behind player level 15; this build has no player levels, so it is available from the start.
Daily Challenge (the Daily button in the header, or the Daily tab in the
new-run picker): one dungeon a day, the same for everyone. The day is the UTC
date and it fixes the grid layout, the hero, and every dice roll (battle
letters, monster hits, hint letters), all drawn from a seeded generator
(src/rng.js, src/daily.js). Your first finished run each day is recorded
on this device with its Score, retreats and hints used, and extends your
streak. Replays are practice and do not count. The result card has a
copy-to-clipboard share text. There is no server, so there is no global
leaderboard; results are compared by sharing them (online boards are planned,
see below).
Daily Hardcore (the Hardcore switch on the Daily tab): a second daily with its own dungeon and hero each day (seeded with a different salt, so it is a different puzzle from the standard daily, not the same one made harder), played under the hardcore rules above. It has its own once-a-day result, kept apart from the standard one: the first finished run counts, and a fall counts as finished as much as a win does. It has its own streak, its own share text ("Daily Hardcore ... Cleared / Fell"), and does not touch your free-play hardcore record.
The hero portrait beside the HP bar reacts to health: confident, wary,
battered, then defeated at 0 HP (src/avatar.js).
Stuck on a clue? Open Stuck? Hints on its card. Pay in Score or HP (HP never drops below 1, Score never below 0). Levels unlock in order:
Costs live in src/hints.js. Hints never solve a word for you.
Tapping a clue card scrolls to and glows its word on the grid; tapping a grid cell does the reverse (tap a crossing cell again to switch between across and down).
This is the beginning of the README. Read the rest at the original. Read the full README ↗