[Data] Expand Card Database — Bronze, Silver, Gold, TOTW, Hero #5

Open
opened 2026-06-26 05:05:31 +00:00 by funman300 · 0 comments
Owner

Overview

The current card pool is minimal. Expand it so packs feel meaningful and squad building has real variety.

Target Counts

Rarity Target File
Bronze 30+ data/cards_bronze.json
Silver 20+ data/cards_silver.json
Rare Gold 10+ data/cards_gold_rare.json
TOTW 5+ data/cards_totw.json
Hero 3+ data/cards_hero.json

Card JSON Schema (per card)

{
  "id": "card_001",
  "name": "Carlos Mendoza",
  "overall": 64,
  "position": "CB",
  "nationality": "ARG",
  "league": "Primera División",
  "club": "River Plate",
  "rarity": "bronze",
  "is_rare": false,
  "attributes": {
    "pace": 58,
    "shooting": 40,
    "passing": 55,
    "dribbling": 52,
    "defending": 63,
    "physical": 67
  },
  "image_path": "cards/card_001.png"
}

Steps

1. Add 30+ Bronze cards (overall 50–64)

  • Cover all positions: at least 2 per position (GK, CB, LB, RB, CDM, CM, CAM, LW, RW, ST)
  • Include at least 8 different nationalities
  • Leagues: La Liga, Premier League, Bundesliga, Serie A, Ligue 1, MLS
  • Both rare and non-rare variants ("is_rare": true/false)

2. Add 20+ Silver cards (overall 65–74)

  • Same position/nation/league diversity as bronze
  • Mix of rare and non-rare variants

3. Add 10+ Rare Gold cards (overall 75–84)

  • Popular clubs (Man Utd, Barcelona, Juventus, PSG, Bayern)
  • No real player names — use fictional names only

4. Add 5+ TOTW cards (overall 82–90)

  • "rarity": "totw", include "base_card_id" linking to the normal version
  • Add "form_stats_boost": { "pace": 5, "shooting": 3 } field

5. Add 3+ Hero cards (overall 85–92)

  • "rarity": "hero", include "era" field (e.g. "90s")
  • Hero cards receive full chemistry links to their historical league

6. Update data/packs.json pool references

  • Bronze pack → pulls only from bronze pool
  • Silver pack → pulls only from silver pool
  • Gold pack → 3 rare gold + 9 non-rare gold
  • TOTW pack → TOTW cards only
  • Icon/Hero pack → Hero cards only

7. Update the seeder in src/seed/ if it hard-codes card IDs

Make the seeder load all JSON files at startup rather than maintaining a static list.

8. Add data validation test in tests/card_data.rs

// Assert bronze pool has >= 30 entries
// Assert all cards have: id, name, overall, position, rarity, attributes
// Assert no duplicate id values across all pools

Acceptance Criteria

  • 30+ bronze cards in data/cards_bronze.json
  • 20+ silver cards in data/cards_silver.json
  • 10+ rare gold cards in data/cards_gold_rare.json
  • 5+ TOTW cards in data/cards_totw.json
  • 3+ Hero cards in data/cards_hero.json
  • Pack definitions reference the correct pools by rarity
  • Data validation test passes (no missing fields, no duplicate IDs)
## Overview The current card pool is minimal. Expand it so packs feel meaningful and squad building has real variety. ## Target Counts | Rarity | Target | File | |--------|--------|------| | Bronze | 30+ | `data/cards_bronze.json` | | Silver | 20+ | `data/cards_silver.json` | | Rare Gold | 10+ | `data/cards_gold_rare.json` | | TOTW | 5+ | `data/cards_totw.json` | | Hero | 3+ | `data/cards_hero.json` | ## Card JSON Schema (per card) ```json { "id": "card_001", "name": "Carlos Mendoza", "overall": 64, "position": "CB", "nationality": "ARG", "league": "Primera División", "club": "River Plate", "rarity": "bronze", "is_rare": false, "attributes": { "pace": 58, "shooting": 40, "passing": 55, "dribbling": 52, "defending": 63, "physical": 67 }, "image_path": "cards/card_001.png" } ``` ## Steps ### 1. Add 30+ Bronze cards (overall 50–64) - Cover all positions: at least 2 per position (GK, CB, LB, RB, CDM, CM, CAM, LW, RW, ST) - Include at least 8 different nationalities - Leagues: La Liga, Premier League, Bundesliga, Serie A, Ligue 1, MLS - Both rare and non-rare variants (`"is_rare": true/false`) ### 2. Add 20+ Silver cards (overall 65–74) - Same position/nation/league diversity as bronze - Mix of rare and non-rare variants ### 3. Add 10+ Rare Gold cards (overall 75–84) - Popular clubs (Man Utd, Barcelona, Juventus, PSG, Bayern) - No real player names — use fictional names only ### 4. Add 5+ TOTW cards (overall 82–90) - `"rarity": "totw"`, include `"base_card_id"` linking to the normal version - Add `"form_stats_boost": { "pace": 5, "shooting": 3 }` field ### 5. Add 3+ Hero cards (overall 85–92) - `"rarity": "hero"`, include `"era"` field (e.g. `"90s"`) - Hero cards receive full chemistry links to their historical league ### 6. Update `data/packs.json` pool references - Bronze pack → pulls only from bronze pool - Silver pack → pulls only from silver pool - Gold pack → 3 rare gold + 9 non-rare gold - TOTW pack → TOTW cards only - Icon/Hero pack → Hero cards only ### 7. Update the seeder in `src/seed/` if it hard-codes card IDs Make the seeder load all JSON files at startup rather than maintaining a static list. ### 8. Add data validation test in `tests/card_data.rs` ```rust // Assert bronze pool has >= 30 entries // Assert all cards have: id, name, overall, position, rarity, attributes // Assert no duplicate id values across all pools ``` ## Acceptance Criteria - [ ] 30+ bronze cards in `data/cards_bronze.json` - [ ] 20+ silver cards in `data/cards_silver.json` - [ ] 10+ rare gold cards in `data/cards_gold_rare.json` - [ ] 5+ TOTW cards in `data/cards_totw.json` - [ ] 3+ Hero cards in `data/cards_hero.json` - [ ] Pack definitions reference the correct pools by rarity - [ ] Data validation test passes (no missing fields, no duplicate IDs)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: funman300/OpenFUT-Core#5