Star Apocalypse is the reinvention of the 4X genre. The game is a real time game of intergalactic civilization, using the computation power of modern computers to run advanced simulations on cultural, technological and societal interaction and development.

Report RSS Update on the game - Nearing Alpha Phase

I've got an exciting announcement to make. The past time, me and zeroseconds have been coding approximately 6 to 9 hours each day (making my average workday be 15 hours long). And due to this investment, I have some exciting news, and something to show you!

Posted by on

Hey all,

I've got an exciting announcement to make. The past time, me and zeroseconds have been coding approximately 6 to 9 hours each day (making my average workday be 15 hours long). And due to this investment, I have some exciting news, and something to show you!

First off, we're planning on a release somewhere within the next month with setbacks calculated into that. If we don't encounter setbacks, the game will go into alphafunding this month!

What will this game contain? The first alpha will be a basic testcase of phase one gameplay. Phase one gameplay occurs within your own solar system, where you have to explore objects, mine resources and eventually become self-sufficiënt in space. This is the first phase in gameplay. The first public alpha which is going to be released will be very basic in both gameplay and graphics. We've chosen a windows forms application, in order to be able to rapidly prototype stuff. Planning is that by the end of the alpha, we'll be going to work on two things: multiplayer and proper graphics.

The beta will contain the interstellar gameplay, being phase 2 of the gameplay. This gameplay is the gameplay as described on the game's profile. So far this. Next thing I wanted to do is to show you some of the code we've written.

public class Geosphere
    {
        #region fields

        public Dictionary<atmospheregases, double> atmospherecontent { private set; get; }
        public double temperature { private set; get; }
        public double size { private set; get; }
        public double gravity { private set; get; }
        public double escapevelocity { private set; get; }
        public double solarradiation {private set; get;}
        public double pressure { private set; get; }
        

        #endregion

        #region constructors

        public Geosphere(Dictionary<atmospheregases, double> atmospherecontent, double size, double solarradiation)
        {
            this.atmospherecontent = atmospherecontent;
            this.size = size;
            this.solarradiation = solarradiation;
            this.pressure = 0;

            foreach (atmospheregases gas in atmospherecontent.Keys)
            {
                pressure += atmospherecontent[gas];

            }
            double greenhousefactor = 1 + (atmospherecontent[atmospheregases.greenhousegas] * 0.01) + (atmospherecontent[atmospheregases.carbondioxide] * 0.03) + (atmospherecontent[atmospheregases.methane] * 0.1) - (atmospherecontent[atmospheregases.antigreenhousegas] * 0.01);
            double temperaturefactor = (pressure * solarradiation * greenhousefactor);
            temperature = (270 * temperaturefactor) + 3;
            gravity = size / 600;

            escapevelocity = Math.Sqrt(2000 * gravity * size);
        }

        #endregion

        #region methods

        #endregion


    }

This is the preliminary code which will handle the atmosphere and things like that. the fields speak for themselves:

  • atmospherecontent lists the gases in the atmosphere, together with their pressure in atm.
  • temperature gives the temperature in Kelvin.
  • Size is the radius of the planet or object, in kilometers.
  • Gravity is the gravity on the surface, in m/s².
  • escapevelocity is the speed needed to get off the planet, in m/s.
  • solarradiation is the planet's relative radiation, compared to Earth. 1 is Earth radiation.
  • pressure is the total pressure of the gases combined.

There are 2 main spheres of influence here:

  1. Atmospherecontent influences pressure. Combine that with solarradiation, and we get the temperature.
  2. Size influences gravity, and both of them together influence escapevelocity.

It is a little more complicated than that, but let's run through the code which generates the stats. We'll start with the stats for the atmosphere.

this.atmospherecontent = atmospherecontent;
            this.solarradiation = solarradiation;
            this.pressure = 0;

            foreach (atmospheregases gas in atmospherecontent.Keys)
            {
                pressure += atmospherecontent[gas];

            }
            double greenhousefactor = 1 + (atmospherecontent[atmospheregases.greenhousegas] * 0.01) + (atmospherecontent[atmospheregases.carbondioxide] * 0.03) + (atmospherecontent[atmospheregases.methane] * 0.1) - (atmospherecontent[atmospheregases.antigreenhousegas] * 0.01);
            double temperaturefactor = (pressure * solarradiation * greenhousefactor);
            temperature = (270 * temperaturefactor) + 3;

What this does is the following:

  1. It defines the basic parameters, like atmospherecontent, solarradiation and pressure.
  2. It calculates a greenhouse factor, which will increase of decrease the temperature.
  3. It combines the pressure, solarradiation and greenhousefactor, in order to get a temperature modifier.
  4. If the temperature modifier is 1, we'll get a temperature around 0C out of it. This is due to Earth having greenhouse gases in its atmosphere, causing us to have a slightly higher temperature than we would actually have without those greenhouse gases.

Lets step through the code for calculating gravity and escape velocity:

            this.size = size;

            gravity = size / 600;

            escapevelocity = Math.Sqrt(2000 * gravity * size);

This does the following:

  1. It defines the size of the planet.
  2. It calculates the gravity. This is not entirely correct by the way, but it offers a value close to reality.
  3. It calculates the escape velocity. This is an actual scientific formula, which goes as this: escapevelocity = Sqrt(2 * gravity * radius in meters). Since we use kilometers for size, we multiply by an extra factor of 1000.

These show some code. I hope you like the news, and if you want to give feedback. Feel free to!

If you have further questions about it, feel free to ask!We hope to have a playable alpha release soon!

Comments
ZeroSeconds Creator
ZeroSeconds

Nice!

Reply Good karma+1 vote
Micknator
Micknator

Can't wait to see the game in action :)

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Icon
Star Apocalypse
Platforms
Windows
Developer & Publisher
Darkmatter Development
Engine
XNA
Contact
Send Message
Release date
Game watch
Follow
News
Tags
Alpha, Update
Browse
News
Report
Report
Share
Related Games
Related Engines
XNA
XNA Public Domain
Related Groups
Darkmatter Development
Darkmatter Development Developer & Publisher