beta.lmarena.ai battle

Update this specification based on the provided file content.

```
game-search.php.spec
generated with claude.ai 3.7 sonnet from the search page source and an
example request

# game-search.php API Specification

## Overview
Endpoint for searching games in the Adventure Game Studio database.

## Endpoint
URL: https://www.adventuregamestudio.co.uk/site/mvc/services/game-search.php
Method: POST
Content-Type: application/json

## Known Request Parameters
- page-number (integer): Page number for pagination
- title-or-author (string): Search text for game title or author name
- sort (string): Sorting method ID, options include:
  - "1": Title A-Z
  - "2": Title Z-A
  - "3": Author A-Z
  - "4": Author Z-A
  - "5": Newest Releases (default)
  - "6": Oldest Releases
  - "7": Highest Panel Rating
  - "8": Lowest Panel Rating
  - "9": Highest Player Rating
  - "10": Lowest Player Rating
  - "11": AGS Awards Won
  - "12": Most Popular Ever
  - "13": Most Popular This Month
  - "14": Newest Comments
  - "15": Newest Picks of the Month
  - "16": Newest Panel Rating
  - "17": Oldest Panel Rating

## Filter Parameters
The search filter fields are dynamically loaded from
`search-filter-content.php` into the desktop and mobile filter
containers. These fields are likely to include:

- Genre filters
- Platform compatibility filters
- Release year filters
- Language filters
- Rating filters
- Special category filters (awards, featured games, etc.)

A comprehensive documentation of these fields would require
examination of the `search-filter-content.php` file, which is not
included in the provided source. The API likely accepts these filter
parameters in addition to the ones documented above.

## Response Format
JSON object containing:
- game_results (array): List of game objects with properties:
  - id (integer): Unique game identifier
  - name (string): Game title
  - author (string): Game creator
  - filename (string): Path to thumbnail image
  - release_date (string): ISO format date/time of release
  - panel_rating (integer/float): Editorial rating
  - player_rating_avg (float): Average user rating (-1 if none)
  - awards_winner (mixed): Award winner information
  - awards_nominee (mixed): Award nomination information
  - downloads_total (integer): Total download count
  - downloads_this_month (integer): Downloads in current month
  - panel_date (string): Date of panel rating
  - picks_month (mixed): Featured month information
  - total_results (integer): Total number of games matching criteria
  - sort_type (integer): Sort method used
  - filter_type (integer): Filter method used
  - play_in_browser (integer): Browser playability flag (0/1)

## Sample Request
{
  "page-number": "1",
  "title-or-author": "",
  "sort": "5"
}

## Sample Response
{
  "game_results": [
    {
      "id": 2858,
      "name": "Another Heaven",
      "author": "Akril15",
      "filename": "/site/assets/img/games/thumbs/2858_1.png",
      "release_date": "2025-04-20 19:54:59",
      "panel_rating": 0,
      "player_rating_avg": -1,
      "awards_winner": null,
      "awards_nominee": null,
      "downloads_total": 36,
      "downloads_this_month": 36,
      "panel_date": null,
      "picks_month": null,
      "total_results": 2485,
      "sort_type": 5,
      "filter_type": 0,
      "play_in_browser": 0
    }
  ]
}

## Notes

- For complete documentation of filter parameters, the contents of
search-filter-content.php would need to be examined

- The application's JavaScript (particularly search.min.js) likely
handles the collection of all form fields and filters before
submitting to the API

- Network monitoring during form interactions would reveal the complete
structure of requests with filters applied
```

