Sunday 23 December 2012

User Interface Customisation

Recently I have been improving the user interface for Galaxial and it has undergone a lot of changes.

I was having trouble deciding which colour scheme to use, so I made the user interface customisable so that you can choose the one you like best from the options menu.

Below are screenshots of the colour schemes I have made so far. The test window shown is for checking that all the user interface widgets work and to see they look. Also windows are no longer static so they can now be overlapping, moved, minimised and closed.

Default 
Dark 
Slate
Teal
Grey

Example Colour Scheme File

Galaxial is being developed so that its very mod-friendly. Below is an example XML file for one of the colour schemes to give you an idea how much control you can have over the appearance, if you wanted to add your own or modify the existing ones.

The widget graphics (buttons/windows etc.) are procedurally rendered so unfortunately you wont be able to change the style completely. Just the colours.
 
<?xml version="1.0" encoding="utf-8"?>
<uicolourscheme>
    <name>Dark</name>
    <!-- Window Widget -->
    <window>
        <colour background="48,48,48" outline="255,255,255" shadow="0,0,0" />
        <titlebar>
            <active>
                <colour background="32,32,32" button="32,32,32" />
                <text foreground="255,255,255" background="0,0,0" shadow="true" />
            </active>
            <inactive>
                <colour background="64,64,64" button="64,64,64" />
                <text foreground="224,224,224" background="0,0,0" shadow="true" />
            </inactive>
        </titlebar>
    </window>
    <!-- Button Widget -->
    <button>
        <colour glow="224,224,224" />
        <active>
            <colour background="32,32,32" image="255,255,255" outline="255,255,255" />
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </active>
        <disabled>
            <colour background="64,64,64" image="128,128,128" outline="255,255,255" />
            <text foreground="128,128,128" background="0,0,0" shadow="false" />
        </disabled>
        <basic>
            <colour highlight="224,224,224" />
            <active>
                <colour background="32,32,32" border="0,0,0" />
                <text foreground="255,255,255" background="0,0,0" shadow="false" />
            </active>
            <disabled>
                <colour background="64,64,64" border="0,0,0" />
                <text foreground="128,128,128" background="0,0,0" shadow="false" />
            </disabled>
        </basic>
    </button>
    <!-- Checkbox Widget -->
    <checkbox>
        <colour highlight="64,64,64" />
        <active>
            <colour background="32,32,32" border="0,0,0" image="255,255,255" />
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </active>
        <disabled>
            <colour background="64,64,64" border="0,0,0" image="128,128,128" />
            <text foreground="128,128,128" background="0,0,0" shadow="false" />
        </disabled>
    </checkbox>
    <!-- Combobox Widget -->
    <combobox>
        <colour highlight="64,64,64" shadow="0,0,0" />
        <active>
            <colour background="32,32,32" border="0,0,0" image="255,255,255" />
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </active>
        <disabled>
            <colour background="64,64,64" border="0,0,0" image="128,128,128" />
            <text foreground="128,128,128" background="0,0,0" shadow="false" />
        </disabled>
    </combobox>
    <!-- Groupbox Widget -->
    <groupbox>
        <background>true</background>
        <colour outline="0,0,0" background="32,32,32" />
        <text foreground="255,255,255" background="0,0,0" shadow="true" />
    </groupbox>
    <!-- Label Widget -->
    <label>
        <small>
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </small>
        <large>
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </large>
    </label>
    <!-- Progressbar Widget -->
    <progressbar>
        <active>
            <colour background="32,32,32" bar="64,64,64" outline="255,255,255" />
            <text foreground="255,255,255" background="0,0,0" shadow="true" />
        </active>
        <disabled>
            <colour background="32,32,32" bar="64,64,64" outline="255,255,255" />
            <text foreground="128,128,128" background="0,0,0" shadow="false" />
        </disabled>
    </progressbar>
    <!-- Scrollbar Widget -->
    <scrollbar>
        <colour glow="64,64,64" slider="32,32,32" />
        <active>
            <colour background="64,64,64" button="32,32,32" image="255,255,255" outline="255,255,255" />
        </active>
        <disabled>
            <colour background="64,64,64" button="32,32,32" image="128,128,128" outline="255,255,255" />
        </disabled>
    </scrollbar>
    <!-- Textbox Widget -->
    <textbox>
        <colour selection="64,64,64" focus="255,255,255" />
        <active>
            <colour background="32,32,32" border="0,0,0" />
            <text foreground="255,255,255" background="0,0,0" shadow="false" />
        </active>
        <disabled>
            <colour background="32,32,32" border="0,0,0" />
            <text foreground="128,128,128" background="0,0,0" shadow="false" />
        </disabled>
    </textbox>
    <!-- Treeview Widget -->
    <treeview>
        <colour background="32,32,32" border="0,0,0" selection="64,64,64" text="255,255,255" line="0,0,0" />
    </treeview>
