Real-Time Multiplayer on Android: Lessons from NYT Crossplay
summary
A 15×15 interactive board ships as a hybrid AndroidView-in-Compose surface after five rewrites, using Android native drag-and-drop with ClipData because Compose gesture APIs fail across surface boundaries; an eight‑sector drop intent algorithm resolves ambiguous touches on small targets. Three animator pipelines handle submission, opponent and tray shuffle motion to communicate state. Networking uses SSE via OkHttp + eventsource, and the opponent is a QuickJS bot using a directed acyclic word graph. Two years of work with five peak Android engineers delivers a working production game.
AI-written summary · about
chapters (11)
- 0:00Introduction
- 1:24Why NYT built Crossplay
- 5:17Architectural overview
- 8:27Drag-and-drop tile placement
- 12:37Board stayed in Views
- 15:46Tile tray complexities
- 22:26Custom animation challenges
- 30:30Opponent bots & word validation
- 35:28Real-time with SSE
- 36:54Two years of lessons
- 38:40Q&A
related talks
51mShared mobile UIs with Compose Multiplatform
48mA page out of Server driven UI on Android
34mHigh-Performance, Expressive Remote UI: Deep Di…
45mPrototyping with Jetpack Compose
33mMobile Multiplayer Made Manageable
45mShared mobile UIs with Compose Multiplatform
41mPanel: Snap Games, HTML5 & a New Generation of Hypersocial Games
37mAndroid Canvas: Building one of the worlds largest Interactive DataViz exp.
