Roy Triesscheijn’s Weblog

My programming world

SpaceAce progress report

Posted by Roy Triesscheijn on 26th February 2010

It’s been a while since I’ve blogged about the space rts game (working title SpaceAce) I’m making for Windows/XBLIG. People who follow me on twitter might have seen that I worked on a model for a space frigate. Although it’s more of a placeholder than anything fancy I find it much easier to see what I’m doing when it’s a space frigate flying, and not a silly sphere or cube.

Here’s my (shortened) done/todolist.

Done
-Scene Manager
-Sophisticated input manager with keymapping functionality
-Planets moving realistically (even eccentricity and inclination)
-Demo’d a gui (I’ve tried to make an immediate gui in XNA, and I really liked it, to bad my art skills suck so hard, else I would show it off, might make it into a tutorial someday).
-Ship following mouse, evading obstacles. (Still needs more testing).
-Random galaxy generation.

Todo
-Selecting objects
-Waypoints for ships (you wouldn’t want them to just follow the mouse, would you ;-) ).
-Building structures inside the planet space
-Some research tree
-Some way to build objects
-Objects belonging to ai or other players

Those are the items with high priority, that need implementation first. Of course the actual todo list is much longer (and only inside my head). I hope I will have some time to implement all this stuff, but from what I’ve heard this semester is very demanding.

See you later alligator!

Tags: , , , ,
Posted in Blog, General Gamedesign, XNA | No Comments »

SpaceAce: planetary gravity and solar system simmulation

Posted by Roy Triesscheijn on 6th December 2009

Well, this is the first time I’ll be showing off some things of SpaceAce.

The first video shows my simulation of our solar system, each of the eight planets is recreated accurately by putting all the data from wikipedia about these planets in the constructors and working from there. The relative sizes, speeds and rotations, inclinations and ellipsiness of the orbits around the sun are all accurate. The simulation shows 1day as 1 minute (that’s why the earth rotates so hard, it has to rotate 365 times a minute, and in one minute orbit the sun). About that sun, I don’t have it visible yet :) .

Oh the position between the planets is relatively correct, but it uses a different metric than planet size, else it would be almost impossible to be able to show more planet than one. (Those other planets are really far far away).

When I zoom out, and planets become smaller than their assigned icon, the planets stop being drawn and an icon appears in their place.

I’d really like to show the constructor of my planet class with you to show the complexity:

public Planet(GraphicsDevice device, SpriteBatch spriteBatch, ICamera camera, Effect effect, string technique, Texture2D texture, Model model,
            float equatorialDiamater, float orbitalRadius, float eccentricity, Vector3 focalPoint, float inclination, float rotationsPerMinute, float orbitsPerMinute, string name, Texture2D icon)
            : base(device, camera, effect, technique, icon)

And the video (sorry about the silly textures, their for debugging, btw best to watch it fullscreen in hq because youtube really made it hard to see).

An other video I created is to show off planetary gravity, (not implemented in the first video). It’s kinda fake, but this will allow the player to construct space stations and satellites that realistically orbit the planet. Satellites keep facing the planet as they orbit it. And the further away, the slower the orbit around the planet.

Oh well I think this video speaks for its self:

If anyone is interested I will make an article to show how I’ve done it. However the basics are storing a relative position (vector3) and updating the rotation from 0,0,0. Then setting the actual position to planet.position + relative.position :) .

Edit: after watching the videos on youtube I see there is another old game called SpaceAce, although SpaceAce for me is a working title I just wanted to tell you and make sure that my game has nothing to do with that old Atari game :) .

Tags: , , , ,
Posted in Blog, General Gamedesign, XNA | No Comments »

Project Specs OOAD/iterative development style

Posted by Roy Triesscheijn on 2nd December 2009

I’ve said before that I’m working on a game for some time now. Actually me and a friend of mine came up with this togheter, and now for a month or two I’ve been testing and laying foundations for this game. However I came a bit stuck as to “what to do now” LostC1tY @ #xna (effnet server) asked me why I didn’t make some kind of feature list and then try to work my way trough there. This reminded me of practices in the book Object-Oriented Analysis and Design and Iterative Development by Craig Larman (what a long name for a book :D ). In which he describes how to do iterative development.

One of the first few artifacts in iterative development are a small story “Vision” some uses cases and some features that are essential. Then you work your way down from there and keep refining the requirements while at the same time implementing them step by step.  I can really recommend this book!

Anyway, I’ve made a bit of a beginning  that I wanted to share, now you know what I’ve been working on. (Oh the working title is “SpaceAce” and I will post further related blog items under that tag, but the game will definitely not be called like that in the end, I’m just not good in thinking up names :) .

Design Document:

“Space Ace”

Vision:

My vision is to create a back-to-basics strategy game in space.  The setting is a small solar system with moving planets. The player starts on one planet and their opposition on another planet. Both players don’t know where the other player is located. Players start building ships and space stations. As long as these objects stay within the gravity well of the planet they will ‘follow’ the planet.  Planets got multiple ‘gravity well rings’. Depending on the planet there will be 2 to 6 rings. The inner most ring is the smallest and is very close to the planet. Objects in the innermost ring swiftly rotate around the planet this might be used tactically (say a space station with guns that can cover all approaches to the planet).  The inner most ring is only suitable for small objects (research stations, sentries, satellites etc…).  More outer rings cover a larger area and objects in that area orbit less swiftly. The most outer ring is very large; objects in this ring don’t orbit around the planet.  The outer rings are more suitable for factories and other large structures “that can’t handle the stress of rotating so fast.”

Once a player has a bit of an army they might decide to explorer. They can select a couple of units to form a fleet. Once they’ve cleared the gravity well of their home planet they can try to stay ahead of their planet (the slowest normal ships must be faster than the fastest planet, however comets and the like might be faster) or decide to go the other way in which case it’s much faster to find other planets.  It might be wise to have some ships in the gravity wells of planets that orbit the sun at different velocities as to always have a presence in different parts of the solar system.

The planets must move as fast around the sun as to not make this game boring but as slow such that the tactics of planets movement and gravity wells is still intact.

In the end players encounter other players. Fighting is pretty regular, different types of weapons do different types of damage (Kinetic, EM, Heat, and Electric). Each ship’s armor and shield are affected differently by these types of damage.  Players select their ships and then select enemy ships to attack these ships. Ships might also auto attack enemy ships when they are within the same gravity well.

Planets can be captured by sending troop ships, filled with troopers. Each planet has a “ground defense force” when you send sufficient amounts of troopers down to the planet the planet should be yours.

Economy is based on the number of captured planets, each planet has a different ‘economics’ and ‘resources’ value, per tick is calculated how much money and resources are gained. There is an ‘organization tax’ which slightly increases with each captured planet, to keep the game balanced when one player quickly acquires a few planets while others haven’t. Some special units might require rare materials; these can only be acquired by capturing special comets.

Preliminary feature list
As in proper iterative development this is not a complete feature list, but this will be grained out and refined during development.

(Starting with the most critical/difficult to implement features, which will be developed/tested first).

-Moving planets (complete)
-Gravity rings
-Build-able objects
-Ships
-Path finding
-Fighting
-AI
-Resources
-LAN
-Player control
-Menus
-Different difficulties
-Advanced editor
-Missions/storyline.

Tags: , , , , , ,
Posted in General Gamedesign, XNA | No Comments »