```
search-filter-content.php

<div class="accordion " id="filter-list-rating">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-rating"
aria-expanded="true">Rating
            </button>
        </h2>
        <div id="filter-content-rating" class="accordion-collapse
collapsed show" data-bs-parent="#filter-list-rating">
            <div class="accordion-body">
                <strong>Panel Rating</strong>
                <div class="form-check">
                    <label class="form-check-label" for="panel-5-stars">
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="5"
                           id="panel-5-stars" name="panel-5-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="panel-4-stars">
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="panel-4-stars" name="panel-4-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="panel-3-stars">
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="panel-3-stars" name="panel-3-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="panel-2-stars">
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="panel-2-stars" name="panel-2-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="panel-1-star">
                        <span class="fas fa-mug-hot medium-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="panel-1-star" name="panel-1-star">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="panel-no-rating">No panel rating</label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="panel-no-rating" name="panel-no-rating">
                </div>
                <strong>Player Rating</strong>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="5"
                           id="desktop-player-5-stars" name="player-5-stars">
                    <label class="form-check-label"
for="desktop-player-5-stars">
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                    </label>
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="player-4-stars">
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="player-4-stars" name="player-4-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="player-3-stars">
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="player-3-stars" name="player-3-stars">

                </div>
                <div class="form-check">
                    <label class="form-check-label" for="player-2-stars">
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="player-2-stars" name="player-2-stars">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="player-1-star">
                        <span class="fas fa-mug-hot gold"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                        <span class="fas fa-mug-hot light-blue"></span>
                    </label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="player-1-star" name="player-1-star">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="player-not-enough-votes">Not enough player votes</label>
                    <input class="form-check-input" type="checkbox" value="-1"
                           id="player-not-enough-votes"
name="player-not-enough-votes">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-awards">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-awards"
aria-expanded="true">AGS Awards
            </button>
        </h2>
        <div id="filter-content-awards" class="accordion-collapse
collapsed show" data-bs-parent="#filter-list-awards">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="ags-award-winners">AGS Awards Winners</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="ags-award-winners" name="ags-award-winners">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="ags-award-nominees">AGS Award Nominees</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="ags-award-nominees" name="ags-award-nominees">
                </div>
                            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-game-length">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-game-length"
aria-expanded="true">Game Length
            </button>
        </h2>
        <div id="filter-content-game-length" class="accordion-collapse
collapse show"
             data-bs-parent="#filter-list-game-length">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="length-full-length-games">Full Length Games</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="length-full-length-games"
name="length-full-length-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-medium-length-games">Medium Length Games</label>
                    <input class="form-check-input" type="checkbox" value="6"
                           id="length-medium-length-games"
name="length-medium-length-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-short-games">Short Games</label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="length-short-games" name="length-short-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-non-adventure-games">Non-Adventure Games</label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="length-non-adventure-games"
name="length-non-adventure-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-training-games">Training Games</label>
                    <input class="form-check-input" type="checkbox" value="7"
                           id="length-training-games"
name="length-training-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-joke-games">Joke Games</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="length-joke-games" name="length-joke-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-demo-games">Demo Games</label>
                    <input class="form-check-input" type="checkbox" value="5"
                           id="length-demo-games" name="length-demo-games">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="length-length-not-set"><em>(Not Set)</em></label>
                    <input class="form-check-input" type="checkbox" value="15"
                           id="length-length-not-set"
name="length-length-not-set">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-release-type">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-release-type"
aria-expanded="true">Release Type
            </button>
        </h2>
        <div id="filter-content-release-type"
class="accordion-collapse collapse show"
             data-bs-parent="#filter-list-release-type">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="release-commercial">Commercial</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="release-commercial" name="release-commercial">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="release-freeware">Freeware</label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="release-freeware" name="release-freeware">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-os">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-os">Operating System
            </button>
        </h2>
        <div id="filter-content-os" class="accordion-collapse
collapse" data-bs-parent="#filter-list-os">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="os-windows">Windows</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="os-windows" name="os-windows">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="os-linux">Linux</label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="os-linux" name="os-linux">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="os-macos">Mac
OS</label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="os-macos" name="os-macos">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="os-android">Android</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="os-android" name="os-android">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="os-ios">iOS</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="os-ios" name="os-ios">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-setting">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
                    data-bs-toggle="collapse"
                    data-bs-target="#filter-content-setting">
                Setting
            </button>
        </h2>
        <div id="filter-content-setting" class="accordion-collapse collapse"
             data-bs-parent="#filter-list-setting">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="setting-contemporary">Contemporary</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="setting-contemporary"
name="setting-contemporary">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="setting-historical">Historical</label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="setting-historical" name="setting-historical">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="setting-fantasy">Fantasy</label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="setting-fantasy" name="setting-fantasy">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="setting-sci-fi">Sci-Fi</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="setting-sci-fi" name="setting-sci-fi">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="desktop-settings-other">Other</label>
                    <input class="form-check-input" type="checkbox" value="5"
                           id="desktop-settings-other" name="setting-other">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="desktop-setting-not-set"><em>(Not Set)</em></label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="desktop-setting-not-set" name="setting-not-set">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-genre">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-genre">Genre
            </button>
        </h2>
        <div id="filter-content-genre" class="accordion-collapse
collapse" data-bs-parent="#filter-list-genre">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="genre-comedy">Comedy</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="genre-comedy" name="genre-comedy">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="genre-drama">Drama</label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="genre-drama" name="genre-drama">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="genre-horror">Horror</label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="genre-horror" name="genre-horror">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="genre-investigative">Investigative</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="genre-investigative" name="genre-investigative">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="genre-other">Other</label>
                    <input class="form-check-input" type="checkbox" value="5"
                           id="genre-other" name="genre-other">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="genre-not-set"><em>(Not Set)</em></label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="genre-not-set" name="genre-not-set">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-story-type">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-story-type">Story Type
            </button>
        </h2>
        <div id="filter-content-story-type" class="accordion-collapse collapse"
             data-bs-parent="#filter-list-story-type">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-original">Original</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="story-type-original" name="story-type-original">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-parody">Parody</label>
                    <input class="form-check-input" type="checkbox" value="2"
                           id="story-type-parody" name="story-type-parody">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-remake">Remake</label>
                    <input class="form-check-input" type="checkbox" value="3"
                           id="story-type-remake" name="story-type-remake">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-fan-game">Fan Game</label>
                    <input class="form-check-input" type="checkbox" value="4"
                           id="story-type-fan-game" name="story-type-fan-game">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-other">Other</label>
                    <input class="form-check-input" type="checkbox" value="5"
                           id="story-type-other" name="story-type-other">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="story-type-not-set">(Not Set)</label>
                    <input class="form-check-input" type="checkbox" value="0"
                           id="story-type-not-set" name="story-type-not-set">
                </div>
            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-language">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-language">Language
            </button>
        </h2>
        <div id="filter-content-language" class="accordion-collapse collapse"
             data-bs-parent="#filter-list-language">
            <div class="accordion-body">

                <div class="form-check">
                    <label class="form-check-label" for="language-czech">
                        Czech
                    </label>
                    <input class="form-check-input" type="checkbox" value="30"
                           id="language-czech" name="language-czech">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-dutch">
                        Dutch
                    </label>
                    <input class="form-check-input" type="checkbox" value="35"
                           id="language-dutch" name="language-dutch">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-english">
                        English
                    </label>
                    <input class="form-check-input" type="checkbox" value="36"
                           id="language-english" name="language-english">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-espanol">
                        Espanol
                    </label>
                    <input class="form-check-input" type="checkbox" value="38"
                           id="language-espanol" name="language-espanol">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-finnish">
                        Finnish
                    </label>
                    <input class="form-check-input" type="checkbox" value="41"
                           id="language-finnish" name="language-finnish">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-french">
                        French
                    </label>
                    <input class="form-check-input" type="checkbox" value="43"
                           id="language-french" name="language-french">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-georgian">
                        Georgian
                    </label>
                    <input class="form-check-input" type="checkbox" value="52"
                           id="language-georgian" name="language-georgian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-german">
                        German
                    </label>
                    <input class="form-check-input" type="checkbox" value="53"
                           id="language-german" name="language-german">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-greek">
                        Greek
                    </label>
                    <input class="form-check-input" type="checkbox" value="55"
                           id="language-greek" name="language-greek">
               </div>
                <div class="form-check">
                    <label class="form-check-label"
for="language-hakka-chinese">
                        Hakka-Chinese
                    </label>
                    <input class="form-check-input" type="checkbox" value="59"
                           id="language-hakka-chinese"
name="language-hakka-chinese">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-hebrew">
                        Hebrew
                    </label>
                    <input class="form-check-input" type="checkbox" value="61"
                           id="language-hebrew" name="language-hebrew">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-hungarian">
                        Hungarian
                    </label>
                    <input class="form-check-input" type="checkbox" value="64"
                           id="language-hungarian" name="language-hungarian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-icelandic">
                        Icelandic
                    </label>
                    <input class="form-check-input" type="checkbox" value="66"
                           id="language-icelandic" name="language-icelandic">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-italian">
                        Italian
                    </label>
                    <input class="form-check-input" type="checkbox" value="71"
                           id="language-italian" name="language-italian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-japanese">
                        Japanese
                    </label>
                    <input class="form-check-input" type="checkbox" value="73"
                           id="language-japanese" name="language-japanese">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-korean">
                        Korean
                    </label>
                    <input class="form-check-input" type="checkbox" value="83"
                           id="language-korean" name="language-korean">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-norwegian">
                        Norwegian
                    </label>
                    <input class="form-check-input" type="checkbox" value="115"
                           id="language-norwegian" name="language-norwegian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-polish">
                        Polish
                    </label>
                    <input class="form-check-input" type="checkbox" value="123"
                           id="language-polish" name="language-polish">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-portuguese">
                        Portuguese
                    </label>
                    <input class="form-check-input" type="checkbox" value="125"
                           id="language-portuguese" name="language-portuguese">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-romanian">
                        Romanian
                    </label>
                    <input class="form-check-input" type="checkbox" value="131"
                           id="language-romanian" name="language-romanian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-russian">
                        Russian
                    </label>
                    <input class="form-check-input" type="checkbox" value="132"
                           id="language-russian" name="language-russian">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-slovak">
                        Slovak
                    </label>
                    <input class="form-check-input" type="checkbox" value="140"
                           id="language-slovak" name="language-slovak">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-spanish">
                        Spanish
                    </label>
                    <input class="form-check-input" type="checkbox" value="143"
                           id="language-spanish" name="language-spanish">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-swedish">
                        Swedish
                    </label>
                    <input class="form-check-input" type="checkbox" value="148"
                           id="language-swedish" name="language-swedish">
               </div>
                <div class="form-check">
                    <label class="form-check-label" for="language-turkish">
                        Turkish
                    </label>
                    <input class="form-check-input" type="checkbox" value="164"
                           id="language-turkish" name="language-turkish">
               </div>            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-year">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-year">Year
            </button>
        </h2>
        <div id="filter-content-year" class="accordion-collapse
collapse" data-bs-parent="#filter-list-year">
            <div class="accordion-body">

                <div class="form-check">
                    <label class="form-check-label" for="year-2025">2025</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2025" name="year-2025">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2024">2024</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2024" name="year-2024">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2023">2023</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2023" name="year-2023">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2022">2022</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2022" name="year-2022">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2021">2021</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2021" name="year-2021">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2020">2020</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2020" name="year-2020">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2019">2019</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2019" name="year-2019">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2018">2018</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2018" name="year-2018">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2017">2017</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2017" name="year-2017">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2016">2016</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2016" name="year-2016">
                </div>
                <div class="form-check">
                    <label class="form-check-label" for="year-2015">2015</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-2015" name="year-2015">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="year-older-2014">2014 and older</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="year-older-2014" name="year-older-than-2015">
                </div>            </div>
        </div>
    </div>
</div>
<div class="accordion" id="filter-list-tags">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-tags">Tags
            </button>
        </h2>
        <div id="filter-content-tags" class="accordion-collapse
collapse" data-bs-parent="#filter-list-tags">
            <div class="accordion-body">

                    <div class="form-check">
                        <label class="form-check-label" for="tag-20">90s</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-20" name="tag-20">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-6">Adventure</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-6" name="tag-6">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-27">casual</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-27" name="tag-27">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-9">Child-friendly</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-9" name="tag-9">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-25">Choices Matter</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-25" name="tag-25">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-23">Chuck</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-23" name="tag-23">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-15">Dystopian</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-15" name="tag-15">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-4">Educational</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-4" name="tag-4">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-13">Escape the room</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-13" name="tag-13">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-2">Fantasy</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-2" name="tag-2">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-14">Gameboy</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-14" name="tag-14">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-11">Hidden object</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-11" name="tag-11">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-16">History</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-16" name="tag-16">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-7">Hybrid</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-7" name="tag-7">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-24">Maniac Mansion</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-24" name="tag-24">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-3">Medieval</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-3" name="tag-3">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-17">Museum</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-17" name="tag-17">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-1">Non-Adventure</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-1" name="tag-1">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label" for="tag-8">Quiz</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-8" name="tag-8">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-18">Retro</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-18" name="tag-18">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label" for="tag-5">RPG</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-5" name="tag-5">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-22">simulation</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-22" name="tag-22">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-26">Wild West</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-26" name="tag-26">
                    </div>
                    <div class="form-check">
                        <label class="form-check-label"
for="tag-21">Word Game</label>
                        <input class="form-check-input"
type="checkbox" value="1"
                               id="tag-21" name="tag-21">
                    </div>            </div>
        </div>
    </div>
</div>
<div class="accordion " id="filter-list-other">
    <div class="accordion-item">
        <h2 class="accordion-header">
            <button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse"
                    data-bs-target="#filter-content-other">Other
            </button>
        </h2>
        <div id="filter-content-other" class="accordion-collapse
collapse" data-bs-parent="#filter-list-other">
            <div class="accordion-body">
                <div class="form-check">
                    <label class="form-check-label"
for="other-play-in-browser">Play in Browser</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-play-in-browser"
name="other-play-in-browser">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-mags">MAGS</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-mags" name="other-mags">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-pick-of-the-month">Pick of the Month</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-pick-of-the-month"
name="other-pick-of-the-month">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-voice-acting">Voice Acting</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-voice-acting" name="other-voice-acting">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-filthy">The Most Filthy games</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-filthy" name="other-filthy">
                </div>
                <strong>Marked as Broken or Missing</strong>
                <div class="form-check">
                    <label class="form-check-label"
for="other-broken-images">Broken Images</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-broken-images" name="other-broken-images">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-broken-videos">Broken Videos</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-broken-videos" name="other-broken-videos">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-broken-downloads">Broken Downloads</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-broken-downloads"
name="other-broken-downloads">
                </div>
                <div class="form-check">
                    <label class="form-check-label"
for="other-missing-downloads">Missing Downloads</label>
                    <input class="form-check-input" type="checkbox" value="1"
                           id="other-missing-downloads"
name="other-missing-downloads">
                </div>
            </div>
        </div>
    </div>
</div>
```

