← Devlog
v0.2.0-pre-alpha

Ultraviolet v0.2.0-pre-alpha: tattoos and the monastery hub

v0.1.0 was the combat core and one corridor to clear. v0.2.0 builds the layer around the fight: the first progression systems, the first NPCs, a controller, a real jump. Still one test level, still placeholder art. A run is still 5–15 minutes, and the question is still the same one: does it play well.


The big new thing: tattoos

The hunter’s build lives on the hunter’s skin. 6 body regions (arms, chest, back, legs), one tattoo per region. Every tattoo is a rule change, never a stat bump — a longer combo window, a hot first shot after a reload, a cheaper dash.

In the full game you earn marks from boss souls (1 soul = 1 inked tattoo). This build ships 3 starters, unlocked from the start:

Tattoos are permanent between runs — unlike relics, they survive death and restart. This is the game’s first save system (profile.cfg on your machine). You don’t see them on the character (the hunter works in a suit); you read your build on the tattoo screen. Swapping is free for now.


The hub has people in it now

Two NPCs, and talking to them is an overlay of pickable lines:

It’s a first pass. The real monastery — a blacksmith, a prioress, a mission-select screen — is still ahead.


A gamepad, and prompts that follow it

Full Xbox / PlayStation mapping in the options-free way (it just works if a pad is plugged in). Every button prompt in the game — portal, NPC, the [E] over a staggered enemy, the hints in every menu — switches live between keyboard and pad the moment you touch the other one. No menu, no restart.


The player has a sprite now (sort of)

The hunter is no longer a rectangle — there’s a placeholder animation pack driving idle / run / jump / dash / the three combo hits / charge / block / hurt / death / the ledge climb, mirrored by facing. It’s still placeholder art (and enemies and terrain are still colored blocks), but the character reads as a character.


Jump and ledge grab, re-tuned

These are feel dials and they’ll keep moving — tell me if the jump is now too twitchy or the grab too grabby.


Controls

ActionKeyboardPad (Xbox)
Move← / →left stick / d-pad
Jump (double)Space / EnterA
Melee (3-hit combo)A — tapRB
Charged attackA — hold ≥ ~0.5 sRB — hold
Third-hit varianthold ↓ heavy · nothing = fast · ↑ = air launchersame
Block / parryD — hold / tap just before the hitLT
Dodge (dash, i-frames)ShiftLB
Shoot (8-way)SRT
ReloadR (auto on empty)Y
Interact / throw-outEX
Dialogue: pick line / confirm / end↑↓ / Enter / Escd-pad / A / B
Overview (relic + tattoos, read-only)Tab — holdSelect — hold
Ledge grabautomatic; climb = jump / ↑, drop = ↓same

How to run it

SystemFileNotes
Windowsultraviolet.exe (+ ultraviolet.pck beside it)SmartScreen may warn about an unsigned file — “More info” → “Run anyway”.
Linuxultraviolet.x86_64 (+ .pck beside it)chmod +x, then ./ultraviolet.x86_64.
macOSultraviolet.appUnsigned: right-click → Open → confirm.

Quitting: Esc in the main menu (careful — Esc there closes the game), Alt+F4, or close the window.


Still pre-alpha — what’s not here


How to report feedback

Two kinds matter:

BUG — something doesn’t work, or works wrong. Tell me: what happened, where (menu / hub / which level zone), how to reproduce it, which platform, and if you can — a screenshot or clip.

FEEL — it works, but how does it play? This build especially, I want to hear about:

Leave feedback in the comments under the game or this post. Testers with the full guide have a checklist there (68 points + a Feel section) — you don’t need all of it, even a partial run helps.

Thanks for playing something that’s still mostly rectangles.

— SolarNine · v0.2.0-pre-alpha