A fan-made, text-based retelling of Elden Ring: create a character, choose your weapons, and fight a gauntlet of bosses in time-based combat. It runs as a free website (no download) and as the original Java console program.
https://jdesilver.github.io/EldenRing/
Nothing to install — it works on desktop and mobile, with a keyboard, mouse, touch, or screen reader.
If the link 404s, the site just needs to be switched on once — see Publishing the website below.
- Menus are numbered. Type the number of your choice and press Enter, or select one of the on-screen buttons.
- Story screens wait for you. Press Enter (or select Continue) to advance.
- Combat is turn-based. Each boss attack charges up while you Attack, Dodge, Heal, or Wait. Dodge in time and in a correct direction to avoid the hit; otherwise the blow lands when the timer runs out. While the boss recovers, it's vulnerable — keep hitting.
- You can't break it. Any input that isn't a valid option simply returns you to the same prompt.
- Time-based combat with light, heavy, and Focus-fuelled special attacks.
- 16 bosses across two phases each, with unique attack combos and dialogue.
- Character building: pick from six tiers of weapons, allocate eight stats, and upgrade your weapon at the Sites of Grace between fights.
- A branching ending decided at the Erdtree.
- Accessible by design: semantic HTML, an ARIA live region so screen readers announce each screen, full keyboard control, large touch targets, and support for reduced-motion and high-contrast preferences.
The whole game is text and numbered choices, which makes it naturally screen-reader friendly. The web version adds:
- a live region that reads out new narration and menus as they appear;
- on-screen buttons for every menu option (and Continue / Yes / No), so you never have to type if you'd rather click or tap;
- visible keyboard focus, a "skip to input" link, and 44px-minimum touch targets;
- honoring
prefers-reduced-motionandprefers-contrast.
The site is plain HTML/CSS/JavaScript in docs/ — no build step. You can just
open docs/index.html in a browser, or serve the folder:
# Option A: Node (no install thanks to npx)
npx serve docs
# Option B: Python 3
python -m http.server -d docs 8000Then visit the URL it prints (e.g. http://localhost:8000).
A small headless test suite fuzzes the game for crashes and verifies the combat win path:
node docs/test.jsverify-port.js is a differential check that parses the Java source and confirms the
web version's data (bosses, weapons, narration) matches it exactly — run it after any
gameplay change to keep the two versions in sync:
node verify-port.jsThe original terminal game lives in the repository root.
- Install Java (JDK 17 or newer). Check what you have:
If it's below 17, install a current JDK. Make sure
java -version
javaandjavacreport the same version — ifjava -versionshows 1.8 whilejavacis newer, put your JDK'sbindirectory first on yourPATH. - Compile:
javac *.java - Run:
java Main
.
├── docs/ # the web version (served by GitHub Pages)
│ ├── index.html
│ ├── styles.css
│ ├── data.js # bosses, weapons, and narration (data only)
│ ├── game.js # game engine + browser front-end
│ └── test.js # headless tests
├── Main.java # the Java console game (script/flow)
├── Combat.java # time-based combat engine
├── Bestiary.java # all bosses, as data
├── Armory.java # weapon tiers
├── Story.java # all narration
└── ... # Player, Weapon, Boss, Console, enums, records
The web version is a faithful port of the Java game — the same prompts, narration, and combat math (including its quirks).
The site is served by GitHub Pages from the docs/ folder. To turn it on (one time):
- Push this repository to GitHub.
- Go to Settings → Pages.
- Under Build and deployment, set Source to Deploy from a branch, choose the
mainbranch and the/docsfolder, and Save. - After a minute, the game is live at
https://<your-username>.github.io/EldenRing/.
Fan project by James DeSilver. Not affiliated with FromSoftware or Bandai Namco; all Elden Ring names and lore belong to their respective owners.