BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Eye of the Beholder II - Compose Multiplatform Remake
Translation pending
GamesKotlin · PythonGitHub @pelotasplusOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Eye of the Beholder II - Compose Multiplatform Remake
This project aims to bring the classic first-person dungeon crawler to modern platforms while staying faithful to the original VGA DOS experience. Built entirely in Kotlin, it runs on Android, iOS, Desktop, and Web.
It started in Flutter, as a way to learn it, and moved to Compose Multiplatform to go faster. Thanks to Claude Code there is now something to actually look at — and to play, in your browser:Read the full README ↗This project aims to bring the classic first-person dungeon crawler to modern platforms while staying faithful to the original VGA DOS experience. Built entirely in Kotlin, it runs on Android, iOS, Desktop, and Web.
It started in Flutter, as a way to learn it, and moved to Compose Multiplatform to go faster. Thanks to Claude Code there is now something to actually look at — and to play, in your browser:
| Platform | Status |
|---|---|
| Web (Wasm/JS) | Deployed and played — the only one that gets tested |
| Desktop (JVM) | Built, not play-tested |
| Android | Built, not play-tested |
| iOS | Built, not play-tested |
Everything is one Kotlin Multiplatform codebase, so all four targets build — but the web build is the one actually played, and it is where any bug will have been found. The other three are expected to work rather than known to.
# Run desktop application
./gradlew :composeApp:run
# Run the web build, rebuilding on save
./gradlew :composeApp:wasmJsBrowserDevelopmentRun --continuous
Most of the suite reads the game's own data files, which are not in this repository, so there are two ways to run it:
# Everything, for a checkout with the game files beside it
./gradlew :composeApp:jvmTest
# Only what needs no game data - what CI can run
./gradlew :composeApp:jvmTest -PwithoutGameData
Rendering is guarded by golden-image tests: each one draws a known frame with
the real assets and compares it byte for byte against a reference PNG in
composeApp/src/jvmTest/goldens/.
The game can be played by an AI agent through MCP. The agent is told only what a player could know: the squares in sight as they look, the party, the messages, the screen as a picture. It acts by naming what a player does (step, turn, use a hand, cast from the book), and the game stands still between its actions, running only when it says to wait.
# Once, and again after changing it: the server the agent talks to
./gradlew :agentServer:installDist
.mcp.json registers the server as
eob; allow it when asked.127.0.0.1:47110 and reads Agent: connected once it is there.With the agent switched on, the Debug menu also offers QA mode: the agent is then told everything — the game's own warnings, what has not been written yet, the whole world behind the view — and can set a check up directly (teleport, give a spell or an item, spawn a monster, heal). It is for hunting bugs, and is off unless the person at the game turns it on.
The game only ever connects out, to this machine, and only while the switch is
on. Switching it off, or the server going away, gives the game back to the
player. The design is in agentServer/ and
composeApp/src/commonMain/kotlin/pl/pelotasplus/eyeofbeholder/agent/.
This project would not have been possible without the people who worked out how Westwood's file formats and engine behave, and then wrote it all down.
engines/kyra/ is a
reverse-engineered reimplementation of the Eye of the Beholder engines, and
it is what made the hard bugs findable. When a wall drew wrong, or a script
did something that made no sense, there was somewhere to go and see how it
was supposed to behave. Decades of patient work by people who did it for the
love of these games, and freely given away; this project would have stalled a
dozen times over without it. ScummVM is licensed GPL-2.0-or-later; it is used
here as documentation rather than as a source of code.And, of course, Westwood Associates and SSI, who made the game in 1991.
This is a fan project for educational purposes. The game's own data files are not in this repository — you need your own copy of Eye of the Beholder II to run it.
Two things derived from the game are here, and both are here because the tests need them:
composeApp/src/jvmTest/goldens/, which are frames this
renderer drew from the original artwork and are compared against to catch
rendering regressions;Eye of the Beholder and Advanced Dungeons & Dragons are trademarks of their respective owners; this project is not affiliated with or endorsed by any of them.
MIT, covering the code in this repository. The rendered frames and quoted strings described above are derived from the original game and are not ours to license.