It's been awhile since my last update, but don't worry, I've been making crazy good progress on A2X, and hopefully we'll have a demo of some sort for you guys to try out soon.
Data Driven Stuff
One of the most important lessons I took out of the whole Angels 22 experience was the importance of data driven programming. There was so much stuff in the A22 Engine that was hard coded, and therefore a bitch to modify late in the development cycle. Since I got to start off new for Angels 2X, I made it a point to not make anything hard coded, and to have almost every little bit of data accessible from outside the program. So far it's been working out pretty well, and I'm sure I'll be happy I did it once we start coming up with cool ideas months from now.
This was one of my first priorities for the new A2X engine, as the particle system in Angels 22 wasn't very good, and you can do lots of neat stuff with really simple particles. Anyways, I learned from my A22 experience, and I knew exactly what I wanted in the particle system, which was a lot of variables to screw with, but making it easy to use in game.
The problem with Angels 22 particles was that they were all generated on the fly, so in order to make a new particle emitter, you needed to call this incredibly complex function with around 10 parameters for stuff like "particle sprite" and "gravity value". Well in the new engine, you create particle emitter types once, and then you can just create new instances of the same type. For example, once you come up with a combination of values that makes the particle effect you want, you just save the emitter, name it, and voila, what was a complex function call becomes a simple:
new ParticleEmitter(xpos, ypos, "EMITTERNAME");
Fitting in with the new data driven approach for the engine, all the definitions for the emitters is defined in an external definition file, so no more endless recompiles for me!
In Angels 22, explosions were just an 8 frame animation that Mark drew up, which meant that all the explosions looked the exact same. Well, this time we wanted to make a more robust and realistic system that would at least have a somewhat random appearance. After studying how some of our favorite games did explosions, we decided that the best way to make a good looking explosion was with rapidly expanding (and short lived) fireball sprites with overlaying smoke that lingered and drifted after the fireball disappeared. Luckily, thanks to the thought I put into designing the particle system, we were able to easily utilize the particle emitters to get the effect we wanted. A series of slightly offset particle emitters and some good artist-ing from Mark resulted in a pretty good little system that met all our initial goals. A nice by product of not using premade sprites is that by simple increasing the potential offset and number of particle emitters in an explosion, we can effectively scale the system up to whatever size explosion we need.
In the process of our research, we also realized that one of the coolest parts of any explosion is the visible shockwave you can see when the explosion takes place in humid areas. We decided that we needed to somehow simulate these shockwaves. Luckily, it wasn't that hard, a simple circle texture that quickly expands and fades out around the explosion gave the effect we wanted.
Unfortunately, not much of the explosion stuff looks that good in screenshot form, so you guys'll have to wait a while to see it in action. Until then, here's a good screeny of an explosion and the shockwave around it....
One of my favorite features of Angels 22 was the in-game level editor that allowed you to screw with stuff in real time while you played the game. That's a feature I wanted to carry over into A2X, but I decided the GUI system needed an overhaul, as the A22 system was kinda clunky. So what better thing to base a new UI off of than the system you're using the make the game itself? I decided to go with a Windows style "window" system that uses a series of collapsable menus to manipulate the level. The new system was kind of a bitch to get working, but it's really working out, as it is really easy to add new buttons and features to the system itself, in addition to the level. Anyways, here's a screenshot of the menus in their expanded and collapsed form.
Alright, it's hella later here, and I've got an early start tomorrow. I've got quite a few more topics to talk about, so I'm sure I'll be posting sometime in the near future with some more good screenshots. Peace Out!