Game
The Game entity represents a title listed on the Ludilol marketplace. Every game is published by a maker and can have multiple versions, reviews, tags, and localizations.
Properties
| Property | Type | Description |
|---|---|---|
Id | int | Primary key |
Title | string | Display name of the game |
Slug | string | URL-safe identifier derived from the title |
Description | string | Short description shown in listings |
PriceUsd | decimal | Reference price in USD (informational) |
IsHtmlGame | bool | Whether this game can be played in-browser |
BlobName | string? | Azure Blob Storage key for the game archive |
OriginalFileName | string? | The filename as uploaded by the maker |
HtmlEntryFileName | string? | Entry HTML file inside the zip (e.g. index.html) |
PublishedVersionId | int? | FK → the currently live GameVersion |
PublishedDemoVersionId | int? | FK → an optional demo GameVersion |
PublisherId | int | FK → the AppUser who created the game |
IsFeatured | bool | Whether the game appears in the featured carousel |
IsBlocked | bool | Whether the game has been blocked by moderation |
CreatedAtUtc | DateTime | When the game record was created |
UpdatedAtUtc | DateTime | Last modification timestamp |
Computed Aggregates
These fields are recalculated when reviews, favorites, or tags change:
| Field | Description |
|---|---|
ReviewCount | Total number of reviews |
RecentReviewCount | Reviews in the last 30 days |
LifetimeRatingAverage | Average rating across all reviews (1–5) |
RecentRatingAverage | Average rating of recent reviews |
FavoriteCount | Number of users who favorited this game |
TopTagsJson | JSON array of the most-voted community tags |
Relationships
Game (1) ──── (N) GameVersion
Game (1) ──── (N) GameReview
Game (1) ──── (N) GameFavorite
Game (1) ──── (N) GameTag
Game (1) ──── (N) GameLocalization
Game (1) ──── (0..1) GameVersion (published)
Game (1) ──── (0..1) GameVersion (demo)
Game (N) ──── StorePageGame ──── (N) StorePage
Game (1) ──── (1) AppUser (publisher)Lifecycle
- A maker creates a game (costs 100 credits).
- The maker uploads a version — the zip enters quarantine.
- After the scan passes, the version can be published.
- The game can then be added to a Store Page for sale.
Moderation
Backoffice admins can block a game (with author + public messages) or feature it on the storefront carousel. Blocked games are hidden from all store pages.