Monday, July 09, 2007

I haven't posted for a while, but the work has continued. Much of the interface is now done.



You can upgrade your base, design and build your ship, attack other bases, watch attacks that you have made and attacks made on you, view your progress graphically, there is a built in email system, and I'm just finishing the clan system right now. I kept on trying to think of, "What is the meta-game? How do you win?" I also wanted to have some kind of clan system, something that would encourage people to communicate and work together. Not as huge groups, but somewhere in the 10-50 person range. So I came up with the idea of having the clans build a final project that marks the end of the game.

This object is the fabled "StarDrive" that will allow you clan to travel faster than light and leave for the stars. It will be a massive engineering undertaking that will require a huge number of resources and several weeks of time. But as each round comes to a close, the clan that finishes it's StarDrive first will have it's StarDrive be the symbol that represents that round of play. Clans will be able to use the same tools that I use to build ships and base components to make their StarDrive look like anything they want (no offensive symbols will be allowed, of course), so it will be the ultimate expression of your clan. Travelling with it will be your clan's fleet of ships to further let each member have their ship remembered as part of the clan.

I think it will be a great way to end each round. And even those that finish their StarDrive past a certain point will be part of the record.

Thursday, January 18, 2007

I added the drones and three of the five drone commands that they can do: Launching, Landing, attacking. I wanted to get the drones to really feel like a swarm of ships, so I had to do a fair amount of iteration to get their flight to feel right, but I'm pretty happy with them now. Although they act like individual ships in some ways, the entire wing also has some properties that it maintains. So things like the shields and weapon they they do are based on the entire wing, this makes things less random so some stange set of cricumstances won't make a wing must less powerful then other times. I still need to ba ble to make the wings block (which means that they can hold a ship in place and do decreased damage to it) and defend (which means that the drones block a portion of the damage on a target. But to add these features I'm starting to need an opponent. So I'm starting to write the satellite and bunker AI right now.

Another major change I've made is to shift away from doing the database queries in SQL. I really liked doing it that way, but unfortunately a number of people at work have that port blocked and I don't want prevent people from playing. One of my goals is to make this a good game for someone to jump onto and play for 15 minutes during lunch because I think this lunch MMO is an empty space that SDO can fill. So I've converted all of my queries to perl scripts. This also give a little added security, because I can now turn of allowing the sql engine to respond to the outside world and I can protect some hacker from altering the database because no perl script contains a command that could alter the database via malicious input. The down side is that this route is slower, but in an interesting and hopefully fixable way. It appears the their is a fairly large fixed cost for making a web based query (~3 seconds on average), but the amount of data has very little impact. So one thing I need to do is roll up a number of my queries into one query that generates a large amount fo data. Even now, startup is only abot 45 seconds, but I should be able to easily get that down to 10 seconds.

So for now the primary thing I'm working on is getting the satellite and bunker ai up so that I can finish the last two drone commands (block and defend). Once those are done I'm going to have to make the incursion interface, which allows you to see previous battles through a VCR like control.

Wednesday, December 06, 2006

Finished the nanite-programs (spells). Wow that took a long time! A crunch at work and the holidays really dragged that task down. Also, I needed to do a fair amount of systems work to get the nanite effect system up and running that I didn't account for. But it's done now, so that's good.

In hind-sight, it was probably a bad idea to spend so much time focused on the nano-programs. When you work as little on a game as I do, it's important to keep jumping around the code so that you never forget how any of it works. When I finished the nanite programs and started working on the drones I needed to do a little refresher just to build a new entity again.

Two nights ago I started on the drones. I've gotten them to launch out of the ship and I designed the system for how they will fly. They are a little different from just a set of ships because they are in some ways one object and in other ways N seperate objects. So I decided to create a drone wing entity that controls the drones and make each of the drones their own seperate object. Hopefully the drone stuff won't take more then a week or two to finish.

Next up is to shift the few remaining sql queries to html queries to perl scripts. This should allow the game to run even when there is a serious fire wall on the machine. Also it will decrease the amount of data that needs to go to the clients.

I also was able to get an c# activeX control up and running on a web page. So I'll need to convert the game to come in two flavors (and active x control and a normal application). That way people should be able to run it straight from a web page.

Wednesday, October 04, 2006

Here's several screenshots of some of the systems I've talked about:

The first shows a nanite sigil being created. It's a procedural system that takes a graph and breaks it into a set of points which it then "explodes" into.



The second image shows a nanite "thorn" that I have created that is attacking a satellite. You might also notice that the thorn is firing a weapon at the satellite. You can tell how well the thorn hit the satellite by where the beam goes: In this image you can see that it stop at the satellite's shields. That means that the weapon was "deflected" so only does a fraction of it's normal damage. When a weapon is fired at a target it can either "hit" (normal damage), be "deflected" (5% damage) or "pierce" (200% damage).



The third shows off the procedural explosions that I've implemented. The code break the graph into a set of small lines and applies a slightly random outward acceleration to them.



All of the procedural effects are nice because they greatly reduce the amount of time it is taking me to make art assets. Instead of needing to animate an explosion I can just let the procedural systems do it for me.

Monday, September 18, 2006

About half of the nanite work is now done. I've built all of the sigils (these are the symbols that apear over your target when you are using a nanite pod), wrote the code to have the nanite pod follow a none straight trajectory, and made the sigil forming code. I've also built the system to specify the effects of each of the nanite programs, but still need to implement them. That should only take a few more days, and then it's on to the drones. The drones are the last piece of core code taht I need to write, so we're getting really close! As I play the game more, I realize that I'll need to introduce some kind of LOD to the effects. The lightning-like beam weapons can really slow down the game when you're looking at a lot of them. I'll put in some screen shots of the explosions (which I promised to do last time) and the nanite sigil effects in the next post.

Monday, August 28, 2006

Big stretch between posts! I took vacation and had crunch on the game I work on for my real job, so I had to put less time then normal into star drive. But I have still managed to get a fair amount done over the past several weeks. The combat system is done. Damage is done to objects the correct and I have a really nice explosion system that blows up objects once their shields go down to 0. So you can go around and blow stuff up now! Now I'm in the process of making the nanite sigils and writing the code that draws the sigil effect. Hopefully that will only take a few more days. After that, I'll need to do the drones. And finally the base ai, which luckily won't be too hard for this type of game.

Friday, June 30, 2006

I've gotten a lot of work done in this past month. Also, I've been keeping better track of what I've done and what left using an excel sheet. One of the big things I did was make a major improvement to the attachment system so that it uses C#'s reflection system to save, load, edit and display the variables for the different attachments. So it become very easy to add new variables as needed, this has made it really easy for me to make the attachment commands more expressive.

I also added several new beam efects including a lightning-like and a particle effect.

Also added the ability to fill in polygons in the graph editor.

Added a way to spearch the launch of missiles and to launch more then one at a time. This was used to build the flack cannon.

Added a random turn-rate and random turn offset attach command so that when we emitter a bunch of missiles thatey can be rotating randomly.

This was a big one: I added a way to test fire all the weapons in the editor which has sped up the process of making weapons about a hundred times (I used to have to add the weapon to the ship, run the combat, fire the weapon and take a look at it). Now I can fire the weapon frame by frame in the editor and adjust the results as I'm watching it.

I've also started the process of moving the remaining direct SQL queries into PERL pages on the serve that respond to a post message. Doing the direct SQL queries didn't work when you had certain firewalls, now assuming your firewallallows you to open a web page, you can play the game.

I found some good sample code of building an activeX component that loads onto a web page. This is key for moving my app to a web page application. Since the executtable is only a few hundred k it should be pretty fast to load. I need more info about security to make sure I'm not doing anything that will cause the browser to fail. I'll keep the application option as well for people who don't like to run off the web page, or who have firefox.

I'm also just about done with all of the weapon and missile effects. Probably another 2-3 days and the weapons will be all done.

After that I'm going to finish the direct SQL to Post conversion.

Here's the total list of remaining task as of today. I've scheduled them out time-wise and I have about 100 hours of work left:

Add missiles, beams to weapons
Figure out when exactly to apply damage
Make things explode
Connect thrust to engines
Add flash effect
Add a way to pause and quit combat
Add a second account
Test incursion
Replay attack
Finish arc movement
Move sub-entities to one flat list with a parent transform reference
Move all queries to http/perl
Make app work as an active x control on a web page
Make attack query happen on server (so we don't need to download the whole database)
Cache graph ship data (some kind of temp)
Get the game news up and running
Implent the "Sigil" drawing effect for nanites
Build the 16 nanite sigil shapes
Implement the 16 nanite sigil effects
Thick line draw of a polygon
Satellite weapon ai - who to fire at
Satellite nanite ai - who to effect (heal, summon, buff)
Drone ai - who to attack
Drone ai - who to block
Drone ai - who to defend
Drone ai - approach angle
Ship ai - Who to attack
Ship ai - Approach angle