Planning toolkit for building optimized, aesthetic cities across all Pokopia areas.
Active city-building documents — where the design work lives.
| File | Description |
|---|---|
| Complete House Plan | All 367 Pokemon assigned exactly once across six non-Cloud areas, with habitat districts, houses, and decor |
| Complete Assignment CSV | One row per Pokemon with area, district, housemates, decor, and transfer status |
| Wasteland House Groups | 61 Pokemon in 18 legacy-format houses — Withered Wastelands |
| Beach House Groups | 61 Pokemon in 16 legacy-format houses — Bleak Beach |
| Ridges House Groups | 61 Pokemon in 18 legacy-format houses — Rocky Ridges |
| Skylands House Groups | 61 Pokemon in 16 legacy-format houses — Sparkling Skylands |
| Palette House Groups | 62 Pokemon in 18 legacy-format houses — Palette Town |
| Bubbly Basin House Groups | 61 underwater-capable Pokemon in 16 legacy-format houses — Bubbly Basin |
| Full Roster Config | Weights and district definitions used to produce the frozen assignment |
| Landscape & Building Plan | Master layout guide: district maps, architecture styles, water/lava features, urban zones, and lighting per area |
| City Planning | Working input file — paste Pokemon batches here for house group analysis |
| Primary Locations | Local planning annotations preserved separately from Serebii-sourced data |
The complete assignment is now frozen. The six area files mirror it in the original house-by-house format: habitat section, named house, overlap notes, resident favorite table, and suggested items.
| Area | Size | Pokemon | Houses | Habitat Types |
|---|---|---|---|---|
| Withered Wastelands | 240x240 | 61 | 18 | Bright, Dark, Dry, Humid, Warm |
| Bleak Beach | 272x272 | 61 | 16 | Bright, Cool, Dark, Humid, Warm |
| Rocky Ridges | 272x272 | 61 | 18 | Bright, Cool, Dark, Dry, Humid, Warm |
| Sparkling Skylands | 352x352 | 61 | 16 | Bright, Cool, Dark, Dry, Humid, Warm |
| Palette Town | 384x384 | 62 | 18 | Bright, Cool, Dark, Humid, Warm |
| Bubbly Basin | Expansion area | 61 | 16 | Bright, Cool, Dark, Humid, Warm |
Cloud Island is not used as a housing area or as overflow. The six planned areas hold the complete roster at 61–62 Pokemon each, below the configured maximum of 64.
Generated game data synchronized from Serebii. Do not edit these files manually; run the updater instead.
| File | Description |
|---|---|
| Pokopia.csv | 367 standard, event, and Bubbly Basin Pokedex entries |
| Habitats.csv | 252 main, Basin, and event habitats |
| Specialties.csv | 32 Pokemon specialties |
| Items.csv | 1,808 items in 15 Serebii categories |
| Favorites.csv | 43 object-favorite categories and item counts |
| Favorite Items.csv | 2,356 favorite-to-item relationships |
| Locations.csv | 7 current area descriptions |
| Location Resources.csv | Naturally occurring materials, plants, and blocks by area |
Flavor preferences such as Sweet flavors are Pokemon attributes, not object-favorite categories, so they appear in Pokopia.csv but not Favorites.csv.
Serebii is the source of truth for generated game data. The updater discovers the current Pokedex indexes, Pokemon pages, favorite pages, and locations, and parses Serebii's habitat, specialty, item, and favorite catalogs. Rosters, locations, habitat counts, and output columns are not maintained in code.
python -m pip install -r requirements.txt
python tools/update_data.py check
python tools/update_data.py sync
python -m pytest -qcheck exits with status 1 when any generated file differs from Serebii. sync parses and validates every discovered page before replacing each changed file atomically, so a network or parse failure cannot produce partial CSV content. Community-researched primary locations come from planning/Primary Locations.csv and are merged by Pokemon name.
The current assignment was produced by a capacity-constrained global plan and is no longer recalculated during documentation work. Every Pokemon appears exactly once. The frozen plan balances 61–62 residents per area, preserves ideal-habitat boundaries, restricts Bubbly Basin to underwater-capable Pokemon, and excludes Cloud Island completely.
python tools/render_area_house_groups.pyThis command only reformats planning/optimized/House Recommendations.csv into the six per-area Markdown files. It performs no scoring, assignment, permutation, or optimization.
The frozen constraints are:
- Cloud Island is forbidden.
- Each of the six areas contains no more than 64 Pokemon.
- Bubbly Basin accepts only underwater-capable Pokemon; Water specialty is not required.
- Every house has one ideal habitat and no more than four residents.
- Every Pokemon is assigned to exactly one area and one house.
Do not rerun either optimizer unless a new assignment is explicitly requested. Changes to prose or formatting should use the frozen CSV and renderer.
| File | Description |
|---|---|
| update_data.py | Discovers and synchronizes current Pokemon data from Serebii |
| render_area_house_groups.py | Rebuilds the six legacy-format area files from the frozen assignment without optimizing |
- Comfy Level — Each Pokemon's happiness (Iffy > Average > Nice > Great > Awesome) based on habitat match + favorites
- Environment Level — Per-area progression (1–10) driven by aggregate Comfy Levels; unlocks shops, challenges, gifts
- House Rules — Max 10x10 blocks, 3+ unique furniture, up to 4 Pokemon per house
- Map Height — 127 blocks vertical across all areas
- Habitat Types — Bright, Cool, Dark, Dry, Humid, Warm — never cross habitat lines in housing
Huge thanks to Serebii for being such an incredible resource. All Pokemon data in this project was sourced from there.
The housing group assignments and planning structure are my own original work.