</uicolourscheme>

Thats all for now, as always let me know what you think and have a happy Christmas!

Friday 30 November 2012

2012 IOTY Awards



The 2012 Indie of the Year Awards have started over at IndieDB, where you can support the developers by voting for your favourite games and upcoming projects!

Tuesday 13 November 2012

Ship Customisation

I've made some improvements to the ship graphics style so that they now look better for paint scheme customisation.


(High resolution rendering)

The ships now have thick interior lines to seperate the two main areas that can be painted and I reduced the amount of bright glow around the outside so that the paint schemes dont look too white, although this does make them look more flat.

Weapon turrets, shields and engine trails can be customised to the colour you want as well.

Heres screenshots showing some different colour variants:






Some colours look really awful (black, dark colours) due to how they are multiplied with the base texture, so I may just provide a very large selection of colours that are suitable (but still moddable if you want to edit them) rather than using an unrestricted RGB colour picker to choose.

I was considering making projectiles, missile trails and weapon effects customisable so you can see if it is an enemy firing or one of your own ships. However I think its good to see the type of weapons the enemy is using just from its visual effects (yellow for cannons, red for lasers etc.) so not sure I will change this...

Let me know what you think!

Wednesday 7 November 2012

Recent Updates #2

Some parts of the game I have been working on recently.

Galaxy Changes

I've been having some design problems with the way ships warp around inside star systems for them to reach jumpgates, so I have decided to make some major changes to the way the galaxy is structured and connected together.

At each location on the main galaxy map there will now be a single planet or sector instead of an entire star system containing multiple planets. This will remove a zoom level, so it now goes galaxy > sector instead of galaxy > system > sector.

(Circles on the galaxy map now represent individual planets instead of entire star systems)

The jumpgates have been moved to inside the planet sectors (there are as many jumpgates as there are links on the galaxy map to the sector), so ships no longer warp around the system to reach a jumpgate sector (like EVE Online) It is now more like the game X3 where you can see all ships and where they are travelling to in a single sector.

These changes should make it easier and less complicated to see where all your ships are and the places that need assistance. It will also bring a lot more life to the sectors so they dont feel empty as well as making the maximum galaxy sizes even larger.

Jumpgates

Graphics for the jumpgates are mostly finished although I havn't yet made the visual effects for when ships make a jump. The lights around the outside of the gate shows if the connected sector is friendly, hostile, allied or neutral.


Main Menu

The main menu and loading screens are now working although the title text may change to something a bit better later on. Planning to also add some big randomised ship battles to watch in the background.


Console

Added a console interface that can execute commands to help with testing, changing global settings, spawning ships/objects or for cheating.

Friday 24 August 2012

Planets & Colonies

I havn't had much new stuff to post about recently so here's some information about colonies, facilities and the different planet types.

Colonies

Each colony starts with a single space to build a facility but can be upgraded to 6 in total. Multiple facilities of the same type increase their efficiency so its best to specialise each colony according to its planet bonus. These are the facilities that you can currently build:


I could possibly add other types of facility in the future for population, food, trade etc. but for now I would like to keep it fairly simple.

