Menu

Developer Primer

Daniel Vale

This primer is for developers who would like to join the Stars! Nova project. It should contain all the essential information you need to join the Stars! Nova team and start fixing bugs or adding features to Stars! Nova. There is also a list of useful [Developer Tools] that is worth checking out.

Relationship with Stars!

First thing first: Stars! Nova is a project to make a clone of Stars! In order to assist in developing Stars! Nova you will need to know Stars! This is our functional baseline: we want Stars! Nova to have all the features & capabilities of Stars! Current players of Stars! should be able to enjoy Stars! Nova (when finished) and have essentially the same experience. We may include additional features in Stars! Nova, but that is not our primary purpose.

You can get a free playable demo of Stars! from: http://starsautohost.org/kn2050.htm You can also download the full game from the same site but you will need to buy a CD key for it.

You can get a CD key by sending a PM to Ron on the Home World Forum (under the principles of abandon ware): http://starsautohost.org/sahforum/

Getting the Latest Release

Once you know something of Stars! the next step is to get the Stars! Nova baseline installed and compiling on your system. Click on the main download from the Stars! Nova source forge page and follow the instructions in the [Getting Started] to run it.

Compiling the Latest Release

Fire up Visual Studio (or the free VS Express ) and try compiling it.

Getting the Latest Source

Once you are able to compile the latest release version of stars-nova, you will want to update to the latest version of the code. We use subversion on sourceforge as our version control system. I recommend using TortiseSVN as your subversion client, to perform updates and commits. (We don’t use file locking.)

To get the latest source code:
* Run the TotiseSVN installer.
* Create a directory called stars-nova to download the source code into. (Anywhere on your system will do.)
* Open the stars-nova directory and right click inside it to bring up the context menu. You will now have an option 'SVN Checkout'. Left click on 'SVN Checkout'.
* In the dialog box that appears enter the url https://svn.code.sf.net/p/stars-nova/svn/trunk (you can leave off 'trunk' if you want the branches as well). You will not need a user name and password to get the code (only to commit changes).
* Wait for the code (and all the graphics) to download.

Once downloaded you can open the solution in visual studio and compile the latest Stars! Nova source code. Next you will need to learn about the Nova architecture...

Nova Architecture

Nova is a turn based strategy game built on a client/server architecture using a variety of files for communications. The two primary projects in stars-nova are the Nova GUI (player client) and Nova Console (server application). The Nova GUI is used to ‘play a turn’ – more properly to read intel and generate orders. The Nova console is used to do Turn Generation – read orders, process a year/turn of game play and then generate intel. There are a number of supporting projects in stars-nova. The Nova Launcher is the splash screen and the main way for a player to start a game of Nova. Normally a game is started from the Nova Launcher by pressing the New Game button which launches the New Game application. When creating a new game, you may want to create a new race. This will launch the Race Designer application. Once you save your new game the Nova Console is launched. Double clicking on a race will launch the Nova GUI. Submitting a turn will close the Nova GUI (intention is to hide/minimise it until the year has been processed or the console is closed). There is a Nova AI stub that can also submit turns for races (linking it properly to the console is a TODO item). A game ends when the victory conditions determined at game creation are met. A game can be closed down and restarted at any latter time. There is a Component Editor which is used as a dev/modder tool to define all the ship components and hulls used in the game. There are a number of projects for supporting libraries. Nova Common holds an enormous amount of data structures and static objects to support processing on both the client and server. The control library contains custom GUI controls. ServerState and ClientState contain the aggregate singleton data objects for server and client side processing. There are also two unit testing libraries which I won’t pretend to know anything about!

Recently the multiple projects that comprise Stars! Nova have been combined into a single executable under the Nova project. There are still tell tails of the old structure in the way the program launches new instances of itself.

Passwords

Another piece of essential information: All the race passwords are set to 'g'. (You can't have a non-password protected race in Nova.)

Joining the Stars! Nova Team

To join the Stars! Nova development team and be able to make direct commits you will need to:
* Join the Home World Forum here. This is the comunity hub for Stars! and we use it for discussing Stars! Nova development too.
* Introduce yourself in the forum here
* Set the bugs and feature requests trackers to "monitor".
* Send an email to Daniel so that I can contact you directly by email. '''Make sure that if you are using a sourceforge email account, you change your "mail alias behavior" to "accept all mail" so that I can reply.'''
* If you are developing on windows, download and install StyleCop.
* Pick a small task (bug or feature request) to do as evidence that you can program, and submit it by email. Your work sample should be 5 to 50 lines of code, preferably in a single code file. Your email should state what new feature or bug fix your changes achieve. Your work should compile with no warnings and behave as indicated in your email.
* You will then be granted developer access to Subversion. Look at the guidelines on the [[Subversion]] page for how to commit your changes. It will be up to you to commit the work sample you provided for developer access.
* Remind one of the admins to give you wiki editing rights.
* Remind one of the admins to give you Stars! Nova developer status on Home World Forum so you can post in our developers forum.
* Post a Contributor Copyright Assignment Statement here so we can include your work in Stars! Nova.
* Familiarize yourself with the Stars! Nova project by reading as much of this wiki as possible and having a good look at the code.

'''Ask for Help if you have any problems along the way!'''


Related

Wiki: Developer Documentation
Wiki: Developer Tools
Wiki: Getting Started
Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.