Astropolis

Dev Blog #1: A Walkthrough

Finally! The dev blog! Let’s start with a walkthrough of the current development build. That’s a good way to show Astropolis’ current state and to show off its scale and ambition. You can download a Windows version of the dev build here if you want to do the self-tour. But remember: this is early stage development!

Here’s my plan and tentative timeline:

  1. Finish the Earth simulation (this year).
  2. Code interfaces that let you build things, and finish the off-Earth mechanics and content (2025).
  3. Transform a boring simulation into an engaging game (2026).
  4. Release the first installment, code named “Outward Bound” (2027).
  5. Release the second installment, code named “K2” (2029).

To recap from the About Page, you’ll start Astropolis as either a space agency or space company (not an Earth nation) with limited financial resources. You’ll have opportunities to become something else later, when you’ve developed something substantial off-Earth (say, for example, a new Mars colony). Alternatively, you can play in sandbox mode without financial constraints. Either way, your building activity will be focused off-Earth. That means that all of the Earth detail I’m showing below is mostly irrelevant to you as a player. But this is the same GUI that you will use as an agency or company to see your activity on the Moon, Mars, asteroids, or your space stations.

All GUI code and content data tables (and AI code too when we have that) are exposed in the Astropolis SDK to enable future modding. The core code will remain private (I do want to sell my game eventually!).

Game Screen Overview

Below is a maximally squished game screen. I made it small so the GUI would be readable here…

Earth, 2012. The simulation starts in 2010 so it has some internal history before game start, probably in 2030.

At more normal screen resolution you won’t have the GUI panels taking up so much screen real estate, although you can fill up your screen with as many Interface Panels as you want (we’ll get to that below). The GUI panels are resizable and individually draggable, so you can have whatever GUI arrangement you want and it will persist through game save/load.

The solar system where everything happens is from my open-source project I, Voyager (if you want to help with that go here!). I, Voyager also provides basic game functionality like options, settable hotkeys, and save/load (which I’m not covering here but work in the dev build).

So what’s going on off-Earth?

The International Space Station accounts for most off-Earth activity.

We also have the Tiangong (without a model for now). It shouldn’t really exist in 2012 but I’ll need it for game start in 2030. These are the only off-Earth “facilities” we have in the simulation right now, and probably will be the only ones present at game start. In the future we’ll have a game mechanic that accounts for the thousands (or someday millions) of artificial satellites that aren’t individually instanced, at least for the purpose of economic activity and generating development stats.

Note that I, Voyager has no difficulty showing many 10,000s of asteroid positions and/or orbits using GPU shaders (that’s our current header image!). So I do expect that you’ll be able to view all (or at least very many) artificial satellites as points or orbits even if you can’t visit them individually.

Hopping over to Luna… (We’re going with “Luna” in Astropolis because we have a whole lot of moons.)

“No Development.” “No Facilities.” If you feel an urge to do something about this, then Astropolis is the game for you!

There’s not much going on at Luna or anywhere else beyond Earth’s low orbit. “No Operations,” “No Markets,” and so on… everywhere. (There is info under the Physical tab, which we’ll get to below.)

Global Development Panel

You may have noticed the stats in the upper-left. I’m sure this will look different in the polished game. We’ll have an option to hide this too because it duplicates information available in the Interface Panel. But it’s prominent in the dev build and will be shown for new players because it summarizes much of what is happening in the simulation. (If some values look wrong to you, it’s probably due to missing content.)

