👾 Play this game at https://talss89.github.io/deceptive-arrivals/
This is a very simple browser based game, following the basic premise of the fantastic "Papers, Please".
You are a border official, and you must determine whether each traveller is legitimate, or providing you with false details or an ulterior motive.
Simply start the game (and wait for the 1.8GiB of model data to download!), then use your microphone to talk with the traveller. Once you have enough information, either approve or deny their entry to the country using the buttons at the bottom right of the screen.
It demonstrates running WebML workloads in the browser and features a voice / LLM pipeline, which allows you to use your microphone to 'talk' with travellers to uncover any lies and either approve or deny their entry to the country.
It was built in around 12 hours, so it's rough, but playable. I'll update this readme when it's not 2am.
The game runs entirely in-browser, and does not use external APIs. The LLM, voice processing and synthesis are all running via WebGPU. Use Chrome, and a machine that is WebGPU capable (like a M-series Macbook Pro)
VS Code + Vue (Official) (and disable Vetur).
- Chromium-based browsers (Chrome, Edge, Brave, etc.):
- Firefox:
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.
See Vite Configuration Reference.
npm installnpm run devnpm run buildRun Unit Tests with Vitest
npm run test:unitRun End-to-End Tests with Playwright
# Install browsers for the first run
npx playwright install
# When testing on CI, must build the project first
npm run build
# Runs the end-to-end tests
npm run test:e2e
# Runs the tests only on Chromium
npm run test:e2e -- --project=chromium
# Runs the tests of a specific file
npm run test:e2e -- tests/example.spec.ts
# Runs the tests in debug mode
npm run test:e2e -- --debugLint with ESLint
npm run lint