Below is the interface screen for upgrading the colony and building new facilities.



Planet Types

Each of the different planet types will provide a certain bonus to the colony facilities built there.  

Bonuses stack with the facilities you build, so for example 6 shipyards built at a desert colony will construct ships at 450% the normal speed. Some bonuses may need to change slightly if I find them to be too powerful.

Temperate
+50% Ship Supply

Desert
+50% Ship Construction Speed

Ice
+50% Ore Refinery Processing Speed
+50% Ore Refinery Capacity

Ocean
+50% Research Points

Lava
Not colonisable

Gas
Not colonisable

The lava and gas planet types which you cant colonise have more valuable asteroid fields and generally be a dangerous place as pirate ships will often gather nearby.


Wednesday 6 June 2012

Random Galaxy Generation

Information about the galaxy generator in the game with some examples of randomly created galaxies.

Generator Settings

When you start a new sandbox game you first need to generate a new galaxy. Some of the settings that you can change when doing this include:
  • Galaxy shape (spiral, elliptical, ring and starburst)
  • Number of star systems
  • Number of planets
  • Number of galaxy arms (used for starburst galaxies)
  • Random seed
  • Frequency of dead end systems (systems that have just a single stargate travel link)
  • Frequency of planet types (temperate, desert, ice, ocean, volcanic and gas)
  • Scarcity of asteroids and resources
  • Computer faction starting positions and relations
  • Starting planet, ships and resources
  • Background colour style

I havnt yet decided on the upper limit for the maximum number of star systems and planets. Theres no real performance issues with having 500-1000 systems but even set at 250 it will result in a very long game especially if your trying to conquer everything.

Spiral Galaxy Examples

(100 systems, many dead ends)

(250 systems, average dead ends)

 (500 systems, many dead ends)

Elliptical Galaxy Examples

(50 systems, few dead ends)



(100 systems, average dead ends)



(250 systems, few dead ends)


Ring Galaxy Examples

 
(50 systems, few dead ends)

(100 systems, many dead ends)

(250 systems, few dead ends)

Starburst Galaxy Examples

(50 systems, 5 arms, many dead ends)

(100 systems, 7 arms, few dead ends)

(250 systems, 10 arms, many dead ends)

Monday 23 April 2012

Resource and Items Management

I have had to postpone starting the faction AI as I have been making some major changes to the way resources and items are managed.

When resources are collected such as when some asteroid ore gets processed at a refinery and refined into metal, it will no longer just vanish and get added to the resources total counter at the top of the screen. Instead the metal gets added to the colony inventory and will remain there until its used or moved to another location.


If you have seperate colonies for ore refining, equipment and ship production then you will need to transport the items they require between each of them rather than having your entire empires resources available invisibly no matter where they are being used.

All ships have at least a small cargo hold but I will also add new transport ships that can carry large volumes of cargo but will be quite fragile and defenseless.


This is how the transport orders screen currently looks. I would like to keep it as simple as possible, so I am not adding multiple waypoint settings and items will be seperated into different cargo catagories. If you really need to transport cargo both ways between planets you will need an extra transport ship with different orders although there shouldnt really be a need for this.

Something I am also experimenting with is requiring the "data" produced by research facilities on colonies to be transported back to your designated capital before the points can be spent on research projects.

Most of these changes are to discourage having well defended colonies that are isolated away from your main empire but still be fully functional.

Hopefully this should all make empire building a lot more complex and enjoyable and open up a lot of possibilities for features I would like to add in the future.

EDIT: This is all still subject to change as it may turn out to be no fun or requires too much micro-management.

Wednesday 11 April 2012

Interface Screens

Some of the things I have been working on recently. 

Fleet Management Interface

I have started on the fleet management screen that shows all your ships including their current orders, location and status as well as the squadron and wing they belong to.

Ships can be dragged around to move them into different squadrons and the squadrons can also be moved into wings which will group them together. Wings dont currently have any purpose other than to make it quicker and easier to assign orders for a large number of ships.