Astropolis doesn’t have victory conditions, but instead has achievements that mostly involve these development stats:

  • Population is just “base” humans now. You’ll see some different kinds in K2.
  • Economy is measured as Gross Output (in $USD at game start; something different will emerge later…). I’m using GO rather than GDP because I can use the same measure for individual activities (e.g., a mine that makes only the “intermediate” ore product).
  • Energy Use is the classic progress measure thanks to Nikolai Kardashev, measured in watts. On mouse-over you’ll see the corresponding Type 0.8, 0.9, 1.0, 1.1, and so on (which is really Sagan’s modification of the Kardashev scale).
  • Built Mass is the total mass of all things built in tonnes, i.e., anthropogenic mass.
  • Construction is the rate of production of finished products and structures in tonnes per hour.
  • Information is the size of all stored information in bits if it were maximally (entropically) compressed.
  • Computation is the total work of all information processors in flops.
  • Biomass is the total dry weight of all biological life. (If you’re wondering, the dry weight of an average astronaut is 21 kg.)
  • Bioproductivity is the total biological production rate measured as tonnes per hour of dry weight mass (which is about 2x more than the more standard measure as “carbon mass”).
  • Biodiversity is a measure of effective species number accounting for species abundance. In real biomes it is much less than the total number of species. (My metric prefixing of “spp” is totally non-standard. But it’s a game so I can do what I want.)

Navigation & Selection Panels

The two panels in the lower-left and lower-right are the Navigation and Selection Panels, respectively. These let you select solar system bodies or facilities, move the camera around (which can be locked to or unlocked from the current selection), and change the view in the 3D window. In the Selection Panel you can save any number of “views” for easy access later (like “Home”) or select from local spacefaring polities (i.e., nations), space agencies, space companies (not yet in) or orbiting facilities. The HUDs button pops up an interface that allows you to show/hide or modify the color of points or orbit lines, e.g., for asteroids, spacecraft, etc. These two interfaces are only a little modified from I, Voyager’s Project Template. In the future, they will provide the ability to select from 100000s of asteroids and perhaps 1000s of player facilities. Probably this will be via popup “catalogs” of some sort.

Interface Panel

(This is where I lose all players that aren’t seriously hard-core. Oh well. Thanks for reading this far…!)

The Interface Panel is at the bottom-center. Well, the first one anyway. You can clone this panel and go full information overload if you want…

To much information? This is my 32″ monitor filled up with Interface Panels.

Btw, to add to the data chaos: the main development stats and many other data values (such as resource prices) are stored in the simulation’s “history.” You’ll be able to pop up graphs too!

Let’s start walking through a few of the Interface Panel tabs and subtabs…

Development

You can see the Development tab in the first two images at the top of this post. It’s just the ten main development stats again, but at a local level, e.g., for Earth, a specific Earth nation or entity, or for the ISS (see above). For planets, you’ll also see stats for the planet’s moon(s) and local space (e.g., cislunar for Earth). Clicking on the Sun will show you whole solar system stats by category: all planets, all moons, all planetoids (asteroids and comets), and all system space (that’s the upper-left-most panel in the data chaos screen above).

Going on, a little out of order…

Physical/Resources

The Resources subtab (under the Physical tab) shows you the surveyed, spectrally analyzed, or theoretical resource composition of any solar system body.

Starting from the upper-left, Earth has both “Commons” and “Territorial” sections. Commons includes the atmosphere (lower-left panel), oceans, the Antarctic land mass, lower crust, mantle (lower-right panel) and core. Under the territorial sections, we have some upper crust strata that are potentially accessible for mining and drilling. The panel in the upper-right shows USA/Continental Subsurface, 1-5 km. The values in parentheses (4.0 km; 2.7 g/cm^3; 1.1e17 t; surveyed 5) tell you about that strata: its thickness, its density, its total mass, and the basis for resource knowledge (here we have a survey level; in others you might see “known”, “theory” or “spectral”). “Mean” is the estimated percent abundance of the resource in this stratum, with knowledge error. The “Variance” column is really about spatial heterogeneity of the resource. This is important for mining because variance, in conjunction with survey level, leads to known “Deposits”. Deposits are important for mining—really, more important than mean abundance—because it determines energy efficiency of the extraction. As a resource is extracted, both its mean abundance and variance (and hence deposits) will go down. Basically, you are taking from the extreme tail of a log-normal spatial distribution. You can counter this to a limited extent by increasing survey level.

Luna has different regions of interest for resource extraction. There are no known “deposits” here because there have been no resource surveys of any significance yet.

The top regolith layer is a potential source of helium-3 for fusion reactors (assuming that doesn’t continue to be 20 year away). The polar shaded regolith has water, which can be separated by solar-powered electrolysis into oxygen and hydrogen. The crust is divided into two main types by region—the highlands (terrae) and the lunar “seas” (maria)—which have different mineral compositions. The lunar core, like Earth, is mainly native iron.

