Repository navigation
EN Create Title And Credits
Français · Type: how-to · Audience: author · Context: engine repository, created project · Status: ready · Applies from: 4.2.5
A title screen with your background (or a silent looping video), your logo, a line of text at the bottom and its music, then New game and Continue; and the end credits, which scroll over the title's video when the player opens them.
game.ts in the engine repository (games/<id>/game.ts) or in a created project (game/game.ts). The fields below
are those of 4.4.0; true from 4.2.5 (the quest-n-click command name used below).
- The background image as an image id the game ships (see Images), the logo as another one.
- For a video:
ffmpeg, whichnpm run assetsuses to encode it (doctor). - For the music: a track in
audio.music(Music in stems).
Edit game.ts; run npm run assets at the root of the engine repository, or of the created project.
-
The title screen. In
game.ts:titleScreen: { decor: 'decor/dining', logo: 'logo', music: 'theme', video: 'intro.mp4', footer: 'A tiny point-and-click. Turn your phone sideways.' },
decoris required;logo,music,videoandfooterare optional.
-
A video, if you want one. Put the file in the game's decor folder,
art/decor/<name>.mp4(games/<id>/art/decor/in the engine repository,game/art/decor/in a created project), and name it invideo: '<name>.mp4'. Then encode it:# in the engine repository, or in the created project npm run assetsEvery
.mp4of that folder becomespublic/assets/video/<name>.mp4: H.264, 720 pixels high, without sound, ready to stream.games/<id>/sources.jsoncan move the source ("video": "private/asset/decor_{name}.mp4").
-
The credits. The text, line by line; an empty string is a blank line:
credits: ['THE NIGHT MARKET', '', "The reference chapter of quest'n'click (3.4)", '', 'Thanks for playing!'], creditsScreen: { video: 'outro.mp4', decor: 'decor/street' },
creditsScreenis optional: without it, the credits play over the title's video, with the title's background as its poster.
-
Check.
npm run validate(engine repository) ornpx quest-n-click validate(created project) refuses a text switch or{hero}in the footer or the credits;npm run devshows the title.
| Field | Form | What it does |
|---|---|---|
titleScreen.decor |
image id | the background, drawn to cover the screen; the video's poster |
titleScreen.logo |
image id | the logo, dropped in from the top; its alternative text is the game's title
|
titleScreen.music |
id of audio.music
|
the music, started at the player's first tap on the title screen |
titleScreen.video |
file name in public/assets/video/
|
a silent, looping video behind the logo |
titleScreen.footer |
text | a line at the bottom of the screen; translated (titleScreen/footer) |
creditsScreen.video |
file name | the credits' background video, dimmed; default the title's video |
creditsScreen.decor |
image id | the poster of that video; default the title's decor
|
credits |
text lines | the credits, one entry per line, '' for a blank; translated (credits[0], credits[1]…) |
What the player sees:
- The title shows New game and Continue (Continue greyed out without a save), then Remix when the game has a world
other than the story (Remix). The labels are
ui.newGameandui.continue. - The credits open from the pause menu (★,
ui.credits) and from the sealed ending's card. They scroll over about 22 seconds; a tap closes them.
Limit ·
video-autoplay-blockedA browser that refuses to start the video (data saving, low-power mode) leaves the poster, thedecor, in its place. WithcreditsScreengiven adecorbut novideo, the credits have no background image.
Limit ·
title-plain-textThe footer and the credits are shown as written: text switches and{hero}are refused there by the validator.
npm run dev, in the engine repository or in the created project, opens the title with the background, the logo, the footer; the
music starts at the first tap; Credits in the pause menu scrolls your lines.
| Symptom | Cause | Fix |
|---|---|---|
| No background behind the logo | The decor image is not shipped |
npm run assets; check the id |
| The video never shows | Not encoded (ffmpeg missing) or a different file name |
npm run assets; video is the file name with .mp4
|
| No music on the title | No tap yet, or the music off | Tap the title; check the Music setting |
"{hero}" in a text shown as written… (validate) |
A switch or {hero} in credits or footer
|
Write the text plainly |
game.ts (titleScreen, creditsScreen, credits), art/decor/*.mp4, and public/assets/video/ after
npm run assets. The translations of titleScreen/footer and credits[n] go into the locale files
(Translations).
Remove the field from game.ts: every one but titleScreen.decor is optional.
-
src/engine/dom/menus.ts(showTitle,credits),src/engine/core/types/game.ts(titleScreen,creditsScreen,credits),tools/assets.py(the video) - The sealed ending, Skin and fonts
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Start (6)
Play (9)
Install (17)
- Requirements
- Install from the release archive
- Install from npm, once published
- Install from the repository to work on the engine
- doctor: checking your machine
- Image toolchain
- Audio toolchain: ffmpeg, fluidsynth, Furnace, uv
- Upgrade
- Upgrade notes: 4.4
- Upgrade notes: 4.3
- Upgrade notes: 4.2
- Upgrade notes: 4.1
- Upgrade notes: v3
- Upgrade notes: v2 to v3
- Coming from web-scumm
- Package reference
- Install troubleshooting
Create a game (55)
- Your first game
- Layout of a created project and of the engine repository
- The working loop
- Content principles and the identity contract
- Rooms
- Geometry: placement, walk zones, masks, layers, camera
- Something is visible but unreachable
- Reactions
- Game commands
- Conditions
- Flags, variables and events: which to use
- Custom code
- Characters
- Items and inventory
- World map
- Dialogues
- Scripts and events
- Moving characters: patrols and walks
- Exits
- Chapters and objectives
- State and saves: persistent or temporary, renaming an id, migrations
- Staging: wide rooms and animations
- The stage: lights, particles, floors
- Skin and fonts
- Title and credits
- Heroes: several characters and hero choice
- Built-in minigames
- A custom minigame
- Translations
- Music in stems
- Sound effects
- Voices: per language and per hero
- Images: prompts, cutting sheets, transparency, scale
- Asset provenance
- The storyboard, source of truth
- Puzzle design
- Classic mechanics
- Review pages
- DSL reference
- Checking your game
- What the solver proves
- Solver options
- Playtests
- Remix
- Speedrun for authors
- The sealed ending
- Production template
- Example games
- Working with an AI
- Build and release a game
- Publish on GitHub Pages
- The static game on Clever Cloud
- Other static hosts
- Sub-path, cache and service worker, incomplete deploys, going back
- Testing on a phone over the LAN
Local Studio (24)
- The local Studio: overview and launch
- Edit a room
- Placement and stage
- Preview, apply, undo
- Storyboard
- Assets and cutting
- Check: validator, solver, critical path, heat, health, coverage
- Before and after captures
- Semantic diff
- Play and replay a session
- Rule explainer
- Language and objectives
- Voices and the heroes × languages matrix
- Map
- Notes
- Remix in the Studio
- Music
- The Assistant: bring your own key
- Demo mode and studio-apply
- Local and LAN security
- Studio API
- Local MCP: setting up each client
- MCP tools
- Studio troubleshooting
Team Studio (21)
- What runs where
- Concepts: revision, transaction, span, lease, preview, build
- Starting as an invited dev
- Working together day to day
- Roles and actions: the full matrix
- Invitations
- Managing members
- Write refused on the hosted Studio: stale base revision (409)
- Write refused on the hosted Studio: span locked (423)
- Recovering after a lost lease, a disconnection or a stale preview
- Comments
- Map and semantic diff
- Publishing builds
- Remote MCP
- The game in Git
- Upgrading the engine of a hosted game
- Hosted assets
- The server's command line
- Health and metrics routes
- Trying it locally with compose.yml
- Known limits
Clever Cloud (23)
- Clever Cloud: overview, cost and prerequisites
- Apps and add-ons
- Domains and TLS
- Keycloak
- Generic OIDC and GitLab
- Configuration
- First deployment
- Backups
- RPO and RTO
- Restore the Studio on a fresh installation
- Redeploys
- Upgrading the server and checking state after a migration
- Limits of going back
- Monitoring
- Security
- Rotating keys
- Recovering admin access
- Changing domain or OIDC provider
- Worker, PostgreSQL or Cellar down
- Exporting the game and leaving the installation
- Retention
- Clever Cloud troubleshooting
- Costs and teardown
Reality Bridge and connectors (16)
- The Reality Bridge: what it is
- Quick start
- Guarantees
- Install and run the Bridge
- Backup and restore
- Several tenants
- Signals and the manifest
- The Bridge's command line
- Connectors overview
- Email connector
- Telnet connector
- SSH connector
- Open Badges connector
- The connector SDK
- Security: Biscuit and signatures
- Bridge and connector troubleshooting
Contribute (25)
- Welcome
- Developer setup
- The dev loop
- Before a pull request
- Conventions
- Writing documentation
- Architecture
- Code tour
- Import boundaries
- Which tests run when
- Mutation testing
- The coverage ratchet
- The quality baseline
- CI explained
- Field passes
- Benchmarks
- Releasing
- npm packages
- Decisions and ADRs
- Governance
- Bot pull requests
- Contributing with AI agents
- Security policy
- Code of conduct
- Licences and credits