Squadrons can contain up to 9 ships that will move in formation and work together as a team. Theres no limit to the number of squadrons that each wing can have.

You can right click on any of the ships, squadron and wings in the tree view to bring up a context menu that will show a list of available settings and options for them.

(Still a work in progress)

Strafing Attack Runs

Some ships can now make strafing runs when attacking their target instead of just orbiting or chasing them. This will probably be used only for small fast ships such as fighters as it decreases the effectiveness of its weapons as they occassionally go out of range from their target when turning around to start another run.

Text Box GUI Widget

Finished coding multi-line scrolling text box widget's which are used for user input text when renaming things like ships/squadrons/colonies and save game naming. This was quite troublesome and time consuming to code so thought it was worth a mentioning these.

Coding a 'fully-featured' text box from scratch is not fun! 


Next I need to fix lots of bugs for the things I have recently added, then soon I will make a start on the high level faction AI (empire building stuff) for computer opponents as they dont currently do anything.

Saturday 24 March 2012

Projectile Weapons

New battle video and some screenshots!


This video shows some of the new projectile based weapons including flak cannons which can damage multiple targets in a short radius. Unlike beam weapons, projectile weapons are not guaranteed to hit the target if they are moving too fast or erratic.



Shield Restore Modules

The green beams seen in the video and screenshots are shield assist modules that restore shield hitpoints for a friendly target, still need to think of names for these. There will also be similar modules that repair the hull for a friendly target.

Monday 12 March 2012

Recent Updates #1

Some of the things I have been working on the past few weeks.

Capital Ships and Turret Graphics

Below is an image of the first capital sized ship that I have finished. The two smaller ships that can also be seen are a Frigate and Cruiser. Ship types that will be capital sized will include Carriers, Battleships, Colonisers and Dreadnaughts.

The plan is for each faction to have at least 6-8 different capital sized ship hulls when the game is finished, there will be a lot of smaller sized ships as they take a lot less GPU texture memory.

I have also redesigned the turret graphics which you can see in the screenshot as I thought the old ones looked rather boring when zoomed in close. Most ships will only be able to fit weapon modules of a certain size (small, medium or large)


System View Interface

This is the interface for the system level which displays planets and stargates in the star system. The coloured icons at the center of a planet show which faction has a colony there. When you hover the mouse over a planet it will display a summary of ships there including the total asteroid resources. Ships warping to planets and stargates will be visible on the map here as well.


Galaxy View Interface

Below is a work in progress for the galaxy level interface. The "pie chart" icons show the percentage of planets in the system each faction controls. Each system will display a red glow if a battle is taking place there involving the players colonies or ships.

The reason why the faction controlled territory isnt clustered together as you would expect is because the screenshot was taken in a quick test galaxy where planets were assigned to random factions.


Turret Lights

Made some further changes to ship faction identifying lights so that they get larger and more visible the more zoomed out you are. This makes it easier to see whats going on during massive battles.


In my next blog post I should have a new video showing off some new projectile and area of effect type weapons as well as some support modules that I'm currently working on.

Friday 17 February 2012

Testing Performance of Battles

The past week I've mainly been working on the parallel (multi-core) code ensuring its all stable, tracking down any race conditions and seeing how it all performs with lots of battles going on.

Below is some screenshots for the stress test I did to help me decide what to set the maximum number of ships per game to.

The galaxy I generated had 100 star systems, 200 planets and at each planet there is a 36 vs 36 ship battle taking place at exactly the same time. So in total there are 14,400 ships being simulated in full detail. The chances of there being so many battles taking place at once in a typical game will be very small. The much larger "total objects" stat in the screenshots includes asteroids, wreckage as well as the ships.

My development computer has:
AMD Phenom X4 9950 (4 cores)
Nvidia Geforce GTX 260
2GB Ram

Overall I'm fairly pleased with the performance so far as I havnt yet profiled or optimised most of the code. However the galaxy view in the second screenshot still needs work as the stars in the background are not rendered very efficiently.

Screenshots at various stages of the test as more ships get destroyed...