gemini-2.0-flash-001
``` # game-search.php API Specification ## Overview Endpoint for
searching games in the Adventure Game Studio database. ## Endpoint
URL: https://www.adventuregamestudio.co.uk/site/mvc/services/game-search.php
Method: POST Content-Type: application/json ## Known Request
Parameters - page-number (integer): Page number for pagination -
title-or-author (string): Search text for game title or author name -
sort (string): Sorting method ID, options include: - "1": Title A-Z -
"2": Title Z-A - "3": Author A-Z - "4": Author Z-A - "5": Newest
Releases (default) - "6": Oldest Releases - "7": Highest Panel Rating
- "8": Lowest Panel Rating - "9": Highest Player Rating - "10": Lowest
Player Rating - "11": AGS Awards Won - "12": Most Popular Ever - "13":
Most Popular This Month - "14": Newest Comments - "15": Newest Picks
of the Month - "16": Newest Panel Rating - "17": Oldest Panel Rating
## Filter Parameters The search filter fields are dynamically loaded
from `search-filter-content.php` into the desktop and mobile filter
containers. The following filter parameters are supported, and are
sent as part of the JSON payload. Each filter category corresponds to
an accordion section in `search-filter-content.php`. Boolean filters
are represented by the presence of a key, the value of which is
ignored. - **Rating Filters:** - `panel-5-stars` (boolean): Filter for
games with a 5-star panel rating. - `panel-4-stars` (boolean): Filter
for games with a 4-star panel rating. - `panel-3-stars` (boolean):
Filter for games with a 3-star panel rating. - `panel-2-stars`
(boolean): Filter for games with a 2-star panel rating. -
`panel-1-star` (boolean): Filter for games with a 1-star panel rating.
- `panel-no-rating` (boolean): Filter for games with no panel rating.
- `player-5-stars` (boolean): Filter for games with a 5-star player
rating. - `player-4-stars` (boolean): Filter for games with a 4-star
player rating. - `player-3-stars` (boolean): Filter for games with a
3-star player rating. - `player-2-stars` (boolean): Filter for games
with a 2-star player rating. - `player-1-star` (boolean): Filter for
games with a 1-star player rating. - `player-not-enough-votes`
(boolean): Filter for games with not enough player votes. - **AGS
Awards Filters:** - `ags-award-winners` (boolean): Filter for games
that are AGS Award winners. - `ags-award-nominees` (boolean): Filter
for games that are AGS Award nominees. - **Game Length Filters:** -
`length-full-length-games` (boolean): Filter for full length games. -
`length-medium-length-games` (boolean): Filter for medium length
games. - `length-short-games` (boolean): Filter for short games. -
`length-non-adventure-games` (boolean): Filter for non-adventure
games. - `length-training-games` (boolean): Filter for training games.
- `length-joke-games` (boolean): Filter for joke games. -
`length-demo-games` (boolean): Filter for demo games. -
`length-length-not-set` (boolean): Filter for games where the length
is not set. - **Release Type Filters:** - `release-commercial`
(boolean): Filter for commercial games. - `release-freeware`
(boolean): Filter for freeware games. - **Operating System Filters:**
- `os-windows` (boolean): Filter for Windows games. - `os-linux`
(boolean): Filter for Linux games. - `os-macos` (boolean): Filter for
Mac OS games. - `os-android` (boolean): Filter for Android games. -
`os-ios` (boolean): Filter for iOS games. - **Setting Filters:** -
`setting-contemporary` (boolean): Filter for games with a contemporary
setting. - `setting-historical` (boolean): Filter for games with a
historical setting. - `setting-fantasy` (boolean): Filter for games
with a fantasy setting. - `setting-sci-fi` (boolean): Filter for games
with a sci-fi setting. - `setting-other` (boolean): Filter for games
with other settings. - `setting-not-set` (boolean): Filter for games
where the setting is not set. - **Genre Filters:** - `genre-comedy`
(boolean): Filter for comedy games. - `genre-drama` (boolean): Filter
for drama games. - `genre-horror` (boolean): Filter for horror games.
- `genre-investigative` (boolean): Filter for investigative games. -
`genre-other` (boolean): Filter for other genre games. -
`genre-not-set` (boolean): Filter for games where the genre is not
set. - **Story Type Filters:** - `story-type-original` (boolean):
Filter for original story type games. - `story-type-parody` (boolean):
Filter for parody story type games. - `story-type-remake` (boolean):
Filter for remake story type games. - `story-type-fan-game` (boolean):
Filter for fan game story type games. - `story-type-other` (boolean):
Filter for other story type games. - `story-type-not-set` (boolean):
Filter for games where the story type is not set. - **Language
Filters:** - `language-czech` (boolean): Filter for Czech language
games. - `language-dutch` (boolean): Filter for Dutch language games.
- `language-english` (boolean): Filter for English language games. -
`language-espanol` (boolean): Filter for Spanish language games
(Espanol). - `language-finnish` (boolean): Filter for Finnish language
games. - `language-french` (boolean): Filter for French language
games. - `language-georgian` (boolean): Filter for Georgian language
games. - `language-german` (boolean): Filter for German language
games. - `language-greek` (boolean): Filter for Greek language games.
- `language-hakka-chinese` (boolean): Filter for Hakka-Chinese
language games. - `language-hebrew` (boolean): Filter for Hebrew
language games. - `language-hungarian` (boolean): Filter for Hungarian
language games. - `language-icelandic` (boolean): Filter for Icelandic
language games. - `language-italian` (boolean): Filter for Italian
language games. - `language-japanese` (boolean): Filter for Japanese
language games. - `language-korean` (boolean): Filter for Korean
language games. - `language-norwegian` (boolean): Filter for Norwegian
language games. - `language-polish` (boolean): Filter for Polish
language games. - `language-portuguese` (boolean): Filter for
Portuguese language games. - `language-romanian` (boolean): Filter for
Romanian language games. - `language-russian` (boolean): Filter for
Russian language games. - `language-slovak` (boolean): Filter for
Slovak language games. - `language-spanish` (boolean): Filter for
Spanish language games. - `language-swedish` (boolean): Filter for
Swedish language games. - `language-turkish` (boolean): Filter for
Turkish language games. - **Year Filters:** - `year-2025` (boolean):
Filter for games released in 2025. - `year-2024` (boolean): Filter for
games released in 2024. - `year-2023` (boolean): Filter for games
released in 2023. - `year-2022` (boolean): Filter for games released
in 2022. - `year-2021` (boolean): Filter for games released in 2021. -
`year-2020` (boolean): Filter for games released in 2020. -
`year-2019` (boolean): Filter for games released in 2019. -
`year-2018` (boolean): Filter for games released in 2018. -
`year-2017` (boolean): Filter for games released in 2017. -
`year-2016` (boolean): Filter for games released in 2016. -
`year-2015` (boolean): Filter for games released in 2015. -
`year-older-than-2015` (boolean): Filter for games released in 2014
and older. The HTML uses id `year-older-2014` and name
`year-older-than-2015`, this documentation assumes the name is
correct. - **Tag Filters:** - `tag-20` (boolean): Filter for games
tagged as "90s". - `tag-6` (boolean): Filter for games tagged as
"Adventure". - `tag-27` (boolean): Filter for games tagged as
"casual". - `tag-9` (boolean): Filter for games tagged as
"Child-friendly". - `tag-25` (boolean): Filter for games tagged as
"Choices Matter". - `tag-23` (boolean): Filter for games tagged as
"Chuck". - `tag-15` (boolean): Filter for games tagged as "Dystopian".
- `tag-4` (boolean): Filter for games tagged as "Educational". -
`tag-13` (boolean): Filter for games tagged as "Escape the room". -
`tag-2` (boolean): Filter for games tagged as "Fantasy". - `tag-14`
(boolean): Filter for games tagged as "Gameboy". - `tag-11` (boolean):
Filter for games tagged as "Hidden object". - `tag-16` (boolean):
Filter for games tagged as "History". - `tag-7` (boolean): Filter for
games tagged as "Hybrid". - `tag-24` (boolean): Filter for games
tagged as "Maniac Mansion". - `tag-3` (boolean): Filter for games
tagged as "Medieval". - `tag-17` (boolean): Filter for games tagged as
"Museum". - `tag-1` (boolean): Filter for games tagged as
"Non-Adventure". - `tag-8` (boolean): Filter for games tagged as
"Quiz". - `tag-18` (boolean): Filter for games tagged as "Retro". -
`tag-5` (boolean): Filter for games tagged as "RPG". - `tag-22`
(boolean): Filter for games tagged as "simulation". - `tag-26`
(boolean): Filter for games tagged as "Wild West". - `tag-21`
(boolean): Filter for games tagged as "Word Game". - **Other
Filters:** - `other-play-in-browser` (boolean): Filter for games
playable in browser. - `other-mags` (boolean): Filter for MAGS games.
- `other-pick-of-the-month` (boolean): Filter for games that are Pick
of the Month. - `other-voice-acting` (boolean): Filter for games with
voice acting. - `other-filthy` (boolean): Filter for "The Most Filthy"
games. - `other-broken-images` (boolean): Filter for games with broken
images. - `other-broken-videos` (boolean): Filter for games with
broken videos. - `other-broken-downloads` (boolean): Filter for games
with broken downloads. - `other-missing-downloads` (boolean): Filter
for games with missing downloads. ## Response Format JSON object
containing: - game_results (array): List of game objects with
properties: - id (integer): Unique game identifier - name (string):
Game title - author (string): Game creator - filename (string): Path
to thumbnail image - release_date (string): ISO format date/time of
release - panel_rating (integer/float): Editorial rating -
player_rating_avg (float): Average user rating (-1 if none) -
awards_winner (mixed): Award winner information - awards_nominee
(mixed): Award nomination information - downloads_total (integer):
Total download count - downloads_this_month (integer): Downloads in
current month - panel_date (string): Date of panel rating -
picks_month (mixed): Featured month information - total_results
(integer): Total number of games matching criteria - sort_type
(integer): Sort method used - filter_type (integer): Filter method
used - play_in_browser (integer): Browser playability flag (0/1) ##
Sample Request ```json { "page-number": "1", "title-or-author": "",
"sort": "5", "genre-comedy": true, "os-windows": true } ``` ## Sample
Response ```json { "game_results": [ { "id": 2858, "name": "Another
Heaven", "author": "Akril15", "filename":
"/site/assets/img/games/thumbs/2858_1.png", "release_date":
"2025-04-20 19:54:59", "panel_rating": 0, "player_rating_avg": -1,
"awards_winner": null, "awards_nominee": null, "downloads_total": 36,
"downloads_this_month": 36, "panel_date": null, "picks_month": null,
"total_results": 2485, "sort_type": 5, "filter_type": 0,
"play_in_browser": 0 } ] } ``` ## Notes - The filter parameters are
boolean, the presence of the key indicates that the filter is active.
- The application's JavaScript (particularly search.min.js) likely
handles the collection of all form fields and filters before
submitting to the API. - Network monitoring during form interactions
would reveal the complete structure of requests with filters applied.
- The HTML uses id `year-older-2014` and name `year-older-than-2015`
for the "2014 and older" filter, this documentation assumes the name
(`year-older-than-2015`) is the correct parameter name. ```

