feat: playable arcade — rooms, identity, client, deployment

Round length is now bounded: the multiplier follows a hyperbolic curve
diverging at 60s, replacing an exponential one where a 275x crash point
produced a two-and-a-half minute round.

Fixes seed reveal, which silently failed every round because pgx cannot
encode a fixed-size byte array as bytea.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
drjones
2026-08-05 15:34:52 +00:00
parent 41c1bb2fdf
commit 2a2a1db8de
17 changed files with 2885 additions and 25 deletions

14
Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
# Build the server as a static binary with the client embedded in it, then ship
# it on a minimal base. The result is one file with no runtime dependencies.
FROM golang:1.26-alpine AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/arcade ./cmd/arcade
FROM gcr.io/distroless/static-debian12
COPY --from=build /out/arcade /arcade
EXPOSE 8080
USER nonroot:nonroot
ENTRYPOINT ["/arcade"]