Releases: ExtremeKnight/lantern-keeper-site
Release list
Lantern Keeper 0.29.0
[0.29.0] — Every screen, every device, together
A pass over how the game looks and feels on every device, a real co-op lobby, friendly duels, a Bazaar you can shop
from, a developer build for the team, and a bigger website.
Fits every screen
- Android's navigation bar no longer leaves an empty band under the bottom menu: the safe-area space is added once, by
whatever touches the bottom edge, instead of twice. - Dropdowns are the game's own: a panel under the button on a computer, a sheet from the bottom on a phone, the same
look everywhere instead of the system's grey picker. Arrow keys, Home and End, typing a letter, Escape, a controller's
d-pad (left and right change the value without opening it) and touch all work. - Settings has a proper cog icon (it looked like a sun).
- The Lantern Bazaar is in the home screen's main menu.
- Leaving a PvP match asks with the game's own dialog; dialogs give focus back to what you were on.
tools/screens.js: screenshots of 20 screens at 22 sizes in Chromium and WebKit, an automatic layout check (cut-off
text, buttons too small or off screen, sideways scrolling) and a comparison with the previous version, named like
v0.29_web-chromium_1920x1080_home.png, with a REPORT.md and VERSION.md for each version.
Co-op lobby
- Every keeper sees every seat: their look, keeper, weapon, how they play (touch, mouse, controller; web, desktop,
Android, iPhone) and the quality of their connection, refreshed as it changes. - Partners press Ready; Start asks first when someone isn't ready. Invite shares the room code, or invites a
friend straight from Social. - The tabs say what they are: Online, Nearby (phone to phone) and Co-op server, and the Online tab shows whether the
online services are reachable. - More pings for a night: Wait, Ready?, Focus here, Defend, Good job.
- Fixed: starting co-op from a party threw an error (since 0.14), and the relay passed on only part of a partner's look.
Friends and duels
- Friendly duels: challenge a friend from Social or the PvP screen; they get 20 seconds to accept. A duel never
changes a rating and pays practice embers. Choose who may challenge you (everyone, friends or nobody; friends by
default); limits stop repeated challenges, and anyone in a match is answered "busy" automatically. Rematch after a duel. - Friends see what you are doing (at home, in a night, co-op, PvP or the Bazaar) while you are online.
- Daily chat: community and region chat is one conversation a day, fresh at midnight UTC, with a countdown.
Reported messages are kept with the report, so moderators can still check them. - Fixed: an emote could be sent twice when its button was tapped again while it was sending. Now one tap sends one emote,
and the server ignores the same emote repeated within 3 seconds. - Fixed: a match that ended kept checking its result for up to 80 seconds and could write it into the next match
(a quick Rematch, or the next ranked search), and close that match's connection. Each match now settles only itself.
The Bazaar
- A night market: the street is seen from above, as a diorama, and has become a market square: cobblestones and a quay
with bollards, stalls under striped canopies in each stall's colour with counters of goods and paper lanterns, each
lit warm, strings of lights and lanterns zig-zagging over the square, lit harbour houses with glowing signs behind,
and blossom trees between the stalls. Walking follows the screen (up is up, whatever the angle). Detail follows the
graphics preset, so phones on Low stay light. Every stall, gate and district is where it was. - A panel beside the street (a sheet from the bottom on a phone, lowered at first so the street shows): Featured,
Browse (looks, weapons, charms, materials, collections, special) and People (here now, friends online, your party).
Preview any look on your keeper, wear it, get it, or walk to the stall. - The street fills in with the graphics preset: crates, barrels and benches, string lights, stars, more lanterns, and
the collection of the day on a mannequin at the entrance. - On a phone the Places list opens over the panel and its close button stays in reach.
From play on Windows (before release)
- The account switches (Cloud save, Show my profile, News emails) all read Off and couldn't be turned on: the game
asked for "my profile" without naming the account, and once other keepers' profiles were readable that failed. Each
click still saved On. Download my data had the same fault. - The Lantern Bazaar: the street could come back dark after the window was resized at home (it was measured at 0 × 0
while hidden), or after the graphics driver dropped the 3D context (now rebuilt on the next visit). The street fills
the whole window; the panel fits what it shows and has Hide on every screen (remembered on a computer); the stall
prompt stays clear of the panel; the home button is a full row like the daily challenge. - Cloud saves: a device left open was always "changed" (the ember still earns every second), so whenever another
device had synced, the game asked to choose between saves; just opening screens did the same (music heard, "new"
badges). Neither counts as a choice any more: the newer cloud save is taken, the embers earned here are added on top
once, and this device keeps its own settings, tips and badges (music heard anywhere stays heard). Real progress on
both sides still asks. - Weekly rewards are claimed once across devices: the cloud is checked first, the claim is recorded by its id and sent
at once, and choosing the cloud save in a conflict carries this device's claims over with their reward, once. The
save choice appears only on the plain home screen, never over another screen. - Notices appear at the top, where there are no controls, can be tapped away (the next follows), and slide in.
- Settings: a control scrolled or focused into view stops above the sticky save bar (Text numbers and Captions were
under it at 1280 × 800). A test changes every switch, slider and dropdown and checks each after a restart. - Achievement notices on a computer appear under the top buttons, never over the bottom menu.
- Scrollbars, checkboxes and sliders are drawn in the game's style on every system, and section titles use the game's
icons (the settings cog showed as a sun, the others as each system's emoji). - One game icon everywhere: the Android adaptive icon and the iOS icon and splash were still Capacitor's placeholders;
tools/icons.jsmakes every platform's icon and splash from the two masters. - Emails: one design for every email (
tools/emails.js): the account codes, the notices after a password or email
change, and news emails.
Playing and away (every platform)
- While you play, the screen stays awake: Android keeps it on while the game's window is in front, iOS turns off the
idle timer while the game is active, the desktop app blocks display sleep while its window has the focus, and
browsers use the Screen Wake Lock. Nothing keeps it awake once you leave. - Leaving the game (Home, another app, the lock screen, minimising, closing; on a computer also another app taking the
focus) is one transition everywhere (src/js/11c-lifecycle.js): a single-player night pauses, the game saves, the
audio engine is suspended (music, effects, ambience and loops stop at once), nothing is drawn (the main loop and the
Bazaar's street), and friends' presence and chat polling wait. An online match (PvP, co-op with partners) keeps
its connection, as it can't be paused for the other player, but goes quiet and stops drawing. - Coming back: sound resumes as it was, the frame clock restarts without a jump, time away is credited once, and no
loop or timer is started twice. A test leaves and returns both ways (hidden, and another app focused) and checks
the pause, the silence, zero frames drawn while away, and the same frame rate after.
From play on an Android phone (before release)
- Turned sideways, the home screen fits: the title starts below your name instead of under it, Daily challenge and
the Lantern Bazaar share a row so every button is on screen, and optional lines drop out one at a time when space is
short (the menu already did this upright). The festival line could be squashed into an empty pill; lines are never
squashed now. - Tablets and laptops sideways: the title scales with the height and the menu ends above the bottom tab bar.
- Notices on the home screen stay clear of the tab rail on the right of a sideways phone.
- Bazaar district keys: every district after the first has a gate (stone pillars, an arch with a lantern, an iron
portcullis), locked for every keeper, newcomer or veteran. Each gate's key is a task counted from the first time you
see it: Trading Pier, play 3 nights; Collector's Hall, defeat 2 bosses; Music House, defeat 400 creatures; Festival
Square, earn 5 achievements; Keeper's Market, clear a region. With the key earned, walk up to the gate: it opens for
good, with a notice. Some gates also stand open without a key for a day or an event: the Music House on Sundays
(music night), Festival Square during a festival, the Keeper's Market at the weekend. Signs and Places show each
key's task and progress. Before, every gate said "Closed" even when its district was open, and the open ones' doors
swung into the stalls. - The Bazaar street has life: townsfolk walk the open part and stop at stalls, paper lanterns float up over the
harbour, fireflies drift by the trees (how many follows the graphics setting). Notices now show in the Bazaar (they
waited until you left), and on a sideways phone the panel starts lowered so the street shows. - The Bazaar meets the other keepers as soon as the sign-in loads (a g...
Lantern Keeper 0.28.0
[0.28.0] — Hosted for free
Everything the game needs online now runs on free plans, with no card: see docs/HOSTING.md for what runs where, the
allowances, and what happens when one runs out.
The game's own co-op server
- Online rooms are now run by the game's own co-op server by default (the Online tab, Let the game's server run the
night): the fairest kind of co-op, where no player's device decides for the others. Its nights also don't use the
online service's monthly message allowance, which relayed rooms do (2 million messages a month on the free plan: about
70 four-keeper nights). - Join with either code: 4 letters for a server-run room, 5 for a relayed one.
- The server is free (Render) and sleeps when nobody plays: the first player waits while it wakes, up to a minute, and
the game says so. When it is busy with another night, or can't be reached, the game makes a relayed room instead. A
server running another version of the game is not used; the game asks you to update. - The server's address comes from a small file on the website, so it can be set up or moved without an update.
A server that fits a free plan
- Server-run nights no longer need a browser on the server: the game runs in jsdom, one thread per night (about 60 MB
each instead of 300 MB). On a server, the game skips drawing, sound and most screen updates, and runs its loop 30
times a second: one night now needs 0.062 of a CPU (0.128 before), so the free plan's tenth of a CPU runs it at
full speed. - A spare copy of the game is opened ahead of time while no night runs, so a room is ready in about a second, and
opening a copy never holds up the server or a night in progress. - The server takes the game from the web version and checks for a new one every 30 minutes, so publishing the web
version updates it too./versionreports the game it runs and how many nights it runs and can run. render.yamlsets it all up from the repository in a few clicks.
Downloads
- Windows (x64 and ARM64), macOS (Apple silicon and Intel) and Linux (AppImage, .deb, .rpm) on GitHub Releases, with a
Downloads page on the website (tools/publish-release.js). Android players use the web version until the game is on
Google Play.
iPhone and iPad
- The game is now tested on WebKit, the engine of Safari and of the iOS app, at iPhone SE, iPhone 15 (portrait and
landscape) and iPad Pro sizes: the screens fit, touch plays, nights are saved, Settings explains Add to Home Screen,
controllers are named, the Bazaar opens (npm run test:ios). PvP on WebKit gives exactly the same results as on
Android, Windows and Chrome, so iPhone players meet everyone else on equal terms. - The iOS app: each release now also builds an unsigned .ipa for sideloading (AltStore, SideStore or Sideloadly sign
it with the player's own Apple ID), and the app is started in an iOS Simulator on GitHub's Macs, which must report
the game ready, with a screenshot. The App Store still needs an Apple developer account. - The shop in the iOS app sells nothing and no longer points to Google Play (Apple doesn't allow that); what an account
owns still shows and restores there.
Android
npm run android:release-apk: the APK for the Downloads page, signed with the upload key (it refuses without one: a
debug APK is never published). Checked with a throwaway key: signed, not debuggable, billing included, 6.2 MB.
Consoles
- The Compatibility screen now says what works today: Xbox through the web version in Microsoft Edge with the
controller, Steam Deck through the Linux build; native console versions need the makers' developer programs.
Keeping the free plans alive
- A daily keep-alive job reads one row from the database, because Supabase pauses a free project after a week without
activity (and a paused project needs a manual restore).
Privacy Policy 2.8
- Names Render, which hosts the co-op server, and GitHub, which hosts the website and the downloads; describes the
co-op server.
Tests
- A server-run night without a browser, looked at from inside the server's copy of the game (lanes, partners, taps,
the spare); the same in threads, from the players' side (the night runs in real time, a second room opens without
holding up the first); and in the game: the server-run choice in the Online tab, a server on another version refused,
a sleeping server waited for, a busy one replaced by a relayed room, the address taken from the website (only
wss://). Measured in a Docker container limited like the free plan (-m 512m --cpus=0.1).
Play in the browser, or read about each download: https://extremeknight.github.io/lantern-keeper-site/downloads.html