Mars has a thin atmosphere, a differentiated crust (like Earth), and two small moons that spectrally resemble C-type asteroids.

Like Luna, you’ll need resource surveys at Mars to find deposits for useful mining extraction. But the differentiated crust is something you will come to appreciate. It really sets these larger bodies apart and is incredibly important for resource extraction. For asteroids and small asteroid-like moons, you generally have a lot less spatial heterogeneity within the body. In this case you’ll need surveys to find the “gems”—the M-types or other special asteroids that originated from a resource-rich piece of a former protoplanet.

The resource compositions are built from a number of data tables in the SDK: resources.tsv (just the ‘is_extraction’ subset), strata.tsv, compositions.tsv, compositions_resources_proportions.tsv, compositions_resources_variances.tsv, and compositions_resources_deposits.tsv. I don’t have compositions yet for every strata in every solar system body, but all the major ones will be in the game at release (regardless of whether or not you can practically exploit them yet; that will mostly be possible in K2…). There are also generic compositions (e.g., CLASS_S_ASTEROID_BULK) that are “sampled” to give unique compositions to all the small bodies as they are needed.

Back to Earth for more tabs…

Markets

All bodies in the solar system with some development have markets.

You can see prices, trade volume, inventory and “contracted”. (Inventory quantities are currently set at stupidly high levels for code development—so operations can run uninterrupted at the moment.) Volume and contracted will appear as I develop the trade system. (Ah, the trade system… I’ve already created and discarded an entire code system twice. I think I have a better handle on it now though. Third time’s a charm!) After game start, prices will change based on a combination of exchange fiat for not-yet developed markets and last-trade-price for developed markets. As you can imagine, the price for a tonne of anything will be extraordinarily high off-Earth until a significant space economy has been developed.

Markets have all of the resources in resources.tsv, which include extractables (ores, native metals, volatiles, etc.), materials (steel, aluminium, etc.), manufactured (structures, robotics, CPU cores, etc.), biological (bulk foods, craft foods, pharmaceuticals, etc.) and cyber (CPU time, NPU time, and various service outputs).

The final subtab under Markets, Transport, is somewhat different. It will show pricing and contracting related to transport services to the selected location. In other words, the current market for shipping tonnage.

Operations

Operations is where many things “happen” in the simulation: power generation, resource extraction and conversion, and the service sector.

The capacity column shows run rate as percent of maximum capacity (essentially capacity factor relative to “nameplate” where applicable). For solar power and other renewables, this is fixed by environmental factors. Other operations can be spun up (to 100%) or down as needed. These will have different modes of control/automation: mothball, run-to-maintain, run-for-profit, run-to-supply, run-max, and maybe others (this isn’t AI; it’s just the core “run logic”). The revenue and margin (really, gross margin) columns are estimations-only based on current resource prices and input/output rates.

You can see the bleeding edge of current development here. I’ve added all power generating plants, some extraction (specifically: oil & gas drilling and coal mining), one manufacturing operation (not shown) and CPU Processing. I added the last two a few days before this dev build release (v0.0.4) just to get some Construction and Computation in the development stats.

Operations are defined in operations.tsv. Capacities, capacity factors (for renewables), and initial extraction rates for game-start facilities are set in facilities_operations_capacities.tsv, facilities_operations_capacity_factors.tsv and facilities_operations_extractions.tsv.

That’s all I can show you today. You can download and run the dev build if you want (if you can run a windows .exe). Some things happen over time, like population and resource changes (e.g., atmospheric CO2 really does go up!), but mostly the world is static. You really can’t do much now except look around.

What’s next for development?

