Repository navigation
Releases
v1.7.0 — Localization & final refactor
The final version of Tessera. There is no v2.0 planned — from here it's
polish and maintenance only.
Highlights
- Localization — English, Spanish, German, Russian and Ukrainian, with
a first-run language picker and live in-menu switching (no restart
needed) - Gameplay visual effects — rank-scaled line-clear effects, a bloom
glow on the well border while a combo holds, escalation-tier ambience, a
ghost trail, an animated hard-drop slide, and impact dust on landings
and wall hits - Audio — a shuffled, non-repeating gameplay music playlist that ducks
under the pause menu, plus a one-shot game-over sting; every menu sound
consistently pitched by direction - Project-wide refactor — a folder-by-folder style pass across the
entiresrc/tree (naming, magic numbers, dead-code removal), and a
cleaner split between actual gameStates and the UI content they host
(ui/screens/,ui/panels/) - Full documentation rebuild — see the new README,
docs/ARCHITECTURE.md,
docs/CONTROLS.md,
docs/GAMEPLAY.md and
docs/PATTERNS.md
Download
- Download
Tessera-v1.7.0-win64.zipbelow - Extract it anywhere
- Run
Tessera.exe— everything it needs (SFML DLLs, assets) is bundled
Windows 10 / 11, 64-bit. A gamepad is optional; Xbox and PlayStation
(DualSense / DualShock) layouts are built in.
Full change history: PR #17
v1.6.0 — Gameplay depth & escalation
Modern guideline rules, player-facing gameplay settings, and an escalation system for the single endless mode.
Modern rules
- SRS rotation with wall kicks, T-spin detection (Mini/Full, three-corner rule)
- Lock delay with move/rotate resets, capped at 15 resets
- Hold piece (swap, once per piece), 7-bag or pure-random randomiser
- Buffer zone with block-out / lock-out detection
- Guideline scoring: combo, back-to-back, Perfect Clear
- On-board callouts for scoring highlights (flash, particles, rank-scaled size/duration)
- Gamepad vibration on gameplay actions (hold, T-spin, back-to-back, Perfect Clear)
Player-facing settings
- Options → Gameplay: ghost piece, hold, next-queue length, randomiser (Rules), plus the existing feedback toggles
- Hold is rebindable in Controls → Keyboard, with a matching reference row in Controls → Gamepad
- Settings apply live instead of requiring a restart, with a clear note where that's not possible (next-queue length / randomiser)
- The in-game controls legend swaps to Xbox/PlayStation button icons the moment a gamepad is in use
Escalation
- A self-contained director governing how the endless mode gets harder over a long run
- Four cumulative tiers gated on elapsed time: Base, Speed Surge (periodic gravity spikes), Garbage (a rising garbage row every so often), Chaos (a rare golden piece worth double score)
- Every tier's first effect is time-gated to a guaranteed window
- Golden locks get a standing pulsing neon glow; garbage rows borrow a darkened wall tile so they read as a distinct obstacle
Bug fixes
- Next-queue length capped at 5 (6 didn't fit the NEXT panel)
- Game Over's unsaved-record warning now fires even if no name was typed
- Hold now appears in the in-game controls legend
- Fixed several gamepad button-prompt sprite coordinates (Xbox bumpers, DualSense Pause/L1/R1)
Download: Tessera-v1.6.0-win64.zip — unzip and run Tessera.exe (Windows x64). No installer.
v1.5.0 — Gameplay presentation & Game Over
The in-game screen and the game-over screen brought up to the menu-shell standard. No gameplay-rules changes.
In-game backdrop
- New
gameplay_background.jpg, drawn 7% oversized and centred. rendering/SceneMotionparallaxes it off the player's actions — moves, rotations, soft / hard drops, landings, line clears (double for a tetris) and level-ups each add an impulse to a damped spring, with a slow idle drift underneath. The board and HUD stay put.
HUD rebuilt
- Square nine-slice frames hugging the board's outer wall: HOLD / LEVEL on the left, NEXT / SCORE / LINES / TIME on the right.
- Stat cells flash on change (SCORE + LINES on a clear, LEVEL on a level-up).
- The left-hand controls text block is replaced by an always-on legend panel with live, layout-independent key names.
Options → HUD category
- A watermelon-accented category with an on/off toggle per HUD panel plus the controls legend — all default on, so the screen can be stripped down to just the well.
Game Over rebuilt
- A death beat crumbles and greys the stack before the screen darkens in.
- A framed panel over the dimmed board shows score / lines / level / time under a dying-neon "GAME OVER" heading with a rare chromatic glitch.
- New record: the frame and heading go gold, firework shells burst behind the panel, and sparks stream from its four corners.
- A recessed name field with an explicit Save Record button (optional, 14-char cap) and an unsaved-name confirm dialog.
Also
ConfirmDialoggains mouse control.- Cleanup:
MenuScreenState/MenuList/ScreenHost::ExitToand the orphanedui/Button/Label/Layout/Panel/Spacerwidgets removed.
Download: Tessera-v1.5.0-win64.zip — unzip and run Tessera.exe (Windows x64). No installer.
v1.4.0 — Menu cleanup & flow
The first step of a shorter roadmap: Tessera is being finished as a small, polished game rather than built out. No gameplay changes this version — the whole front-end made consistent.
- "Start Game" is now "Play" and drops you straight into the game, with an animated menu → gameplay transition (and a fade back).
- The warning dialog, every menu panel frame, and the Credits screen are redone to one consistent style; each menu carries a frame in its own colour.
- New Records screen: a framed ten-row leaderboard showing name, score, lines and level, with a Reset button.
- Mode select, the Achievements placeholder and the old statistics screen are removed.
Windows x64. Extract and run Tessera.exe; the SFML DLLs are bundled.
v1.3.0 — In-game menu & mode select
No gameplay-rules changes. Game Over is untouched.
Pause screen
Pausing now freezes the gameplay frame and "solidifies" it into large blurred pixels, top-down, while a PAUSE title drops in from the top and a menu column slides in from the left: Resume / Restart / Options / Back to Main Menu. Resume reverses the whole animation. Restart and Back to Main Menu ask for confirmation first. Options is now reachable from the pause screen, hosted over the frozen board, with settings applied live.
Start Game -> mode select
"Start Game" opens a mode menu: Campaign (Start New Campaign / Continue Campaign / Select Level) and Other Modes (Marathon / Sprint / Ultra / Zen / Player vs Player). Only Marathon is playable in this version — the rest are placeholders for the versions that build them.
Under the hood
- The menu-shell's screen hosting was extracted into a reusable
ScreenHost, shared by the main menu and the pause screen. - Gameplay music removed (it did not fit; a proper score comes later).
- Duplicate easing math consolidated; unused fonts and dead code removed.
Debug + Release build clean at /W4 /WX; 25 test cases pass.
Run
Windows x64. Unzip and run Tessera.exe (the four sfml-*-3.dll must sit next to it).
v1.2.0 — Menu shell & Options
A new menu shell and a full Options screen. No gameplay-rules changes (that work moved to v1.3.0).
Menu shell
- One-screen-at-a-time shell (
MenuShell) with shared ambient. Activating an entry: the title flies up, the entries shatter into pixels, and the chosen entry morphs into the sub-screen header — reversed on Back, with focus returning to where you left.
Credits
- A proper framed Credits screen (9-slice border): developer info, links, a menu-style Back button.
Options
Category column with a right-hand panel that previews on hover and opens in place.
- Gameplay — Gamepad Vibration / Gamepad Lightbar / Screen Shake toggles.
- Graphics — screen resolution, window mode (Fullscreen / Borderless / Window), Vertical Sync, Show FPS, CRT Filter. Deferred window recreation + letterboxing.
- Audio — Sound and Music volume sliders.
- Controls — a slide-in sub-menu: rebind the six gameplay keys (blink-to-capture; Escape or gamepad B cancels; reserved and already-used keys are rejected with a flash; key names are keyboard-layout independent), plus a read-only Xbox / PlayStation button reference.
- Language — a slide-in list of English / Spanish / German / Russian / Ukrainian (UI only for now; only English is selectable).
- Every panel has Apply / Reset / Back with unsaved-change protection.
Feel & haptics
- The DualSense lightbar colour per menu item is now hand-tunable in
assets/data/haptics.json; menu navigation no longer flashes it, and each falling TESSERA letter tints it its own colour. - Gamepad rotation moved from the triggers to the shoulder buttons.
- Controllers plugged in before launch are now detected.
Settings persist to %LOCALAPPDATA% (format v5).
Full changelog: v1.1.0...v1.2.0
v1.1.0 — Presentation
First-launch presentation pass: the game now opens with a threaded loading screen, a company splash, and a rebuilt main menu.
Highlights
- Loading screen — assets load on a background thread behind a tetromino-block progress bar; shell music starts here and carries unbroken through the splash and into the menu.
- Company splash — fade in/hold/fade out, skippable.
- Rebuilt main menu — "TESSERA" letters fall from the top and spring on landing, then the menu entries fly in from the right and settle into a 3D carousel ring around the title. Horizontal navigation (arrows / D-pad / stick) rotates the ring; on-screen ◄ ► arrows for mouse. Achievements and Credits shown as disabled placeholders.
- Background & effects — static backdrop with drifting tetrominoes, rising sparks, and an aurora shader; per-letter neon glow on the title and front entry.
- Custom cursor — glowing pixel cursor rendered inside the scene (picks up the CRT pass).
- Gamepad haptics — growing rumble as each title letter lands, steady rumble per entry fly-in, DualSense lightbar tracks the selected entry's colour.
- Audio — new per-sound / per-track volume balancing via
assets/data/audio_balance.json(no recompile). Navigation and letter-landing sounds are pitched by direction / order. - CRT — screen curvature and edge cropping removed; scanlines, aberration, flicker, and vignette kept.
- FPS counter, on-screen version label.
- Music and sound folders consolidated under
assets/audio/.
🤖 Generated with Claude Code
Tessera v1.0.9 — Polish pass
The end of Phase 1 (code maturity). No gameplay changes.
Changes
MenuScreenState— the main menu, pause and game-over screens shared a copy each of the same navigation scaffolding; it lives in one base class now.- Pause backdrop — the blurred-background logic no longer hard-codes "is this the pause screen"; a
Statenow says what it wants behind it. TheStateIdenum, whose only use was that check, is gone. SettingsRowList— the Settings screen's hand-rolled selection model (buttons + sliders) is one focused class.Layout— the vertical and horizontal layout paths were near-duplicates; folded onto one axis.- Dead code removed across the UI and input layers.
- Groundwork:
GamepadHapticsported from Until Last Asteroid — Xbox rumble via XInput, DualSense rumble / lightbar / adaptive triggers via a vendored raw-HID library. Not driven by anything in the game yet; the effects and settings arrive in v1.1.0. Gamepad menu navigation does get a faint haptic tick.
A project review put the codebase at a solid Middle-Senior level after this pass.
Run
Windows x64. Unzip and run Tessera.exe; keep the SFML DLLs and assets/ next to it.
Tessera v1.0.8 — Localization pipe
Phase 1 (code maturity). No gameplay changes.
Changes
- Every on-screen string now comes from a text catalog (
assets/data/localization/en.txt) instead of being hard-coded. English is the only language for now; the point is that adding languages later no longer means editing every screen. A{token}placeholder syntax handles dynamic text (score, level, records).
Run
Windows x64. Unzip and run Tessera.exe; keep the SFML DLLs and assets/ folder next to it.
Tessera v1.0.7 — Visual pass & first tests
Phase 1 (code maturity). No gameplay changes.
Changes
- Real neon glow. The active piece and the selected menu item now have a true additive bloom with an even edge-glow (every side and corner), replacing the old fake scaled-sprite glow and the flat menu highlight. Fixed a
Uniform "time" not found in shaderwarning that printed on every launch. - Nine-slice frames for buttons and panels — corners no longer distort when a frame is drawn at a different aspect ratio than its texture. (Full benefit waits on new, symmetric UI art.)
- Text fitting — long HUD text scales down to stay inside its panel instead of overrunning it.
- Warnings-as-errors. The whole project now builds clean at
/W4 /WX. - Unit tests. A new
TesseraTestsproject (doctest, separate from the game) with 25 cases covering the board, pieces, the 7-bag and the gameplay session.
Run
Windows x64. Unzip and run Tessera.exe; keep the SFML DLLs and assets/ next to it.