Skip to main content
Configuration Files: config/games/*.ts
Feature Icons? Check the Icons Guide for adding icons to game features and specifications.

Overview

Add unlimited game hosting pages to your Latch site. Each game gets its own page with:
  • Unique pricing per region and billing period
  • Manual pricing (exact prices) or Auto pricing (base + multipliers)
  • Multiple regions with custom pricing
  • Flexible billing: hourly, daily, weekly, monthly, quarterly, semi-annual, annual, lifetime
  • Hero sections with stats, features, and FAQs
  • Unique purchase URLs for every region/period combination
All configs live in: config/games/

Quick Start

1

Copy the template

2

Fill in the details

Open rust.ts and replace placeholders:
3

Register the game

Add to config/games/index.ts:
4

Test it


Configuration Reference

Basic Info

Images

Tip: Use full URLs or paths from public/ folder like /assets/games/minecraft.png

Hero Section

The hero is the top banner section of your game page.

Regions

Server locations where your game servers can be hosted:
Flags: Get free SVG flags from hatscripts circle flags Important: The id is used in your pricing, so make sure they match exactly!

Billing Periods

Define how often customers can pay. This is an array of objects, NOT just strings! Simple monthly + annual:
With quarterly:
With lifetime option:
Flexible hourly/daily billing:
Available period IDs: hourly, daily, weekly, monthly, quarterly, semi-annual, annual, lifetime

Plan Specs

Define the specification columns shown for ALL your plans:
Important: The id field must match the keys you use in each plan’s specs object! Icons: Browse Lucide icons at lucide.dev - use PascalCase like MemoryStick, Cpu, HardDrive, Users, Database

Plans & Pricing

Choose between manual pricing (exact prices per region) or auto pricing (base price + multipliers):
Define exact prices for each region and period:
Critical:
  • Prices are plain numbers (2.99, not “2.99” or {amount: "2.99"})
  • Every region/period combo needs a price
  • Every region/period combo needs a purchaseUrl
  • Region IDs must match regions array
Use on 1 plan (usually middle tier) to highlight it.

Features

Game-specific features grid:
Icons: Lucide icons (Package, Shield, Database, Terminal, Zap, Users, etc.)

FAQs


Real Examples

Minecraft (Manual + Lifetime)

From Latch/config/games/minecraft.ts:

Hytale (Auto Pricing)

From Latch/config/games/hytale.ts:

FiveM (Hourly Billing)

From Latch/config/games/fivem.ts:

Best Practices

Pricing

  1. 3-4 plans maximum - Too many = overwhelming
  2. Mark 1 as popular - Guide users to best option
  3. Show discounts - Use badge: “SAVE 15%”
  4. Price by region - Europe/Asia often cost more

Regions

  1. Start with 3-5 regions - Expand later
  2. Use descriptive names - “US East” not “us-east-1”
  3. Include location - “New York” helps users choose

Billing Periods

  1. Monthly + Annual - Good starting point
  2. Hourly/Daily - For test servers
  3. Lifetime - Premium option for loyal customers

Plans

  1. Clear progression - Each tier should add value
  2. Descriptive names - “Starter/Pro/Ultimate” > “Plan A/B/C”
  3. USP badges - Show key spec (4GB, 8GB, etc.)

Troubleshooting

Pricing not showing

Check:
  • Prices are numbers, not strings: monthly: 9.99 not "9.99"
  • Every region has prices for all billing periods
  • Region IDs match exactly (case-sensitive)

Purchase URLs missing

Fix:
  • Every region/period combo needs a purchaseUrl
  • URLs must match billing period IDs exactly
  • Check for typos: "semi-annual" not "semiannual"

TypeScript errors

Solution: If you define a billing period, ALL regions must have that price:

Images not loading

Check:
  • Use full URLs: https://example.com/logo.png
  • Or use relative paths from public: /assets/games/minecraft.png
  • Case-sensitive: Minecraft.pngminecraft.png

Complete Example

Full working config: