GamePix games: setup and operation

Reference for the files delivered in Main_File. Documentation updated 22 September 2026. Examples use fictional IDs and balances; replace them with values from your installation.

GamePix games in voice rooms

AppChat includes an online GamePix HTML5 game catalogue, opened from the floating games button inside a voice room. The user chooses a category, browses game cards, and opens a selected game in an embedded WebView. The catalogue requests up to 24 entries per page, ordered by provider quality, with pagination, refresh and retry controls. Available titles and their metadata come from GamePix and can change; a fixed game count is not included or guaranteed.

The purchase includes AppChat's integration source. GamePix hosts the games; their game source files are not bundled and AppChat does not transfer ownership of third-party game artwork or code. Internet access is required. GamePix is separate from AppChat's gifts, coins, diamonds and purchases: this integration has no app-wallet debit, cash-out, wagering, score-to-coin reward or JavaScript wallet bridge. It does not synchronize multiplayer matches or scores between room users.

1. Configure your publisher account and SID

  1. Open GamePix for Publishers, follow the registration link to the GamePix Dashboard, and create your publisher account. Complete the requested account details, then obtain your publisher SID from GamePix for use in your app. Contact GamePix support if you need help finding it or confirming mobile app use.
  2. In Main_File/flutter_app/lib/features/rooms/game_pix/controllers/game_pix_controller.dart, replace the GamePixController.sid constant (currently UOU4Y) with your publisher SID:
static const String sid = 'YOUR_GAMEPIX_SID';
  1. The feed URL is built as https://feeds.gamepix.com/v2/json with sid, category, pagination=24, page and order=quality. The SID is a client-side publisher identifier, not a private API secret. No GAMEPIX_SID environment variable or admin SID field is wired in this package; changing the constant requires rebuilding Flutter.
  2. Launch URLs come from the feed. The app preserves provider URL parameters and adds the selected app language using lang. Do not replace returned game URLs with unrelated hosts or inject app authentication tokens into them.
  3. Ensure the mobile device can reach the PHP API, feeds.gamepix.com, GamePix game hosts and required provider resources over HTTPS. App configuration is fetched from your authenticated PHP API before the catalogue is loaded directly from GamePix.

Any applicable third-party fees and the buyer's account obligations are covered in third-party services and costs. Provider advertising, revenue share, title availability and language support follow the provider's arrangement; the AppChat purchase does not promise ad-free play or revenue.

2. Configure categories and blocked games

Edit Main_File/backend/php_api/app/Controllers/GameAppController.php, method gamePixConfig. Its $gamePixConfig array defines category keys and display labels; $blocked_game_ids defines GamePix feed IDs hidden by the mobile catalogue. These settings are currently source configuration, not a dedicated admin dashboard editor or app_settings database record.

// Example replacement inside gamePixConfig; retain the existing return statement.
$gamePixConfig = [
    ['key' => '', 'label' => 'All'],
    ['key' => 'arcade', 'label' => 'Arcade'],
    ['key' => 'puzzle', 'label' => 'Puzzle'],
];
$blocked_game_ids = ['REPLACE_WITH_EXACT_FEED_ITEM_ID'];

Leave the blocked list empty if no exclusions are required. Use each provider record's exact id, not its title, namespace or a numeric ID from AppChat's games table. Category keys must be supported by the feed; labels are display text you may edit. The supplied categories are All, Hidden Object, Match 3, 2048, Battle, Simulation, Memory, Arcade, Kids, Drawing, Ball, Stickman, Sports, Fighting, Adventure, Puzzle, Shooter and Educational.

Deploy the PHP edit and close/reopen the game catalogue to reload configuration. Pull-to-refresh reloads the selected feed, not the PHP configuration. Existing opened games are not remotely revoked by adding an ID to the list. The blocked list is client-side filtering, not a provider access restriction. Category choices organize browsing; keeping All still exposes the provider's general catalogue. A category label such as Kids does not certify the suitability of its games or advertising.

Configuration API

POST https://api.example.com/api/game/gamePixConfig
Content-Type: application/json
API-KEY: YOUR_API_KEY
Auth-Token: A_VALID_APP_USER_TOKEN

{}

The response has the standard API envelope. This abbreviated example shows two categories, not the complete default list:

{
  "code": 200,
  "data": {
    "gamePixConfig": [
      {"key": "", "label": "All"},
      {"key": "arcade", "label": "Arcade"}
    ],
    "blocked_game_ids": []
  }
}

An invalid API key or session produces the API authentication error envelope. If configuration is missing/malformed or the request fails, the app shows a retry state rather than assuming no blocked games. This GamePix endpoint is documented separately from the 110 non-game API entries. The legacy game/list database catalogue is not the GamePix feed and is not used to populate the current room games button.

3. Game screen behavior and limits

4. Test GamePix before distribution

  1. Install the buyer build with your Firebase/backend configuration and publisher SID. Sign in, join a room, open the game button and confirm categories, cards and images load.
  2. Switch categories, refresh and load later pages. Test an empty/fully filtered page. Temporarily block a real feed ID on staging, reopen the catalogue and verify that title is absent.
  3. Play representative portrait and landscape games on Android and iOS. Check Arabic/English selection, small screens, game controls, ad behavior and loading/retry after network interruption.
  4. Test toolbar/hardware back, close/reopen, repeated taps, foreground/background, room departure and room switching. Verify no orphan game overlay remains.
  5. Use two devices to check room voice while a game is open and after it closes. Confirm no app coins/diamonds change as a consequence of GamePix play.
  6. Review provider content/ads and your app's privacy disclosures and store submission information for your actual enabled games. Capture actual game catalogue/game screens from your release candidate for reviewer evidence.

These are required buyer release checks, not a claim that every provider game or physical device has been verified. The integration's source tests do not prove gameplay or advertisement behavior on real devices.

5. Troubleshooting and source map

Symptom Check
Catalogue cannot load configuration Inspect game/gamePixConfig with a valid API key/session. Both data.gamePixConfig and data.blocked_game_ids must be arrays. Renew login if the token expired.
Feed empty or unavailable Check device connectivity, publisher SID, provider availability and category key. Inspect exact blocked IDs and pagination. An API success does not prove device access to the provider.
Card works but game fails Check the returned HTTPS game URL, host and network. Retry after reconnecting. Report a provider loader/ad failure with the game ID and platform; avoid bypassing URL checks indiscriminately.
PHP edits are not visible Close/reopen the catalogue; ensure you edited the deployed API used by this build. Reload PHP-FPM if the host's OPcache deployment policy requires it.
SID change is not visible Rebuild/reinstall flutter_app. It is a compiled Dart constant, not a live backend value.

Flutter source directory: flutter_app/lib/features/rooms/game_pix/. Controller: controllers/game_pix_controller.dart; feed/URL models: models/game_pix_models.dart; room catalogue: pages/game_bottom_sheet2.dart; embedded player: pages/game_pix_game_page.dart. Backend configuration: backend/php_api/app/Controllers/GameAppController.php. The buyer package uses the hosted WebView dependency described in WebView maintenance; the historical custom wallet bridge is not required for GamePix.