ps5upload
Send games, apps and homebrew to a jailbroken PS5, and manage the console from your computer, phone or browser.
Look At Me: Two dark houses, fifty levels, and witches walking every room. Free and open source, play it on The Modding Community.
GamesGDScript · PythonGitHub @zees-gamesOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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
A minigame for @modcommunity's Dot collection and gaming platform. In this semi-horror game, players must complete objectives on levels without being caught by one or more witches. Witches in this game are NPCs that patrol the levels. Each level gets harder and custom maps are of course supported :)
Taken from the repository README
Loading the full README.
Read the full README ↗This is a game to demonstrate the capabilities of the Dot collection built on-top of Godot 4 and TMC's gaming platform. In this 3D game, players make their way through a dark house, thirty-two levels deep, while witches walk its rooms. Find what opens the next door before one of them looks at you for too long.
This project and the assets under it are COMPLETELY OPEN SOURCE. You are free to use, modify, and distribute them under the terms of the MIT license. The only thing not open source is the back-end web infrastructure. So if you opt into using your own authentication backend instead of integrating with TMC, you will need to build and integrate your own back-end infrastructure.
This project, along with every asset it is built on, was built initially with Claude Code and will continue to be maintained and extended using it. This is because I (gamemann) cannot build the entire TMC platform alone (I wish I could lol).
Please treat this as partially tested. It has its own headless test suite and that suite passes, but very little of this has been in front of real players yet. Expect rough edges, and please report anything you run into.
I intend on reviewing code, testing, and editing documentation regularly. If you're interested in helping out, please let me know!
You arrive in the lobby, the one lit room in the house and the start of level 1. Every level is a set of rooms behind doors that don't open on their own:
The top left of the screen always says what to do next. The gold key opens the way out, and the way out is the next level.
Everybody plays every level for themselves. What you pick up, open and use is yours: a door you unlocked is open for you and still locked for the player behind you. So people can arrive and leave at any time.
The witches walk the same rounds through the rooms, over and over, and you hear them before you see them: a low hum and slow, heavy footsteps through the walls. Where a witch looks is drawn as a red fan on the floor, turning as her head turns. The rules are simple:
The start room of every level is safe: no witch ever walks into it. Level 1 has one witch, walking the rooms the red key is in; the last levels have six, faster and sharper-eyed.
Finish all thirty-two and you get a crown everybody else can see.
There are two houses: The House (32 levels) and The Asylum (20). A server plays one at a time, and after 45 minutes the players vote on the next. !rtv calls a vote at any time.
| Key | Action |
|---|---|
| WASD / mouse | Move and look |
| Ctrl | Crouch |
| E | Take, open, use |
| F | Flashlight |
| F5 | First or third person, where the server allows it |
| / | A command: /r goes back to the lobby, /l3 (or /l 3) goes to a level you have reached |
| H | Help: the rules and every key as you have it bound |
| M | The list of houses |
| Tab | Who is playing (hold) |
| Esc | Menu: settings (every key above can be rebound on the Controls page), help, and leave |
You need Godot 4.7. The game is built from many Dot addons, each in its own repository, so the easiest way to get everything is dot-bootstrap. It clones every project and links the addons into each one:
git clone https://github.com/modcommunity/dot-bootstrap.git
cd dot-bootstrap
./bootstrap.sh
cd projects/mg-look-at-me
./game.sh
On Windows, run bootstrap.ps1 instead and open the project in Godot.
game.sh does everything else:
| Command | What it does |
|---|---|
./game.sh | Play offline |
./game.sh online | Start a local server and the browser client, and print the link to open |
./game.sh online down | Stop them |
./game.sh server | Start a local dedicated server only |
./game.sh test | Check every script and run every test suite |
./game.sh shot | Save a screenshot to screenshots/. ./game.sh shot --help lists the views |
./game.sh help | All of the options |
online and server use dot-server-deploy, which bootstrap clones next to this one. Run its ./setup.sh once first.
Console commands:
| Command | |
|---|---|
lm_status | What the server is doing |
lm_send <name> <level> | Send a player to a level |
lm_winners | Who has finished the house |
lm_house <id> | Switch to another house (e.g. lm_house asylum) |
Everything else is a setting, also an lm_<name> console variable and a key in cfg/game/mg-look-at-me/config/game.yml. Put it in user://cfg/lookatme.json, or set it with an LM_* environment variable or an --lm-* argument (the later one wins):
| Setting | |
|---|---|
exposure_rate, decay_rate, decay_delay | How fast the meter fills and drains (it drains slowly: 0.05 a second after two) |
witch_hear_range, witch_hear_walls, witch_noise_boost, witch_noise_seconds, witch_light_range | What a witch hears (footsteps, doors) and how far she sees a lit flashlight |
witch_reaction_seconds, witch_turn_rate, witch_alert_seconds | How long she takes to react, how fast her head turns, how long she keeps looking |
witch_door_seconds | How long she stands opening a door before she walks through |
flashlight_exposure, flashlight_sight, crouch_exposure, still_exposure | What changes it |
caught_penalty | What getting caught costs: keep what you hold, or lose the level |
witch_speed_scale, witch_sight_scale, witch_cone_scale, witch_head_sweep | The witches |
darkness_ambient, flashlight_range, flashlight_angle | The dark |
shared_progress | One player's key opens the door for everybody on that level (off by default) |
allow_third_person | Whether C works |
house_minutes | How long a house plays before the vote (45) |
A level is one JSON file in levels/. It describes:
w by d cells of cell metres);needs, gives, opens);The shipped levels are written by tools/build_levels.py. It grows each level's rooms as a tree, locks every new door behind a puzzle whose parts are already reachable, and refuses to write a level it can't finish.
A house is a folder of levels with a house.json ({"kind": "house", "id": "mine", "name": "My House"}), in houses/ or user://lookatme_houses/.
./game.sh test # every script parses, then every suite runs
./game.sh test headless_run # one suite
tools/build_levels.py --check # the shipped levels are what the builder writes
| Suite | What it covers |
|---|---|
headless_run | The game itself: levels, doors, puzzles, the witches and the meter |
headless_net | A server and a client in one process, over the network code |
dedicated | A real server: boots, loads the game, runs its commands |
CLAUDE.md has the design decisions and the reasoning behind them.
The players are the family's animated people from Quaternius' Zombie Apocalypse Kit (CC0 1.0, credited in dot-player-char), chosen by Kenney's Blocky Characters' skins. The witch is the same kit's basic zombie (Quaternius, CC0 1.0), recoloured and dressed in code (assets/witch/, made by tools/make_witch.py). The furniture is Kenney's Furniture Kit (CC0 1.0), furnishing each room by what its plaque says (tools/lm_furnish.py), in assets/kenney/ with their licences and assets/kenney/CREDITS.md. The footsteps, creaks, doors and latch are Kenney's Impact Sounds and RPG Audio (CC0), and the flashlight's click is his Interface Sounds (CC0); the ambience, the witch's hum, the stinger, the shriek, the heartbeat, the sanity scare's sudden sound and the demons' whispers (breath through vowel formants, no words) are synthesised for this game by tools/make_sounds.py (CC0). audio/CREDITS.md lists every file. The clown hallucination is "Da-Clown #StylizedBustChallenge" by Nwilly_art (CC Attribution 4.0), with its eyes split off and a jaw bone added (assets/clown/, tools/make_clown.py). Everything else is drawn in code.
Map bases. The Forgotten Wing (houses/forgotten/) is laid out over the floor plan of the Steam Workshop map Forgotten Asylum by WhiteKnuckles (no licence is stated on its page, which on 2026-10-20 carried no request against porting, sharing or reuploading). Only its plan was used: the rooms, their order and the long halls, rebuilt by hand in this game's own room grid with this game's own art; none of its textures, props, sounds or text is here. If the author wants it taken out, say so and the map goes. Read through dot-map-convert and tools/bsp_layout.py; the notes are in docs/map-bases.md.
MIT. See LICENSE. The Kenney and Quaternius art and sounds are CC0, which is public domain.