Dev Blog #1: A Walkthrough

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!