gemini-2.5-flash-preview-04-17
Okay, I will update the `game-search.php.spec` specification using the
information from the provided `search-filter-content.php` file. The
key information to extract from `search-filter-content.php` is the
`name` attribute of each `<input type="checkbox">` element, and its
corresponding `value`. These `name`/`value` pairs represent the filter
parameters sent to the `game-search.php` endpoint when the checkbox is
selected. Here is the updated specification: ``` game-search.php.spec
generated with claude.ai 3.7 sonnet from the search page source and an
example request Updated based on content from
search-filter-content.php # game-search.php API Specification ##
Overview Endpoint for searching games in the Adventure Game Studio
database. ## Endpoint URL:
https://www.adventuregamestudio.co.uk/site/mvc/services/game-search.php
Method: POST Content-Type: application/json ## Known Request
Parameters - page-number (integer string): Page number for pagination
(e.g., "1", "2") - title-or-author (string): Search text for game
title or author name. Can be empty. - sort (string): Sorting method
ID, options include: - "1": Title A-Z - "2": Title Z-A - "3": Author
A-Z - "4": Author Z-A - "5": Newest Releases (default) - "6": Oldest
Releases - "7": Highest Panel Rating - "8": Lowest Panel Rating - "9":
Highest Player Rating - "10": Lowest Player Rating - "11": AGS Awards
Won - "12": Most Popular Ever - "13": Most Popular This Month - "14":
Newest Comments - "15": Newest Picks of the Month - "16": Newest Panel
Rating - "17": Oldest Panel Rating ## Filter Parameters Filter
parameters are included in the POST request if the corresponding
checkbox is selected in the search form. The parameter name is derived
from the `name` attribute of the checkbox, and the value from its
`value` attribute. Most checkbox filters send a value of `1` when
checked, but some use specific numerical identifiers (e.g., ratings,
lengths, languages). Multiple filters can be selected within and
across categories. The filter parameters identified from
`search-filter-content.php` are: ### Rating - **Panel Rating:** Filter
by panel rating level. Value is the rating (1-5) or 0 for no rating. -
`panel-5-stars` (integer): Value 5 - `panel-4-stars` (integer): Value
4 - `panel-3-stars` (integer): Value 3 - `panel-2-stars` (integer):
Value 2 - `panel-1-star` (integer): Value 1 - `panel-no-rating`
(integer): Value 0 (No panel rating) - **Player Rating:** Filter by
player rating level or status. Value is the rating (1-5) or -1. -
`player-5-stars` (integer): Value 5 - `player-4-stars` (integer):
Value 4 - `player-3-stars` (integer): Value 3 - `player-2-stars`
(integer): Value 2 - `player-1-star` (integer): Value 1 -
`player-not-enough-votes` (integer): Value -1 (Not enough player
votes) ### AGS Awards - `ags-award-winners` (integer): Include games
that won an AGS Award. Value is 1 if checked. - `ags-award-nominees`
(integer): Include games that were nominated for an AGS Award. Value
is 1 if checked. ### Game Length - Filter by game length category.
Value is a numerical ID for the length type. -
`length-full-length-games` (integer): Value 1 -
`length-medium-length-games` (integer): Value 6 - `length-short-games`
(integer): Value 0 - `length-non-adventure-games` (integer): Value 3 -
`length-training-games` (integer): Value 7 - `length-joke-games`
(integer): Value 4 - `length-demo-games` (integer): Value 5 -
`length-length-not-set` (integer): Value 15 ### Release Type - Filter
by release type. Value is a numerical ID. - `release-commercial`
(integer): Value 1 - `release-freeware` (integer): Value 0 ###
Operating System - Filter by compatible operating system. Value is a
numerical ID. - `os-windows` (integer): Value 1 - `os-linux`
(integer): Value 2 - `os-macos` (integer): Value 3 - `os-android`
(integer): Value 4 - `os-ios` (integer): Value 4 (Note: Shares value
with Android) ### Setting - Filter by game setting. Value is a
numerical ID. - `setting-contemporary` (integer): Value 1 -
`setting-historical` (integer): Value 2 - `setting-fantasy` (integer):
Value 3 - `setting-sci-fi` (integer): Value 4 - `setting-other`
(integer): Value 5 - `setting-not-set` (integer): Value 0 ### Genre -
Filter by game genre. Value is a numerical ID. - `genre-comedy`
(integer): Value 1 - `genre-drama` (integer): Value 2 - `genre-horror`
(integer): Value 3 - `genre-investigative` (integer): Value 4 -
`genre-other` (integer): Value 5 - `genre-not-set` (integer): Value 0
### Story Type - Filter by story type. Value is a numerical ID. -
`story-type-original` (integer): Value 1 - `story-type-parody`
(integer): Value 2 - `story-type-remake` (integer): Value 3 -
`story-type-fan-game` (integer): Value 4 - `story-type-other`
(integer): Value 5 - `story-type-not-set` (integer): Value 0 ###
Language - Filter by game language. Parameter name uses `language-`
followed by the language name. Value is a numerical language ID.
Examples: - `language-czech` (integer): Value 30 - `language-dutch`
(integer): Value 35 - `language-english` (integer): Value 36 -
`language-espanol` (integer): Value 38 - `language-finnish` (integer):
Value 41 - `language-french` (integer): Value 43 - `language-georgian`
(integer): Value 52 - `language-german` (integer): Value 53 -
`language-greek` (integer): Value 55 - `language-hakka-chinese`
(integer): Value 59 - `language-hebrew` (integer): Value 61 -
`language-hungarian` (integer): Value 64 - `language-icelandic`
(integer): Value 66 - `language-italian` (integer): Value 71 -
`language-japanese` (integer): Value 73 - `language-korean` (integer):
Value 83 - `language-norwegian` (integer): Value 115 -
`language-polish` (integer): Value 123 - `language-portuguese`
(integer): Value 125 - `language-romanian` (integer): Value 131 -
`language-russian` (integer): Value 132 - `language-slovak` (integer):
Value 140 - `language-spanish` (integer): Value 143 -
`language-swedish` (integer): Value 148 - `language-turkish`
(integer): Value 164 *(This list includes all languages found in the
source)* ### Year - Filter by release year or age. Parameter name
indicates the year or range. Value is 1 if checked. - `year-2025`
(integer): Value 1 - `year-2024` (integer): Value 1 - `year-2023`
(integer): Value 1 - `year-2022` (integer): Value 1 - `year-2021`
(integer): Value 1 - `year-2020` (integer): Value 1 - `year-2019`
(integer): Value 1 - `year-2018` (integer): Value 1 - `year-2017`
(integer): Value 1 - `year-2016` (integer): Value 1 - `year-2015`
(integer): Value 1 - `year-older-than-2015` (integer): Value 1
(Includes 2014 and older) ### Tags - Filter by tag. Parameter name
uses `tag-` followed by the tag ID. Value is 1 if checked. Tag IDs
correspond to the human-readable tag names provided in the labels. -
`tag-20` (integer): Value 1 (90s) - `tag-6` (integer): Value 1
(Adventure) - `tag-27` (integer): Value 1 (casual) - `tag-9`
(integer): Value 1 (Child-friendly) - `tag-25` (integer): Value 1
(Choices Matter) - `tag-23` (integer): Value 1 (Chuck) - `tag-15`
(integer): Value 1 (Dystopian) - `tag-4` (integer): Value 1
(Educational) - `tag-13` (integer): Value 1 (Escape the room) -
`tag-2` (integer): Value 1 (Fantasy) - `tag-14` (integer): Value 1
(Gameboy) - `tag-11` (integer): Value 1 (Hidden object) - `tag-16`
(integer): Value 1 (History) - `tag-7` (integer): Value 1 (Hybrid) -
`tag-24` (integer): Value 1 (Maniac Mansion) - `tag-3` (integer):
Value 1 (Medieval) - `tag-17` (integer): Value 1 (Museum) - `tag-1`
(integer): Value 1 (Non-Adventure) - `tag-8` (integer): Value 1 (Quiz)
- `tag-18` (integer): Value 1 (Retro) - `tag-5` (integer): Value 1
(RPG) - `tag-22` (integer): Value 1 (simulation) - `tag-26` (integer):
Value 1 (Wild West) - `tag-21` (integer): Value 1 (Word Game) *(This
list includes all tags found in the source)* ### Other - Various other
filter options. Value is 1 if checked. - `other-play-in-browser`
(integer): Value 1 (Play in Browser) - `other-mags` (integer): Value 1
(MAGS games) - `other-pick-of-the-month` (integer): Value 1 (Pick of
the Month) - `other-voice-acting` (integer): Value 1 (Voice Acting) -
`other-filthy` (integer): Value 1 (The Most Filthy games) -
`other-broken-images` (integer): Value 1 (Marked as Broken Images) -
`other-broken-videos` (integer): Value 1 (Marked as Broken Videos) -
`other-broken-downloads` (integer): Value 1 (Marked as Broken
Downloads) - `other-missing-downloads` (integer): Value 1 (Marked as
Missing Downloads) ## Response Format JSON object containing: -
game_results (array): List of game objects with properties: - id
(integer): Unique game identifier - name (string): Game title - author
(string): Game creator - filename (string): Path to thumbnail image -
release_date (string): ISO format date/time of release - panel_rating
(integer/float): Editorial rating (0-5, or null) - player_rating_avg
(float): Average user rating (0-5, or -1 if none/not enough votes) -
awards_winner (mixed): Award winner information (e.g., array of years,
or null) - awards_nominee (mixed): Award nomination information (e.g.,
array of years, or null) - downloads_total (integer): Total download
count - downloads_this_month (integer): Downloads in current month -
panel_date (string): Date of panel rating (YYYY-MM-DD HH:MM:SS format,
or null) - picks_month (mixed): Featured month information (e.g.,
array of month/year strings, or null) - total_results (integer): Total
number of games matching criteria - sort_type (integer): Sort method
used (corresponds to `sort` parameter values 1-17) - filter_type
(integer): Internal filter identifier (likely not relevant to external
use) - play_in_browser (integer): Browser playability flag (0/1) ##
Sample Request This sample includes basic parameters and a few filter
examples. { "page-number": "1", "title-or-author": "", "sort": "5",
"language-english": 36, "year-2024": 1, "other-play-in-browser": 1 }
## Sample Response { "game_results": [ { "id": 2858, "name": "Another
Heaven", "author": "Akril15", "filename":
"/site/assets/img/games/thumbs/2858_1.png", "release_date":
"2025-04-20 19:54:59", "panel_rating": 0, "player_rating_avg": -1,
"awards_winner": null, "awards_nominee": null, "downloads_total": 36,
"downloads_this_month": 36, "panel_date": null, "picks_month": null,
"total_results": 2485, "sort_type": 5, "filter_type": 0,
"play_in_browser": 0 } ] } ## Notes - The "Filter Parameters" section
is now documented based on the checkbox inputs found in
`search-filter-content.php`. - When multiple filters are selected
within the *same category* (e.g., multiple OS, multiple Genres,
multiple Years), the API likely uses an OR logic (e.g., show games
that are Windows *or* Linux). - When filters are selected across
*different categories* (e.g., OS=Windows AND Genre=Comedy), the API
likely uses an AND logic. - The application's JavaScript (particularly
search.min.js) handles the collection of all checked form fields and
filters before submitting the complete JSON payload to the API. ```

Reply via email to