Skip to content

Add the 3D Horror House Escape starter - #1102

Open
4ian wants to merge 4 commits into
mainfrom
claude/awesome-knuth-vaoj1s-interior-horror
Open

4ian wants to merge 4 commits into
mainfrom
claude/awesome-knuth-vaoj1s-interior-horror

Conversation

@4ian

@4ian 4ian commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Adds starting-3d-house-horror ("3D Horror House Escape"): a first-person horror starter inside a house. It serves the requests for haunted-house, Granny-like and escape horror games: about 40 3D requests in a sample of 1,000 AI requests, which today get an outdoor graveyard or no theme.

It is built from starting-first-person-horror: first person, flashlight, fog, the monster's state machine with raycast vision, the game resets when the monster catches the player, who can't fight back. The monster walks with navmesh pathfinding, like in the expanded horror starters.

The level

A two-story house made of 3D boxes (about 1400 × 1000 px), in a fenced yard:

  • Ground floor: a living room, a kitchen, a study, a storage room with pushable wooden crates, and a hall with the staircase and the front door.

  • Upstairs: two bedrooms, a dressing room and the main bedroom, around a landing. The stairwell has railings.

  • Staircase: 20 steps of 16 px, under the 20 px step height of the 3D character and of the navmesh.

  • Structure:

    • floors and ceilings are slabs, and the roof is a box with a chimney;
    • the outer walls have siding outside and wallpaper inside;
    • the windows have glass. They can't be climbed through: the sills are above the jump height, and the glass is a static body.
  • Furniture: 18 semi-realistic models by Poly Haven (CC0), reused across the rooms, with static bodies. They are navmesh obstacles.

    • Living room: a worn sofa and a rocking chair facing a vintage television on a gothic commode, a bookshelf, a cupboard, an oil lamp on a nightstand.
    • Kitchen: painted wooden cabinets, an electric stove, a cupboard, a wooden table with four chairs.
    • Hall: a grandfather clock, a commode with an oil lamp. Study: bookshelves, a desk and a chair, a rocking chair, a cupboard. Storage: metal racks.
    • Bedrooms: a gothic bed, a day bed, nightstands with oil lamps, cupboards, a commode, a bookshelf, a mirror. Dressing room: an ornate mirror, a commode, a cupboard, a rocking chair.
    • Main bedroom: a gothic bed, a nightstand, a commode, a cupboard, a mirror, a rocking chair, and the desk with the key.

    The models are placed against the walls from their measured size, facing into the rooms. Poly Haven has no bathroom furniture (toilet, bathtub, sink), so the room upstairs is a dressing room.

  • Pushable crates: 43 px boxes with a wooden crate texture drawn by the texture script (HouseCrate.png).

  • Yard: a wooden rail fence (Quaternius) with an opening in front of the door, two Victorian street lamps (Poly Haven) at the opening, dead trees and mossy rocks (Quaternius), with invisible walls beyond the fence.

  • Lights: dim point lights without shadows in a few rooms (at the oil lamps), two of them flickering.

A script draws the textures of the walls, floors, ceilings, roof, door, yard and crates (HouseWallpaper.png, HouseFloor.png...). They are shown with a tile scale of 0.4, like the textures of the themes (about 512 px).

Gameplay

  • The player is 107 px tall, a third taller than the 80 px of the first-person starters, so the camera is at an adult's eye height. They start in the living room.
  • The key: the front door is locked, and the key is on the desk of the main bedroom, upstairs. Picking it up (close to it, on the same floor) shows "You found the key! Run to the front door."
  • The door opens (is deleted) when the player reaches it with the key. Without it: "The door is locked. The key must be somewhere in the house."
  • Escaping: reaching the gate of the yard shows "You escaped!", and the game starts again 3 seconds later.
  • Guidance: an objective text (top left) says what to do next.

The monster is 125 px tall (100 px in the starter) and starts upstairs. It walks with navmesh pathfinding (NavMeshPathfinding) on both floors and the stairs. The navmesh is built from:

  • the floors, the stairs and the ground, which are walked on;
  • the walls, the windows, the door, the furniture and the pushable crates, which are only obstacles.

It keeps the state machine of the starter. When the patrol can't reach the player, it walks to a random patrol point (hidden markers in each room of both floors, PatrolPoint), instead of a random place in a ground box. The walls, floors, stairs and door hide the player from it (MonsterVisionObstacles); the windows don't.

Events compared to the starter

56 → 97 instructions:

  • the grid pathfinding of the monster becomes navmesh pathfinding (patrol, and a chase updated every 0.5 s), with patrol points;
  • a "Key and door" group: the key spins, picking it up, opening the door with it, messages;
  • an "Escape" group: reaching the gate, restart;
  • a "Flickering lights" group;
  • the markers are hidden when the scene starts.

The events are unfolded, except the groups. The objects are in folders: House, Furniture, Yard, Gameplay, Lights, Interface, Markers, Characters.

