?>
|
Google Ads |
|
|
There isn't content right now for this block.
|
|
|
|
| |
Stellar Lanes A Legacy Realm Prequel
What is Stellar Lanes:
At its roots, Stellar Lanes is a glorified 2D game of asteroids. You control a ship which you pilot top down in a first person twitch type
game. The world is persistent with a server/client game architecture. The game has an item collection system, so as you loot opponents you are
able to upgrade your ship and weaponry. More than anything else, Stellar Lanes is based upon the old Star Control series. The default ship
graphic is actually shamelessly stolen from the Ur-quan Dreadnaught of that game.
Why remake a classic?
Well my plan was not actually to remake it. Let me take you back to an older time, a more naive time. I envisioned a vast galaxy, where events
moved of their own accord reacting to the players action. Each player controlled fleet of ships which they could configure to auto-trade
between various routes. Players could control individual ships, which they would build by ‘gluing’ together dozens of hull pieces to make
massive dreadnaughts. This grand game would be called “Legacy Realm”.
Then came the morning… black Monday. I woke up and realized that I could never build such a system. Shoot, no one could. After my mental
recovery, when I was able to eat solid food again, I started scaling back my projects. And I mean MASSIVLY scaling back. I decided to
implement just the combat system for “Legacy Realm”, figuring that if I maintained my interested I could go on to add more to it. So I designed
“Stellar Lanes”, the combat engine for my dream of “Legacy Real”. So why remake a classic? It wasn’t my original plan, my original plan (like
all solo developers) was to exceed the original. Now I’m just doing what I can and enjoying the journey, not the destination.
|
|
|
Modularity:
The basis of Stellar Lanes is the modular design of the ships. All ship modules and all ship chassis are at their roots items
(programmatically the Chassis class and Module class derive from the Item class). If your Chassis is very straight forward then all you have to
do is override one or two simple methods and your all set, same with Modules. I hope to soon pull these very simple pieces from the Stellar
Lanes DB instead of requiring them to be a class at all. The purpose of all of this is of course the non-simple pieces. You can create a
Chassis that does almost anything, and likewise a Module that does just about anything. There are of course limitations. The piece system
(modules and chassis) is at its heard grid based, each piece specifying which grid squares its using (though that is an override able method so
you could create pieces that change shape or had no shape at all). There is also a shield, skins, energy and damage system that is shared
between all pieces. So for example introducing a new form of energy, while doable for your specific piece, would not be usable by other pieces
unless it fit into the standard energy framework.
|
Ok so blah blah blah, if you’re a non-programmer your probably ready to shoot me, if your still reading. What it means is that anyone
could come along and add new items into the game at any time, without my permission or cooperation. Of course they would have to be added at
the server level so there are no security concerns. But I hope you can begin to see the flexibility this adds for later development, which as I
said above was the whole point of Stellar Lanes… a combat system for later use in another project.
One interesting challenge from this modular design was the special item feature. Every Module or Chassis can have special abilities.
But how can an engine module that someone else wrote possibly take advantage of a special engine afterburner special ability? The answer is a
bit cheesy, basically there is a pre-defined list of abilities that all modules should implement. This of course means that if special
abilities are added later then all existing modules won’t respect them. In the future I hope to add a version to the special features so that
modules that are to old won’t show up as having a special feature that they don’t implement.
Technology:
The entire game is written in C#, DirectX 9C April 2007 edition. The back end is the Darkstride Game Engine, though really “Game
Engine” is the wrong term, it’s more of a DirectX wrapper. Stellar Lanes also makes heavy use of the Darkstride Gob file system to store and
load its relevant graphics and data. An old form of UDP DirectPlay is used for the network layer.
So what can I do now? None of this “some day” junk.
Well, you can run around the map, which is basically a planet and some asteroids, and kill things. Other players, asteroids, even some
small A.I. controlled fighters. As you kill things you will often see loot pop into space and start drifting around. If you pick this loot up
you will acquire one of three things, a Chassis, a Module or a Skin. The Chassis are the hull pieces. In the editor (‘E’ key) you can drag
and drop the Chassis together, think of it like spot-welding yourself a car with no internal parts. The Chassis have connecters however, so not
all Chassis can be connected the way you may like. Once you have the car it’s time to attach Modules. Again dragging and dropping, put your
Modules (things like weapons, power generation, engines) onto the Chassis frame you’ve created. You’ll want to make sure to have some
essentials, such as…
- Weapons
- Main Engines
- Turning Engines
- Power generators
- Power Storage
Without those basis you won’t be able to fly around. Of course you may have a Module that does all of that for you. For example
someone could create an engine that has its own power generation system and storage. The sky is the limit and it depends on what you find.
When you first go into the game you will be given a ship that has all the basics and some perks. You may notice that some Chassis or Modules
may have special abilities, things like generating a trickle of free power, or self-repairing. Also you’ll notice that as you kill things
you’ll gain experience (a small “+10 EXP” will roll off of your kill). The experience will accumulate on your character but currently has no
effect. The ‘I’ key will bring up your character sheet.
Controls & how to play:
Once again our modularity comes back to bite us… the controls are for the moment implemented by each module. I would like to create a
standardized DirectInput system, but haven’t gotten around to it yet. For current modules I have tried to stick to the following standards.
Key | Action |
Space | Fire primary |
M | Fire secondary (Missiles) |
Forward | Thrust |
Backward | Break |
Left | Rotate Left |
Right | Rotate Right |
E | Open Ship Editor |
I | Open Character Sheet |
Esc | In Game Menu |
The Problem:
Tim Znamenacek, a Microsoft product manager has been
quoted as saying "“In every project, there is one stubborn bug that goes all the way to the wire". In Stellar Lanes that problem has been
network syncronization. Three weeks into development I had Stellar Lanes up and running in a network environment. You could fly around
shooting each other and asteroids, a phenominal milestone for so little development time. During my very first real world test the game was
crippled by network syncronization problems. Player A was here when he fired, but in Player B's world he was over there, so the worlds desynced
almost imediantly. So I began to research this minor network syncing problem I was having... only to discover there is nothing simple about
network syncing at all. I won't go into the next three weeks of works, lets just say they were painful mixed with a dash of agony. I guarentee
my next project will not have anything to do with twitch gaming and the network syncronization problems it causes. Is causing. The primary
reason I am wrapping up the Stellar Lanes project is because I cannot come up with a satisfactory solution to the network sync problem. It runs
fairly well now, thanks to endless hours of tweaking. But each and every change to the game requires careful consideration. A vast change from
Metal Marines where the game was the main focus, the network was secondary.
Features:
- Fully functional network capability
- No practical limits to the number of players that can join a game
- Persistant server based world
- Auto-patching of clients from server
- Upgradable chassis
- Varying loot from kills based on monster settings
- New snazzy borders and backgrounds
- Chassis Skins
- Multiple types of motions (including reactionless)
- An enhanced the menu system
- A.I. Opposition
- Planets and asteroids as navigation risks
- Ability to host your own server
- Auto-patching of clients from server
- Upgradable chassis
- Varying loot from kills based on monster types
- Multiple types of motions (including reactionless, or realistic)
- A.I. Opposition
- Planets and asteroids as navigation risks
Reported Bugs:
Problem: |
Problem description here |
Notes: |
Notes here |
Status: |
Status here |
Warstrider (04/01/2008) Copyright © by DarkStride All Right Reserved. Published on: 2005-12-02 (5717 reads) [ Go Back ] |
|
|