FOOLFISHGAMES

FoolFish developer handbook

Bring your game to FoolFish.

Submit a playable game, prepare its game page, and manage updates from one workspace.

Loading your workspace…

Publish a new game

  1. Sign in and request developer access. Enter your studio or developer name. A reviewer approves access before you can upload.
  2. Create a new-game draft. Choose a unique game address and fill in the title, description, instructions, supported controls, languages, categories and tags.
  3. Upload the complete Web game and cover. Package checks run before a preview is available. Uploading does not publish your game.
  4. Preview and test. Open the private preview from your submission. Check loading, a complete game, each control, sound and saved progress on supported devices.
  5. Submit for review. Your draft becomes locked while it is checked. If changes are requested, read the feedback, edit the same submission and resubmit.
  6. Publish after approval. Publish now or choose a release time for the approved submission. You can cancel a scheduled release before it starts. Its status changes to Published after the game and listing are ready. Your game page then joins the site's catalog, search, categories and tags.

Publication does not guarantee homepage featuring or a particular audience. A reviewer must approve the submission; authors cannot approve their own work.

Update a game already on FoolFish

  1. Choose Game version update and select the existing game. Keep its identity and public address.
  2. Enter a new version and release notes. Explain how the update handles saves from the live version.
  3. Upload the complete replacement Web build. Preview a fresh session and a save from the previous version.
  4. Submit for review, address feedback, then publish the approved update.

The live version stays available during review. Newly started games use the published version; people already playing keep their current game. An update notice will not reload their game. If something breaks, contact the team with the game address, version, device and steps to reproduce the issue. Returning to a previous version does not rewind player saves.

Change only the cover or game-page details

Choose Listing / cover update only for the existing game. Edit its description, instructions, tags or cover and submit the changes for review. You do not need to upload a new game package. Publication updates the game page and catalog without restarting the game or treating it as a newly released title.

Submission checklist

  • Web build: ZIP with index.html at its root and relative asset paths. Maximum 100 MiB compressed, 250 MiB expanded and 1,500 files. No APK, IPA, credentials, server programs, hidden files or nested archives.
  • Cover: landscape PNG, at least 600 × 300 and no larger than 4096 × 4096. It should clearly represent the actual game.
  • Game details: title, developer name, description, how to play, controls, languages, orientation, categories and lowercase tags.
  • Testing: complete a game; test every visible button, restart, audio, win/lose states, touch and fullscreen where supported. Verify refresh/resume and old saves after an update.
  • Services: declare external services, accounts, collected data, ads and purchases in your submission notes. External requests are restricted until reviewed. Include assets you can publish.

Private previews expire after 30 minutes; open a fresh preview from the submission when needed. Checks, review, approval and publication are separate steps. Submission history records their progress and review feedback.

The lifecycle SDK below supports ready/start, pause and local saves. Account, cloud-save, advertising and revenue-sharing APIs are not active. The current browser Mahjong uses local saves on its game address. Contact the team before building integrations that depend on those services.

Connect your game to the player

Start with the complete playable example ZIP or download FoolFish SDK v1. The example contains a five-tap game, the SDK and game-contract.json.

  1. Change gameId in both the example JavaScript and contract to the unique game address chosen in your draft. Keep schema: 1 and bridgeProtocol: 1.
  2. Include the SDK before your game script. Await FoolFishSDK.init({gameId, saveSchema: 1, rulesVersion, adapter}). The SDK verifies the platform connection and keeps preview saves separate from live saves.
  3. Provide adapter.snapshot() returning your serializable game state and adapter.pause(paused) controlling gameplay and sound. Restore FoolFishSDK.restore() after initialization; validate your own state before applying it.
  4. Call FoolFishSDK.ready() after assets and saved state are ready. Call FoolFishSDK.start() only when a playable round actually begins. Report loading with progress(0…1) and a finished round with gameOver(won, score).
  5. Call await FoolFishSDK.save() at meaningful checkpoints and handle a false result. Browser storage can be unavailable or cleared; never promise cloud backup. Report recoverable game errors with error(message).
  6. Upload, open preview and verify its status reaches Ready and then Playing through your game actions. Test pause, reload and save recovery. A package can be previewed without integration, but needs the protocol contract and working SDK before review can pass.

Saves are local, scoped by game, save schema and immutable build. A new game build starts with its own save unless you implement and review a migration. Declare supported schemas in readableSaveSchemas; incompatible forward or rollback contracts are blocked. Keep assets relative to your HTML file. Client-reported scores are not automatically trusted or shown on a leaderboard: contact the team to integrate a game-specific validator. Never include platform passwords, signing keys or server secrets in the ZIP.

Review and help

Your workspace shows submitted versions, feedback and publication status. Fix a returned submission in place so the reviewer has its history. If publication cannot finish, your previous live game stays available. Use the status details and contact the team when you need help.

Our process was informed by CrazyGames' launch documentation, game update FAQ and technical requirements. FoolFish uses its own review process; it does not promise CrazyGames' launch stages, timing or traffic.