Theme slots

theme-slots.json uses existing slots only:

  • env.wall: the inside and outer walls, and the roof;
  • env.ground.tiled: the top of the floors (with env.wall under the floors), and the whole stairs, so they look like wooden stairs in every theme;
  • env.ground: the yard;
  • env.crate: the pushable crates;
  • character.monster;
  • nature.tree: both kinds of dead trees;
  • nature.rock.big and nature.rock.small: the mossy rocks;
  • sky.dark.

Ignored, so they keep their look in every theme: the furniture, the door, the key, the windows, the fence, the street lamps, the markers and the invisible walls. checkStarterThemeSlots passes.

Tests

6 tests, all passing with node scripts/run-gameplay-tests.js and the latest build of GDevelop's master:

  • walking and strafing with WASD (from the starter);
  • picking up the key;
  • the front door stays closed without the key (the player walks into it and is stopped), and opens with it (the player walks out);
  • reaching the gate of the yard escapes the house, and the game starts again;
  • the monster chases and catches the player (in the hall);
  • the monster follows the player upstairs: from the foot of the stairs, it climbs them and catches the player on the landing.

The starter's test "The monster comes after the player" is removed. It moved the monster in a straight line toward the player, which goes through the walls of the house. The chase test above checks the same thing.

The tests render at 160×90 with a 120 s timeout (150 s for the stairs), since the lights are slow in the software renderer. jest, tsc and prettier pass.

Screenshots

The rooms, in the game (1280×720, lit by the flashlight). The living room (twice), the kitchen, the hall (the clock, and the commode with an oil lamp), the study:

rooms

The storage room with the crates, the two bedrooms, the main bedroom, the dressing room, and the desk with the key:

rooms 2

The yard: the opening of the fence between the street lamps, and the front of the house:

outside

The hall with the monster and the stairs (the preview):

preview

Cutaways of each floor (roof and upper floor hidden, full light), to show the layout:

ground floor
upstairs

With themes (from GDevelopApp/GDevelop-assets#718, built locally): the hall, the top of the stairs, outside, and the ground-floor cutaway. These were taken before the furniture, the crates and the yard were replaced; the themes don't change the furniture.

Haunted house (the witch is in the hall):
haunted house

Dark woods (the yeti is in the hall):
dark woods

Dark fantasy (the skeleton rogue is in the hall):
dark fantasy

Not done / to check

  • Size: the assets are 15 MB, against 2 to 4 MB for the other starters. Each Poly Haven model embeds its own 1K textures (0.3 to 1.2 MB per model): 19 of them (18 pieces of furniture and the street lamp). The Quaternius trees, rocks and fence weigh 5 to 125 KB each. The key keeps its light toon model: the semi-realistic keys of the store are 5 MB.
  • No thumbnail.png (1920×1080): a screenshot at that size came out black in the test renderer. There is a 1280×720 preview.png, like the expanded starters.
  • The house is dark, like the horror starter: only the flashlight and a few dim lamps. The door simply disappears when opened.
  • Not added to the AI prompts by hand: it is listed automatically once deployed (starting- slug).
  • Performance not measured on a phone.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj

A first-person horror starter in a two-story house made of 3D boxes, with a
staircase, a roof and a fenced yard. The player finds the key upstairs, opens
the front door and escapes through the gate, while the monster of the horror
starter patrols both floors with navmesh pathfinding and chases the player on
sight, up the stairs too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
@github-actions

Copy link
Copy Markdown
Contributor

Preview the game(s) changed or added in this Pull Request


This is an automatic message displaying links to the games in this PR - double check the JSON in case of doubt.

The player is 107 px tall instead of 80, so the camera is at an adult's eye
height. The 6 gameplay tests still pass.

The sides of the stairs took the pushable box texture of a theme (bright planks
in some): the whole stairs now take the floor texture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
The Kenney furniture is replaced by 18 Poly Haven models (CC0): a gothic bed,
a day bed, a worn sofa, a rocking chair, a commode with a vintage television,
oil lamps, a grandfather clock, painted wooden cabinets and chairs, an
electric stove, bookshelves, metal racks and an ornate mirror. They are placed
against the walls from their measured size. Polyhaven has no bathroom
furniture: the bathroom upstairs becomes a dressing room.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
…ic yard

- Furniture against the left and right walls faced the walls: angles turn
  clockwise, so a front facing +Y at the angle 0 faces -X at 90. Fixed for
  the sofa, commodes, television, clock, bookshelves, beds and chairs.
- A few more pieces of furniture, reusing the same models.
- The pushable boxes are wooden crates (a drawn texture), a third smaller.
- Outside: dead trees and mossy rocks (Quaternius), a wooden rail fence and
  street lamps (Poly Haven) instead of the cartoon fence, trees, lightposts
  and jack-o'-lanterns. The front fence stops on both sides of the gate.
- The monster is 125 px tall instead of 100.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants