Arguably the most important element in any Angels __ game is the badass jet you get to fly. I put off implementing the airplane in A2X because I wanted to focus on the background stuff for awhile rather than making the game fun to play. Well, I finally ran out of stuff I could realistically do without a player object, so I bit the bullet and made the Airplane object.
I had this hardcore advanced flight model thing planned out, I'm talking angle of attack, instantaneous pitch rate, post-stall maneuvering, stuff like that. Well, I haven't implemented that stuff yet, because it's going to take some hardcore testing to get right, and I dont want to deal with that right now, so the airplane just runs on the A22 style flight model (ie. flys the direction it points). This is good because it lets us play the game without having to debug the flight model as we go along, and it'll make a good "Novice Mode" for people who have trouble with the advanced model.
Replays
This was a feature I wanted to implement in Angels 22, but by the time I got around to doing it I had coded myself into a corner, and it wasn't going to work. Well, following the current trend of "getting it right this time", I implemented this early, and it's pretty cool. At the beginning of a level, you can opt to record the session for later review.
The way it works is that when you start recording, the game keeps track of the buttons you pressed every frame, and the time step that was used to update all the actors that frame. Also, a couple times a second, the players' position and velocity is saved, which sets the replay to where it's supposed to be, just in case it starts to diverge after awhile. I haven't tested it with a whole level yet, because we currently lack all the stuff that's going to be in a whole level, but it seems to be working just fine.
Level Structure
I went a different direction in the level structure for A2X than I did with A22. The Angels 22 system was pretty shoddy, with all the level and object information packed into one complicated text file that became more and more unmanageable as we added features. In A2X, I split up all the aspects of the level into 4 sections, each of them saved in their own file, then spliced together when loading a level:
Terrain
This is pretty self explanatory, its just the heightmap, bodies of water, weather effects, etc, that make up the landscape the level takes place on.
Actors
This is the information for all the objects that exist in the level, such as Trees, Flak Units, Airplanes, etc. This is also where current game data is saved for features such as checkpoints and whatnot.
Scripts
This is where all the scripting for the level is saved, stuff like spawning special enemies and determining win conditions. Stuff like that.
Level Data
This is where the 3 other elements are all put together. Essentially it's how the game knows what files are used for the level.
Scripting
Using Angels 22 as a model, I implemented simple scripting in A2X in about a days time. It still uses the Trigger-Action setup that A22 used, but with a few small tweaks to make it easier to use for the non-programmer level designer(Mark).
I wrote a pretty good overview of the A22 scripting system in an older post in my journal, so you guys can check that out if you'd like, the A2X system is mainly different internally.
Pretty much, every script element was hardcoded into Angels 22, including what variables existed for each trigger/action, which caused many a crash. The A2X system has a library of all the action and trigger commands, with a list of what variables to look for, which makes for a much easier to maintain system.
Movie
Mark and I are putting together a little movie to showcase how awesome A2X will be. Mark is in charge of editing and narration, so it should be pretty good.
Alright, thats all for now, it's time for some Halo 3, Peace Out!