What’s next (after I “finish” Earth) are interfaces where you can do something. These will be in existing or new tabs or subtabs. I’m sure things will change, but here’s the current layout plan:

  • Operations Tab: Ability to set different control/automation modes as I described above.
  • Physical Tab:
    • Surveys Subtab: Order probes to conduct resource surveys here.
  • Orbit Tab. This is mostly informational about the current selection’s orbit. But if the selection is something that can be moved like a space station or an asteroid (or even a planet potentially in K2) you’ll see an interface for that here.
  • Build Tab:
    • Design Subtab: Design your own facilities (e.g., spaceports or mines) or probes from modules, or modify existing designs. Some designs will be location-specific, especially for extraction operations. You can modify the design of something that already exists: say, for example, the ISS.
    • Order Subtab: You’ll see estimated costs to build new facilities or modify existing facilities at the current location, taking into account delta-v from relevant yards or supply facilities. All you have to do is select the design, select the build/supply facility, and press the “Order” button.
  • Budget Tab:
    • Financials Subtab: This has quarterly financials: revenue (actual based on resources sold, tax revenue for space agencies, etc.), cost of goods sold, operating costs, margins, etc. You’ll see this for your agency or company as a whole or for a single facility based on selection.
    • Line-Items Subtab: You can adjust funding among your current orders, which will speed or delay them, or allocate to orders versus R&D.
  • R&D Tab: You can read my thoughts on the advancement system here. TL;DR: It’s not a tech tree a la Civilization. And it’s not entirely predictable what you will get for your money.

And outside of the Interface Panel we still need:

  • A notification system for news, events, and achievements. These will have hyperlinks to the respective selections and/or interface tabs, or wherever is applicable.
  • An “Astropedia,” of course. 

That’s all for Dev Blog #1!

What’s next for the dev blog?

I’ll be back in July with something really cool. It’s definitely development related, but not exactly a dev blog. It’s something…else. I’m going to take you on a journey way into K2 material.

Please comment at our Forum! Seriously, if you got this far you are in my narrow target audience. I’d love to hear from you!

Welcome to Astropolis!

Astropolis is a simulation game that explores human expansion and evolution in our solar system. It is an early-stage, open-development project created by Charlie Whitfield (that’s me!) in the I, Voyager solar system simulator using the Godot Engine.

What is Astropolis about?

It is the story of becoming a Kardashev Type II civilization1 in two installments. In the first, we’ll see off-Earth mining and manufacturing, interplanetary economies, O’Neill cylinders and other space habitations, and humanity on its way to becoming multiplanetary (or non-planetary). And in the second: artificial general intelligences, virtual and other kinds of humans, terraforming, planet harvesting, star lifting, and a realistic Dyson swarm. These lists are only possibilities, however, as civilization may evolve in different directions. The two installments are presently code-named “Outward Bound” (borrowed from Isaac Arthur) and “K2.”

A diagram of the solar system from Galileo Galilei's Dialogus Systema Mundi, 1635.
Galileo Galilei’s diagram of the solar system from Dialogus Systema Mundi, 1635

In Astropolis, you will start as a single organization, most likely a public space agency or private space company. If your organization splits or gives rise to a new entity over time, you’ll have the opportunity to become this new branch of humanity: perhaps a newly independent Mars colony, or something quite different and not-exactly human. Alternatively, we’ll have a sandbox mode that let’s you build as any faction without financial or material constraints. There are no victory conditions per se, but there are many possible achievements involving population, economy, energy (i.e., the Kardashev scale), manufacturing, constructions, computation, information, biomass and biodiversity. You are free to pursue either competitive or cooperative approaches. However, many achievements are about whole solar system metrics.

“Space is big. Really big.”2 Our solar system can support more humans than appear in most sci-fi representations of whole galaxies — quadrillions, easily, considering only the biological kind. What does such a civilization look like? That’s the question I’m asking in Astropolis. Reality gives us interesting game challenges, the Rocket Equation being the foremost from an economics point of view (don’t worry, we’re not designing rockets!). Similarly, speed-of-light communication sets our game scope. Although settlement of other star systems will be possible in K2, near-real-time active engagement is possible only in one star system at any time.

1 A Kardashev Type II civilization consumes energy similar to the Sun’s total luminosity, about 3.8 x 1026 W. Or, in Carl Sagan’s extended scale, Type 2 is defined at 1026 W. The Kardashev scale is only one of many ways to measure your progress in Astropolis.

