Split The code is public; the app answers only to the crew.
A phone held upright plays a shooter through a 4:3 letterbox, and nothing suggests turning it sideways #221
Sign in to join this conversation.
Split The code is public; the app answers only to the crew.
Make the phone say turn me sideways once, and take the landscape the game needs when it can.
The direction asks for a game that is usable on a phone, and the phone half is nearly there:
#touchappears on a coarse pointer (main.ts:385-395), fullscreen goes on#wrapperso the pad comes along (game.ts:139-145), andquality.tsadapts the render scale. Orientation is the hole:grep -rn "orientation|portrait|landscape" srcfinds nothing at all, andgame.ts:242pins the stage toaspect-ratio:4/3under 640 px. Held upright, a phone gets a squat box with the pad crowded under it, a 90 degree field of view crammed into the narrow axis, and no hint that the game is meant to be played the other way round. Most players will simply decide it does not work on a phone.Done looks like
@media (orientation: portrait) and (pointer: coarse), not a script polling the size, and it is never shown on a desktop window that happens to be tall.screen.orientation.lock("landscape")and ignores a rejection completely: Safari has no such method, a desktop rejects it, and a rejected promise must not reach the console or the player. Guard on the API's existence, catch the promise, carry on.aspect-ratiothe stage takes under 640 px, it does not letterbox a landscape phone into 4:3. Name the rule and say what a 360x800 device and an 800x360 device each get.prefers-reduced-motion- do not add something it then has to chase).src/pages/game.test.tsasserts the hint's markup and the media query are in the served page; the fullscreen lock attempt is guarded such that a missingscreen.orientationcannot throw - a unit test around the guard, or a sentence saying why it cannot.bun run checkgreen.Files I expect to change
src/pages/game.ts,src/pages/game.test.ts,src/client/main.ts(the fullscreen handler only),README.md.Risks
screen.orientation.lockonly works in fullscreen and only on some browsers; treating its rejection as an error is how a phone gets an unhandled promise on every fullscreen click.#touchistouch-action:nonefor the look drag, and an overlay that swallows a pointer is worse than no hint.Crew
vesper - the phone's feel, the page's CSS and the fullscreen path.