Unlock the secrets of the universe in Starfield by discovering the most optimal outpost locations! This project is a comprehensive pipeline of Python scripts designed to scrape, process, and analyze data from various sources to help you identify the best planets for your outposts.
The Starfield Outpost Finder leverages data scraped from inara.cz and starfieldalmanac.com to compile an extensive database of planetary systems, resources, and biomes. By processing this data, the scripts identify planets that offer the most valuable resources and optimal conditions for building outposts.
- Data Scraping: Collects detailed planetary and resource data from multiple sources.
- Data Processing: Combines and scores data to prioritize the best systems.
- Outpost Optimization: Finds the minimal set of planets needed to gather all farmable resources.
- Query Tools: Provides utilities to answer specific questions and generate graphs about the game world.
- Python 3.x
- Required Python libraries (listed in
requirements.txt
)
-
Data Scraping
Run the scraping scripts to collect data:
python scrape_inara.py python scrape_almanac.py
-
Data Processing
Combine and score the scraped data:
python combine_scrape_data.py python score_data.py
-
Find Optimal Outposts
Use the processed data to find the best outpost locations:
python find_outposts_fullchain.py
-
Explore Data
Use the query script to explore the data and answer specific questions:
python query_data.py
Contains game data such as lists of all inorganic and organic resources:
inorganic.csv
: CSV file listing inorganic resources.organic.csv
: CSV file listing organic resources.gatherable_only.json
: JSON file of resources that are gatherable only.inorganic_groups.json
&organic_groups.json
: JSON files containing resource groups, which can be loaded usingcommon.py
'sload_resource_groups
function.
Stores intermediary and final data files from scraping and processing:
inara_systems_data.json
: Data scraped from inara.cz.almanac_systems_data.json
: Data scraped from starfieldalmanac.com.raw_systems_data.json
: Combined data from both sources usingcombine_scrape_data.py
.scored_systems_data.json
: Scored data based on resource availability and other factors usingscore_data.py
.final_systems_data.json
: The final output used byfind_outposts_fullchain.py
.my_system_data.yaml
: Personal data collected during gameplay (work in progress).
Contains working notes and experiments:
- Helium-3 Atmospheric Worlds: Research and notes on planets with atmospheric Helium-3.
- Reddit Post: All Worlds with Atmospheric Helium-3
- Optimal Planets Capture Notes: Documentation on capturing the 23 optimal planets reported by
find_outposts_fullchain.py
.- Reddit Post: Every Farmable Resource in 23 Outposts
Contains the core Python scripts forming the data pipeline:
-
Input Scripts
scrape_inara.py
: Scrapes data from inara.cz.scrape_almanac.py
: Scrapes data from starfieldalmanac.com.
-
Processing Scripts
combine_scrape_data.py
: Combines scraped data into a unified format.score_data.py
: Scores the combined data based on various criteria.
-
Output Scripts
find_outposts_fullchain.py
: Finds the optimal combination of outposts.find_outposts_fullchain_exhaustive.py
: Exhaustively searches all possible combinations (no longer updated).find_outposts_biome_map.py
: Work in progress to find a 22-biome solution using biome-resource mapping.
-
Utilities
common.py
: Shared functions for data loading and saving.config.py
: Global configurations and constants.query_data.py
: Functions to query data, generate graphs, and explore the dataset.
Intended to store the output of find_outposts_fullchain_exhaustive.py
(work in progress).
- Incorporate
my_system_data.yaml
into the raw data processing pipeline. - Update
find_outposts_fullchain_exhaustive.py
and populatebest_combinations/
. - Complete
find_outposts_biome_map.py
to find optimal biome combinations. - Enhance
query_data.py
with more querying capabilities.
This project was developed out of a passion for exploring the vast universe of Starfield and optimizing the gameplay experience. Special thanks to:
- inara.cz for providing comprehensive game data.
- starfieldalmanac.com for their detailed planetary information.
- The Starfield community on Reddit for their invaluable insights and discussions.
Here is some fun data from the query script:
----- Ranges ----- Gravity range: (('Phobos', 0.01), ('Groombridge II', 2.18)) Day length range (in hours): (('Porrima II-a', 0.0), ('Venus', 5832.0))
----- System Queries ----- System with most planets: Cheyenne System with most gas giants: ([], 0) System with least planets: Sagan
----- Planet Scores ----- Planet with highest habitability score: Nemeria IV-a (24.0) Planet with lowest habitability score: Venus (-13.0) Planet with highest organic score: Zelazny III (21.522) Planet with lowest organic score: Porrima I (0.0) Planet with highest inorganic score: Carinae V-c (45.0) Planet with lowest inorganic score: Porrima II-a (0.0)
----- System Scores ----- System with highest habitability score: Cheyenne (66.5) System with lowest habitability score: Aranae (0.0) System with highest organic score: Bardeen (40.0) System with lowest organic score: Sol (0.0) System with highest inorganic score: Kumasi (109.0) System with lowest inorganic score: Van Maanen's Star (2.0)
----- Top Habitable Systems -----
- Cheyenne: 66.5
- Lantana: 61.0
- Syrma: 60.0
- Ixyll: 58.0
- Porrima: 57.0
- Schrodinger: 55.5
- Serpentis: 53.5
- Alpha Tirna: 53.5
- Bardeen: 50.0
- Nemeria: 50.0
----- Top Habitable Planets -----
- Nemeria IV-a: 24.0
- Syrma VII-a: 23.5
- Codos: 19.5
- Katydid I-a: 19.0
- Archimedes V-a: 17.5
- Montara Luna: 17.0
- Zeta Ophiuchi I: 16.5
- Huygens VII-b: 16.0
- Ixyll II: 16.0
- Schrodinger VIII-a: 16.0
----- Top Inorganic Systems -----
- Kumasi: 109.0
- Hyla: 103.0
- Feynman: 101.0
- Schrodinger: 101.0
- Cheyenne: 99.0
- Muphrid: 97.0
- Huygens: 95.0
- Verne: 93.0
- Jaffa: 93.0
- Alpha Tirna: 93.0
----- Top Inorganic Planets -----
- Carinae V-c: 45.0
- Fermi VII-b: 42.0
- Nemeria V-c: 40.333
- Tirna VIII-a: 39.0
- Eridani VII-c: 39.0
- Maheo II: 39.0
- Rutherford VI-a: 39.0
- Mars: 38.0
- Al-Battani II: 38.0
- Verne I: 38.0
----- Top Organic Systems -----
- Bardeen: 40.0
- Shoza: 36.0
- Cheyenne: 32.0
- Zelazny: 30.0
- Schrodinger: 29.0
- Alpha Tirna: 26.0
- Beta Ternion: 24.0
- Fermi: 22.0
- Ursae Majoris: 22.0
- Beta Marae: 21.0
----- Top Organic Systems -----
- Zelazny III: 21.522
- Bardeen III: 18.0
- Fermi VII-a: 16.0
- Linnaeus II: 15.222
- Masada III: 14.818
- Beta Ternion II: 13.667
- Ternion III: 12.87
- Alpha Andraste III: 12.308
- Codos: 12.0
- Zeta Ophiuchi I: 11.619
----- Unique Values -----
Unique values for planet_type: {'Ice giant', 'Rock', 'Asteroid', 'Gas giant', 'Ice', 'Barren', 'Hot gas giant'}
Unique planet_type: {'Ice giant', 'Rock', 'Asteroid', 'Gas giant', 'Ice', 'Barren', 'Hot gas giant'}
Unique values for temperature: {'Deep freeze', 'Scorched', 'Hot', 'Cold', 'Frozen', 'Temperate', 'Inferno'}
Unique temperature: {'Deep freeze', 'Scorched', 'Hot', 'Cold', 'Frozen', 'Temperate', 'Inferno'}
Unique values for atmosphere: {'Extreme CO2', 'Extreme M', 'High M', 'High CO2', 'Thin M', 'Thin O2', 'Thin N2', 'Thin CO2', 'Standard CO2', 'Extreme N2', 'Extreme O2', 'Standard M', 'High O2', 'Standard N2', 'High N2', 'None None', 'Standard O2'}
Unique atmosphere: {'Extreme CO2', 'Extreme M', 'High M', 'High CO2', 'Thin M', 'Thin O2', 'Thin N2', 'Thin CO2', 'Standard CO2', 'Extreme N2', 'Extreme O2', 'Standard M', 'High O2', 'Standard N2', 'High N2', 'None None', 'Standard O2'}
Unique values for magnetosphere: {'Very weak', 'Massive', 'Powerful', 'Very strong', 'None', 'Weak', 'Strong', 'Extreme', 'Average'}
Unique magnetosphere: {'Very weak', 'Massive', 'Powerful', 'Very strong', 'None', 'Weak', 'Strong', 'Extreme', 'Average'}
Unique values for water: {'None', 'Safe', 'Biological', 'Chemical', 'Radioactive', 'Heavy metal'}
Unique water: {'None', 'Safe', 'Biological', 'Chemical', 'Radioactive', 'Heavy metal'}
Unique values for biomes: {'Frozen Volcanic', 'Wetlands Frozen', 'Ocean', 'Volcanic', 'Frozen Dunes', 'Rocky Desert', 'Frozen Plains', 'Frozen Crevasses', 'Frozen Mountains', 'Frozen Hills', 'Savanna', 'Swamp', 'Craters', 'Tropical Forest', 'Wetlands', 'Hills', 'Mountains', 'Deciduous Forest', 'Sandy Desert', 'Coniferous Forest', 'Plateau', 'Frozen Craters'}
Unique biomes: {'Frozen Volcanic', 'Wetlands Frozen', 'Ocean', 'Volcanic', 'Frozen Dunes', 'Rocky Desert', 'Frozen Plains', 'Frozen Crevasses', 'Frozen Mountains', 'Frozen Hills', 'Savanna', 'Swamp', 'Craters', 'Tropical Forest', 'Wetlands', 'Hills', 'Mountains', 'Deciduous Forest', 'Sandy Desert', 'Coniferous Forest', 'Plateau', 'Frozen Craters'}
Contributions are welcome! Please submit pull requests or open issues to help improve the project.
This project is open-source and available under the MIT License.
Disclaimer: Starfield is a product of ZeniMax Media Inc. All game data, assets, and intellectual property are the property of ZeniMax Media Inc.
The system data used in this project was sourced from INARA and the Starfield Almanac. All data is the property of its respective owners.
This project is not affiliated with or endorsed by ZeniMax Media Inc., INARA or Starfield Almanac