Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

I'm building White City, a stealth game about charge

A topic by pixeldr created 44 days ago Views: 127 Replies: 5
Viewing posts 1 to 5

I'm doing a thief-inspired stealth game, set in the 1893 World's Fair. After midnight, two hundred thousand electric lamps and all of them dark. You designed the thing that lit it and an evil businessman has your patents, so you're breaking into your own exhibit to take three things back.

The bit I'm actually building the game around: you carry a coil that lets you turn off lights at some distance. It drains constantly, and it only refills off a live circuit. So darkness is safe but every stretch of dark you buy has to be paid for by standing in a lit room for some amount of time. A full coil also hums loud enough for a guard to hear, which means you're at your most audible exactly when you're best equipped. Since the theme is CHARGE! the last thing you steal is the master key, and turning it lights the entire fair. The game ends with ninety seconds of running across a fairground with no shadow left in it, charging to the exit!

Tools: Unity WebGL, Claude Code + custom harness, Realmweaver for ideation, Farclip for levels & QA
Haven't settled on asset or music/SFX generator just yet, but plan to use one.

Submitted

Two charge games in one jam, good sign for the theme. Stealth in browser scope is ambitious, curious how you telegraph guard vision without a minimap. Will play when the build is up

Thanks! Looking forward to the feedback. Good stealth feel, even not in the browser, is tough so we'll see if I bit off more than I can chew.

Planning on keeping a devlog, in part because this is a particularly fun/unique jam (at least for me). So here goes.

Lighting is a big issue, especially with performance in the browser. Killer stealth experiences don't just need awesome level layouts (an issue I'll have to tackle at some point), but the lighting to match it so you can read what a good hiding spot is. This is particularly true where the game is focused on light bulbs, you make your own shadows and recharge in the light.

Sampling pixels off the GPU just isn't going to be an option, so I'm working on some ideas to keep cool visuals but not rely directly on shadows for visibility stats. Thief pulled this off on old hardware, so I'm starting by exploring how they did it. The challenge is it scales by light and by shadowcasting renderers, so clever light placement alone doesn't necessarily fix it if I want some engaging choices of what to extinguish. Raycasting? Swapping light maps? The latter is definitely going to hit some memory constraints unless I bake my own with a different representation than Unity's default.

Still thinking it through, but to make it quick to iterate I'm starting with a calibration hall and a stress field that will let me rapidly test both how well the visuals match the visibility meter and the performance in a WebGL build.


Tested a bunch of approaches and landed on raycasting from the player. I only care if the player is lit right now, so light maps are overkill. Pixel sampling does this, but is too expensive for browser builds.

With some help from Claude (Fable), I built cheap raycasts to nearby lights. As my mum used to say, "if you can't see me, I can't see you." It gives softer falloff and silhouettes instead of hard cutoffs so corners, etc. feel right and also respects things like crouching.

The test level is working well, with WebGL holding 120fps.  But to really get that, I'm going to need some real levels, with real geometry. So next up is firing up Farclip to help me build some with decent sightlines for a stealth game.


Submitted

Very exciting, I can’t wait to try once it drops. Also love the devlogs, keep it up :)