Publisher guide
Publishing
From a player account to a live version in four steps. Every version is validated and waits as a draft until you publish it; installed players receive updates automatically.
Become a publisher
Any account with a confirmed e-mail address can publish. Open the app, go to Account, press Become a publisher and fill in your publisher profile. Players see it on the store page of every app you publish:
| Field | Notes |
|---|---|
| Company or private person | Who is responsible for the apps. A company gives its full name with the legal form (e.g. Vibe Studio GmbH), a private person their first and last name; the store shows it as the publisher. |
| Country | Where you or your company are based. |
| Website | An https:// address. |
| Privacy policy | How you handle your players' data: an https:// address of your page, or a text you write on VibeGames. |
| Terms | Your terms of use: an https:// address of your page, or a text you write on VibeGames. |
No website for them? Choose Write it here. Start from a template fills in what VibeGames guarantees for every game (no network in the sandbox, a nickname and a per-game player id, saves, scores and messages deleted on uninstall) and marks the parts only you know in [[double brackets]]; you cannot save until they are filled in. A template is a starting point, not legal advice. The texts are Markdown with a preview. Players read them in the app (on the store page and in the game menu, also offline) and anyone at a public address per game; every change is kept as a dated version, and players can report a text to the admins.
Publishing needs an adult account (players aged 16 or 17 cannot publish). You also confirm, once, that you will assess the minimum age of each of your apps adequately yourself, declare sexual content truthfully, publish no pornographic content, publish only games that meet the quality criteria, and obey the laws that apply to your apps and their players (for example youth protection, data protection, consumer protection and copyright). A Publish tab appears. If the button is missing, the operator has disabled self-service and grants the role on request; you then complete the same profile under Account before you create apps.
Create an app
In Publish, press New app and fill in the store listing:
| Field | Notes |
|---|---|
| Name | Shown in the store and on the home screen. The manifest name is used for the version label; keep them consistent. |
| Slug | 3 to 40 lowercase letters, digits and single dashes (my-game). It must be unique and is part of the store URL. |
| Short description | One line under the name in the store grid. |
| Description | The full text on the store page. |
| Tags | Up to three categories (Puzzle, Arcade, RPG, …). Players filter the store by them. |
| Minimum age | 3+, 7+, 12+, 16+ or 18+ (the PEGI steps). You assess it yourself; the store shows it on your app. Children's accounts (their parent chooses a PEGI level) and accounts of players aged 16 or 17 (up to 16+) neither see nor play games above their level, and visitors who are not signed in see only games up to 12+. Once the app has been live, a lower rating waits for an admin; a higher one applies at once. |
| Sexual content | Whether the app contains sexual content that is not pornographic. Such apps must be rated 18+, are marked in the store, and every version is reviewed by the VibeGames admins before it goes live. |
| No pornography | You confirm that the app contains no pornographic content: VibeGames does not distribute pornography, also not in apps rated 18+. Asked with every confirmation of the declaration; apps from before it need it once before their next version. Players can report pornographic content, and the admins block apps that contain it. |
| Contact between players | Whether players can contact each other in the app, and how: text chat, voice chat, video chat or other contact (e.g. shared pictures, drawings or levels). Count whatever players write, say, show or send themselves, not preset texts or game moves. The store shows the answer on your app; a new version can only be published once it is given. |
| Confirmation | You confirm that you assessed the minimum age adequately, that the declaration is accurate and that the app obeys the applicable laws. Asked again whenever you change the age, the sexual-content or the contact answer. |
The app is listed by default and appears in the store as soon as a version is published. Untick Listed in the app settings to hide it while you work on it.
Players find your other games from each game's store page: More from your publisher name lists them and leads to a store view with only your games.
Leaderboards
Your game declares its boards in vibe-app.json and records scores with vibe.leaderboards. Open the app, press Edit and turn on Leaderboards to put them live; the section lists the boards of the live version. While they are on, players see the boards in your game and in VibeGames, the store page says that nicknames and best scores can appear there, and every player can opt out per game. Turning them off hides the boards and keeps the scores.
It is good practice to ask players whether they want to be on the leaderboard before you put them on it (see Ask the player first).
To remove a player who breaks your game's rules, open the app and press Scores and removals under Leaderboards. It lists every entry of each board (children's nicknames are not shown to you). Remove asks for a reason and deletes the player's scores on every board of the game; new ones are not recorded, also after a reinstall, until you press Let back on under Removed players. The player sees the date and your reason, so keep it factual. Offensive nicknames are for the VibeGames admins: players report them.
Upload a version
Open the app entry and press Upload a version (available once the minimum age is set). Choose the zip (50 MB at most). The version label is taken from version in vibe-app.json. The upload is answered immediately and validation runs in the background; a notification tells you when it finished. Every version shows its validation result; open its report for every error and warning with file and line.
| Status | Meaning |
|---|---|
| Queued | Stored, waiting for the validation worker. |
| Validating | The checks are running. |
| Failed | At least one error. The report lists every issue with file and line; upload a fixed package as a new version. |
| Draft | Validation passed. Players do not see it yet; preview it, then publish it (or discard it). |
| In review | You submitted it and an admin approves it before it goes live: always for apps with sexual content, for every app when the operator switched on manual review. |
| Published | Live. Listed in the store and delivered to installed players. |
| Rejected | An admin turned it down in review; the review note says why. |
| Withdrawn / Discarded | Taken out of distribution by you or an admin, or a draft you discarded. |
Going live and updates
- Nothing goes live by itself. When a version is ready, press Publish and confirm: it becomes the current version of your app. For apps with sexual content, and for every app when the operator switches on manual review, the button reads Submit for review and an admin approves the version before it goes live.
- Players who installed your app are notified in the background. Their device downloads the new bundle while they do something else; the next launch runs the new version. A running game is never interrupted.
- Cloud saves are per player and app, not per version. Keep your save format backwards compatible or migrate it on load.
Devices and screenshots
Each version says which devices it is designed for, and players see that on the store page. Open Devices & screenshots on a draft in the publisher console before you publish it, choose the devices first, then add screenshots and choose for each one which of those devices it is shown on:
| Device | Shown to | Tip |
|---|---|---|
| Phone | Screens narrower than 768 pixels | Portrait shots of your game on a phone |
| Tablet | Screens 768 to 1199 pixels wide | Landscape or portrait at tablet size |
| Desktop | Screens 1200 pixels and wider | Landscape, e.g. 1920 x 1080 |
- Screenshots can only be shown on the devices the version is designed for. Dropping a device removes it from the screenshots; screenshots shown only there are removed after a confirmation.
- One screenshot can be shown on several devices. A version has at most five screenshots per device.
- The arrows on each screenshot set the order. The store shows them in this order on every device, so put your best one first.
- PNG, JPEG or WebP, 320 to 3840 pixels per side, the long side at most 2.5 times the short one, at most 5 MB.
- The store opens on the player's own device type and offers the others as tabs. Players without screenshots for their device see the first device you provided.
Preview and withdraw
- Preview runs any version that passed validation in the real sandbox from the publisher console, whether it is published, waiting for review or withdrawn. Use it with the browser developer tools to reproduce player reports.
- Withdraw takes a version out of distribution. If it was the current version, the newest remaining published version takes over; with none left, the app disappears from the store until you publish again.
Statistics
Open the app and press Open statistics: installs and uninstalls, players per day and play time, failed starts with their reasons, the errors your game reported and the ratings by stars, over 7, 30 or 90 days and compared with the period before. Who plays splits players by country (from the time zone of the device), age group (adults, or children by the age limit their parent set), device, system and version. Events lists what your game counts itself with vibe.analytics.track, such as levels completed.
All figures are anonymous daily totals; you never see who played, and groups of fewer than five players are shown together. Installs, uninstalls and ratings are complete; players, play time and errors come from players who did not turn off usage statistics.
Feedback from players
Players send you what does not work, ideas and other remarks from the menu of your running game, from My Games and from the store page. Open the app and press Read feedback under Player feedback; the app list shows how much is open. Each message comes with the version the player has installed and, unless they switched it off, a description of their device: system and browser with versions, device type and model where the browser tells it, screen and game area, cores and memory, language, connection and, when sent from the running game, its last uncaught errors. Your game can open the same dialog from its own button with vibe.feedback.open and add what it knows, such as the level. Use Preview with that version to reproduce a bug, then mark the feedback as done or delete it.
You see the player's nickname (not for child accounts) and cannot answer them in VibeGames: your answer is the next version. Problems with other players go to the VibeGames admins. Mention feedback in your privacy policy; the template does.
Hand over or leave
Players keep the games they installed, whatever happens to the publisher:
- Hand an app over when you sell it or stop looking after it: open the app → Create transfer code and give the code to the new publisher. It works once and for 7 days; a new code replaces the old one, and Cancel transfer voids it. The new publisher enters it under Publish → Enter transfer code, sees what they take over and confirms that they are responsible for the app, its content and its age rating from then on. The app keeps its versions, ratings, players and their saves; the store names the new publisher.
- Delete your account and your apps are retired, unless you handed them over first: they leave the store for good and get no updates, while players who installed them keep playing them, with cloud saves and messages, without a time limit. Your name and country stay with the retired apps. By publishing, you allow VibeGames to keep providing your apps to those players (terms of use, section 6).
- Blocked apps. Admins block an app that breaks the law or the terms: it leaves the store and no longer starts for its players. You see the reason on the app's page. An app that only falls short of the quality criteria is not blocked; at most it is taken out of the store, and its players keep it.
Local testing
For day-to-day development you do not need the platform at all: the devkit runs your app in the production sandbox on your own machine, with every host flag, simulated players and messaging, and reloads on save. See Local development, with or without the command line.
To exercise the validator and the publishing flow end to end, run the platform from the repository: the API with a local SQLite database and the shell with hot reload. Zip your game folder with vibe pack.
# API on https://app.localhost:7001
cd backend && dotnet run --project src/WebApi
# shell on http://app.localhost:4200
cd frontend && npm install && npm start
# validate and zip your game folder with the server's rules (the vibe command line)
vibe pack path/to/my-game -o my-game.zipRegister a player account on the local shell, become a publisher and upload your zip exactly as in production. The validator and the sandbox behave identically.
Checklist before you upload
- Your publisher profile is complete and the app has its minimum age, sexual-content answer, the no-pornography confirmation and tags.
- The devices the version is designed for, and store screenshots for each of them (on the draft, before you publish).
vibe validatereports no errors (the command line runs the server's rules on your machine).vibe-app.jsonwith name, version, icon; the icon is a square PNG of 32 to 512 pixels.index.htmlis a fragment with exactly one<div data-vibe-root>, no inline scripts, no handlers in attributes.- All scripts, styles, images, audio, video and data are inside the zip and referenced with relative paths.
- No
localStorage, cookies,fetchto the internet,WebSocket,Worker,evalor navigation. Use the SDK. - A visible way to leave that calls
vibe.exit(). - The app waits for
vibe.readybefore using the SDK and handlespause/resume. - Tested in portrait and landscape, with the keyboard and with touch; respects
safeArea. - Played from start to end on every device you choose; it meets the quality criteria.