2 “…You just won’t believe how vastly hugely mind-bogglingly big it is.” Attribution to Douglas Adams, who understood the value of a footnote.

Is Astropolis moddable?

Absolutely! This is a priority. All of Astropolis’ content data and a large part of its code (including all GUI and AI) is exposed and moddable. This part is maintained in an SDK (software development kit) in a public GitHub repository. Simple text tables define all game content, which means you can mod entirely different solar systems, different players, different resources, different industrial processes, or virtually anything else. I’m especially excited to open up the AI code. Let’s face it, game AIs are still largely terrible at the grand and strategic levels. (Please inform me if you know any exceptions!) I think we can do better. By exposing the AI code, I’m enabling you, the fans and modders, to push me where direction might be needed, or to do it better yourself if you like.

What is the current state of development? When will it be released?

I’ve already released our first development build! However, Astropolis is very early in its development. The underlying solar system model (I, Voyager) is quite advanced. Resource, manufacturing, economic, technological, political, social and cultural models are at different stages, some near completion and others still on the drawing board. Realistically, official release of the first installment, Outward Bound, is several years in the future. My hope for 2023 and 2024 is to build the simulation. From there I anticipate a year or more of work to go from simulation (which may feel a bit sterile) to an immersive game experience.

What do I mean by “open development”?

I’m sharing the development process via dev blogs at t2civ.com, a discussion forum, a public view of our moddable code repository, and periodic development builds. The dev builds will remain free as long as we are in the “simulation building phase,” which will be for a while yet. To be clear, Astropolis is NOT open source. It’ll be a game for sale when it is ready. However, you are invited to participate in the development process and help me make Astropolis an awesome game.

What is the relationship between Astropolis and I, Voyager?

I, Voyager is our solar system model. It is a free, open-source development platform, itself built on the free, open-source Godot Engine. My intention is for I, Voyager to become a community project over time (do you want to help with that?). Astropolis is a for-profit game that I am building on the I, Voyager platform. Well, that’s the technical explanation. The truth of the matter is that Astropolis has always been the goal and I, Voyager is my “half-way there” milestone. This is a marathon effort!

What kind of art/graphics will Astropolis have?

I’ll be hiring artists very late in development. In the meantime, expect some interesting “emergent art” and shader work (i.e., GPU programming) from me. Our site’s header image is one example! (What is that, anyway?) See also my Saturn Rings shader. As a general rule, expect to see procedural visuals in addition to fixed art assets. Ultimately, our Dyson swarm will be a shader effect that resolves to individual objects as you zoom in. And long before that, we’ll see strategic views with tens of thousands of freighters in their Hohmann transfer orbits. If these sorts of things excite your imagination, then this is a game for you!

What’s coming in the dev blog?

I’ll delve more deeply into specific areas of Astropolis. I’m thinking roughly every other month at the start, picking up in frequency much later in development. Some likely topics:

  • The Resource Model. How do I account for all of the iron in the solar system? What is the right level of resource abstraction?
  • The Economics Model. Is this the Austrian School, or what? Futures contracts: An overcomplication? Or a simplification for you and the game AI? Have you seen the price of Bitcoin lately?
  • The Science, Technological and Engineering Models. How can I be “realistic” in some way and still surprising (which is, to be fair, realistic) about future advancement? 
  • The Biological Model. How much biomass can the solar system support? How do I model biodiversity? Are humans evolving and what might they evolve into? Do we need biology at all?
  • Evolution, broadly speaking. Does evolution have a direction? How does population size and structure affect evolution? How do I model other, non-biological, kinds of evolution: technological, political, economic, social and cultural?
  • Program architecture. OOP or data-centric, or a bit of both? How am I fencing off the game AI, GUI, and you the modder from internals? And how does this relate to design for multithreading and multiplayer?
  • Progress reports, from time to time.
  • And whatever else I feel like… Post-scarcity societies? The Fermi Paradox? Who knows?

How can you help?

Please spread the news and say hi on our Forum! We’re also on Twitter @t2civ and Facebook /t2civ. It’s quite a road ahead and I can use some encouragement!