The DevLog is a place to see what I'm currently working on. Occasionally I'll post links to demos of things I'm working on. Check back here often. For more information about a particular project, visit the Projects page.
DevLog
2008-03-23 Tech Demos
Here are two tech demos for some new features I've been working on for Bowmaster 2. The first is circle vs line segment collision detections. I know I talk a lot about
collision detection but it's not a simple topic. In this example I show how a line segment can intersect with a circle. Just drag the red and green dots around to see where the intersections occur. The code for this demo is useful for determining fast moving projectile collisions against circular objects.
This next demo demonstrates a constant (stackable) "aura" effect.
Imagine a defensive boost aura similar to something found
in World of Warcraft. All the party members within a certain proximity of the aura provider are given a bonus. In BM2 you might see "commander" or "elite" type units that give off auras that boost stats of allied units. You'll likely want to take down these units first to make weaken the overall strength of the enemy army.
I've been working on some new unit animations for Bowmaster 2. I created animations for a catapult (different than the trebuchet -- it will be similar but I plan on having different ammo options for it) and a ballista weapon which will shoot heavy spear-like ballista bolts that do massive pierce damage. I also created a new unit animation for the Lycan unit. Check it out below.
I just posted the game to it's official location. I'll post an official link on the main page in the near future. Let me know if you find any bugs and I'll do my best to fix them. Enjoy :)
I'm almost done with the final boss level. It's coming along nicely and it's a lot more elaborate than the other boss battles. I don't want to spoil so I won't show you any pictures. After I finish the boss which should occur sometime this week, I'll do the very final balancing and finishing touches and then I'll officially release it. After this project is complete I'll be back to focusing more on BM2 and you'll see more devlogs with BM2 updates. Stay tuned!
I've released a near complete version of Moon Master RahKon.
Click here to play. This version includes high locally stored high scores (for each difficulty level). It also fixes some bugs: invisible lasers, your ball keeps moving if you click off screen somewhere.
Right now this high scores are saved, but the scoring may change in the final release and the high scores will be reset. Also, I plan on having a final level with a new (never before seen) boss. Currently, in this version it can go on for ever even after you kill the basic bosses.
As I said I would, I have released a new game. However, I was up late working on the final touches, and since I may still need to balance certain things and further test the game, I decided to release the game as an open beta version. This means I have not yet posted the game into the main game links page. So if you are among the cool fans who read this devlog then you are now rewarded with an exclusive look at the almost complete version of Moon Master: RahKon. Enjoy! Feel free to give me feedback about game difficulty, bugs, features, or whatever you want. I still may be able to adjust the game to fix issues you discover.
Sorry it has been a while since my last post. Despite not reporting anything recently, I have been making good progress on my projects. I recently upgraded my computer in an attempt to make my life easier. Instead it made my life really difficult for two weeks. I finally got everything working now and transferred the important files and installed Flash 9 so now I'm back in business. And boy have I been busy. I am pleased to announce a new game I'm soon to release "MoonMaster: Rock On." It's a mix between Katamari Damacy and my Gun Master. It's a highly modified version of the last AS3 engine demo featured in a previous devlog entry. In this game, You'll take control of a highly maneuverable green rock. Moon rocks are falling out of the sky and threaten to crush you. On top of that there is an alien race that is trying to blast you to bits for some reason (some sort of conspiracy). Luckily you're a special kind of rock that can fire lasers. The game is about 85% complete and I hope to get the last 15% done before the end of the week. However, I may take the next weekend to play test and balance the game before releasing it. The game is fairly simple but it's not just a typical shooting game. It has some interesting gameplay features that add new challenges and strategies that I think you'll like.
And the purpose for making this game is to practice developing with Action Script 3.0 and to get warmed back up for developing robust code for Bowmaster 2.
After making the switch from AS2, I realized there were a lot of things I still needed to practice before I started making more code for Bowmaster 2. Specifically, I discovered that user interactivity was quite a bit different in AS3. In an attempt to practice, I was inspired to make a new game. The code is super ugly looking and I probably won't remember what the heck I was doing two weeks from now, which is why I better finish this side project ASAP before it all implodes into an AS3 blHACK hole.
Action Script 3.0 is making more and more sense as I convert old AS2 code over to the new standard. The code is much cleaner and I can definitely see a performance improvement with my core game engine. This isn't to say I'll be cutting corners though. I'm continually making sure I don't add any "expensive" code or animations that eat up all the CPU. I've successfully converted several of my unit AI and physics code so it's starting to come alive. I feel like Dr. Frankenstein giving life to simple rag-doll flash sprites... they even exhibit some pretty dumb behavior at times ;) but that's all part of the process.
After playing the "Quake: Enemy Territory" demo and having it run slow on my 1 year old computer with low settings, I vowed to do everything in my power to make sure I never release a game that can't run well on a current average computer. For flash, this means making the transition to Action Script 3.0. Bowmaster Prelude's game engine is created entirely in Action Script 2.0. I'm taking this opportunity to create a brand new, highly optimized engine based on the Prelude design but implemented in AS3. Before making this decision I created performance tests to compare the difference between AS2 flash 8 and AS3 flash 9. The difference was quite significant as the AS3 version outperformed the same code and graphics of the AS2 version by up to 5 times the speed.
So what does this mean for Bowmaster 2? With AS3, BM2 will have more targets on the screen, more projectiles flying through the air, more advanced physics using Vector based collision detection (no more arrows passing through things -- unless of course you're using the pierce arrow ;), better animation and graphics, but more importantly BETTER PERFORMANCE FOR EVERYONE!
Check out the demo below to see the power of Flash 9 and AS3! Muahahah...
Specifically, this demo features the new "boulder" collision detection code that can be applied to any spherical object such as catapult ammo, loose boulders, or debris from castle explosions. This demo also features a more advanced projectile collision detection system that can allow arrows to hit targets at ANY speed. See for yourself by clicking anywhere on the screen. A super fast "test" arrow will be fired from the top left corner and will collide with the FIRST object it comes in contact with (be it a boulder, foot soldier, or the ground).
Please note that this is just a demo and not the final game engine. Unit animations, terrains, unit stats/behavior, gravity, projectile speed, background artwork and graphics may appear different in the final game.
I'm currently not bought off by nVidia. You will not see at the beginning of BowMaster 2 an animation that says "nVidia... the way it's meant to be played" and I will not require Window's Vista or Direct X10 to play the game.
The unit AI and animation integration is coming along nicely. I've been running automated tests over night and have been pleased to see that the game continues to run slowly and the unit's are staying smart :). The new game modes are working well too.
You may remember from my ninja demo a few weeks ago I showed new units jumping around the map. That was just a demo, but I successfully created a "ninja" test unit that acts pretty smart. It will jump towards an enemy until it is in range and then walk until it's close enough to attack. When his health is below half, he will jump back in retreat until he has regained more than half of his health back. I also made it so that the ninja can only jump when he has enough energy (separate from health) so he can't just jump all the time. This is just a test unit at the moment, but with my new Animation and AI architectures combined with my improved physics engine, I'm able to implement pretty cool AI behaviors fairly quickly.
Happy Birthday Pat. Below is a dire wolf graphic and animation I created. Check out his majesty. I call him Fang, after my WoW pet (who is almost 3 years old... they grow up so fast). This week I spent a lot of time working on animations such as this (I don't want to spoil the surprise), but I also spent a lot of time with some very important code I've been neglecting... I'm planning on having the next Bowmaster game support multiple game modes (not just Capture the Flag like in Prelude) so in order to do this I had to re-code a lot of the "hard" coded features in the old Prelude code. Codie co decode code. Say that 10 times fast. Basically I was able to create a very nice foundation for supporting multiple game types and unit AI's. For example, in Defend your Castle mode, you need to keep your castle alive and kill all the enemies. The enemy AI will advance towards your base at all costs and they will have no castle on their side. Your AI will defend your castle at all costs, attacking any nearby units, but perhaps staying closer to your castle (exact AI behavior is still being worked out).
Stampede! I'm having a lot of fun pretending to be an animator. As you can see I've improved the horse animation significantly from the original. Animation is a long a tedious process but the end result is cool to look at. It's going to be worth the effort though. I've been working on other animations as well, but that's top secret information. If I tell you I'd have to ... try and convince you not to tell other people.
I've improved the archer animation so that they now aim towards their target. See how the archers adjust their bow angle to try and hit the baby red dragon. I'm using simplified AI for this demo and the arrow physics may differ (gravity and velocity) from the final game.
I spent most of this week working on unexciting documentation and file prep. I am trying to create a "lite" development version of BM2 that doesn't take 7 years to compile. I'll do this by temporarily removing items from the library that aren't being used (such as backgrounds, cutscenes, music etc.)
Check out the new character animations of the stealthy Jonin. Featured here are the Fist, Sai, and Katana Jonin. Notice their amazing mobility; landing arrows in these targets may prove quite challenging. Also watch how they pass off the fire orb artifact as an example of their ability to quickly escape with valuable items. The Jonin have a combination of basic attack moves and a special melee and jump attack. The basic moves cause blunt damage (from fists and feet) and the special attack damage is different for each weapon type. For example, the Katana Jonin's special moves inflicts slice damage whereas the Sai Jonin's inflicts pierce. Your allied troops and structures may be weak or strong against certain types of attacks.
Check out some new and exclusive character animation and background artwork. Feel free to right click and zoom in to get a better look. This is just a sampling of the many types of units I plan on having in BM2.
This week I spent working on revising my requirements documents. Specifically I worked on formally defining the magical elements and weapon types. I also started work on my new damage calculator which should take into effect physical and magical attacks. I'm planning on having basic single arrow types available for all of the magical elements. These arrows you'll be able to fire at a faster rate than the fire and ice arrows in Prelude (almost as fast as normal arrows) but they'll have reduced pierce damage; however, different types of enemies may have certain elemental weaknesses that you can learn to exploit. There will also be a series of upgraded magical arrows as well as class specific magical arrows (and super arrow spells).
Dang it's hot. Not the most fun time to be programming in a room full of heaters (that's what I call my computers). Anyway, despite the weather I've managed to get a lot of work done on the not so fun stuff about making games... optimizing. Well it's kind of fun to see your games perform more efficiently, but at the end of the day, 10 hours can go by and all you have to show for it is the same exact game (hopefully without many extra bugs) but one that runs a bit more smoothly. So unfortunately I don't have any cool new flashy animations or graphics to show off, but I can say that you'll start to see more fun stuff in the coming weeks, so stay tuned. But I did manage to dig up my fireworks demo from last year and integrate it with the main page. Now you can change between the Spaceship Demo, the Plague Demo, and now the Fireworks Demo.
I got a lot done on optimizing the collision detection of arrows against objects. I was trying to get away from using hitTest on the character movie clips and instead use my own BoundingBox class which works with my Vector class. In short, I can now better detect fast moving object collisions so things shouldn't appear to move through things at high speeds. I don't have a demo of this in action, but I did modify my current build of Bow2 by increasing the Hero's bow power along with the gravity. I was just playing around, but the end result felt a lot like the fast moving arrows of BowMaster 1, and there was a greater sense of power when you released a fast moving arrow -- something very satisfying about it. Nothing is definite, this inspired me to seriously consider allowing you to upgrade the bow power like in the original and maybe slightly increase the gravity in this next version so things fall at a more realistic rate (but not too real so you have time to dodge enemy fire if need be ;).
Another thing I've been working on is this "plague" effect that I plan to make implement as part of a new ability, perhaps for the hunter or mage class. I created a non-interactive demo of this just for fun, and the actually implementation in BM2 may vary. To see it click on the green orb at the top right of the main page above.
Just to explain a little about the demo: The blue squares are host cells (pretend they are footsoldiers or something living). The green orbs are virus cells that feed off of the host cells while slowly killing them. Then just for the heck of it I added some medicine cells which heal host cells and kill virus cells.
The cool thing about the ball particle is that it can be used for many new types of weapons, spells or other reactive environmental effects. For example, imaging a boulder placed at the top of the hill. Perhaps you might be able to dislodge it with a well place bomb arrow, sending it rolling down the hill crushing all the ground troops in its path.
I've implemented it so I can adjust the bounciness and friction levels of the ball and surface the ball collides with. This alows me to simulate very different particles using the same code (e.g. boulder on grass, vs boulder on sand, or rubber ball on grass etc.)
Test Boulder Rolling (meteor graphic)
The other new technology I added is the effect the terrain has on ground unit speed. Ground units now travel relatively faster when moving downhill and relatively slower when going uphill. The amount of boost or slowdown is proportianl to the steapness of the terrain. Click on the image below to see a sequence of screenshots that kind of demonstrate this. It probably would've been more obvious if I used only one type of unit in this example, but I didn't have time to do this just for this demo.
New and Exclusive Bowmaster 2 Character Artwork! This picture shows you the three playable character classes in BowMaster 2. Each class will have special unique abilities that help them defeat their enemies. The big dude on the right is an expert in demolitions and heavy siege weaponry. The lady in the middle is a mage with fierce magical attacks. The young lad on the left is a cunning hunter and expert marksman.
Bowmaster 2 Character Artwork
The skill upgrades available in BowMaster prelude will, for the most part, all be available in BowMaster 2. Several of the common skills will be shared among all three classes, but each class will have new skills and perhaps attribute enhancements for some of the common weapons (e.g. the mage may get a bonus to ice and fire arrows, while the demolitions dude may get a bonus to the bomb arrow, even though both classes may use these abilities).
It's been a busy week, but I managed to work on a few things in my free time. I worked on an animation for a battle mage unit for BowMaster 2 (seen below). I worked on illustrating another background for BowMaster 2 but I can't show you because it's top secret ;). I also was toying around with a zombie game idea I had. I'm only releasing this early screenshot now, but I may have a non-interactive demo in the near future. Oh and a few were confused about the previous week's update, those screenshots were of BowMaster 2 which has not yet been released.
This week I've implemented two new skills to Bowmaster: Rapid Shot and the Chain Lighting. See the screenshots below for examples.
Chain Lighting causes bolts of lightning to stream from enemy to enemy, causing lighting damage. This is useful for damaging enemy troops
that are spread out along the terrain or in the air. There is some randomness in how each bolt jumps from one enemy to the next, but for the most
part they choose whatever enemies are closest and within range. Right now the arrow needs to be detonated like the flak bomb.
Rapid Shot causes several arrows to be shot in succession at the angle and velocity you choose. The arrows are shot out at slightly different
angles than you original shot.
I updated the space background with the ability to zoom in and out using -/= keys. You can also cycle through the ships with left or right arrow keys. You can now also aim and shoot the turrets of the Destroyers (medium sized single turret ships) using the mouse. The motherships now have Devastator Laser Cannon in addition to their four turrets.
This week I spent time working on the "multi-shot" arrow which works like the original BowMaster. Also I've been optimizing the code and fixing some bugs. I may post an update to the original Prelude to fix some of these minor issues.
I have been playing with new backgrounds and graphics. I made a multi-fire-arrow and cranked up the max arrows. I was in the desert scene and it looked really cool with ground littered with dancing flames. I might just feature something similar in the final release. Take a look at this exclusive screenshot.
prelude desert
With respect to the space game, I already have code developed for manually piloting the small fighter units. You can fly around with the WASD or arrow keys, shoot lasers and homing missiles. You can target enemies. I plan to have mines and flares too. Mines you can drop behind you and flares will distract enemy rockets that are fired at you. Currently the enemies only fire lasers dots.
And the last thing I worked on today before posting this was the ability to control the Medium sized ships turrets. I may post an updated version of the background demo so you can play with it. You can't control the ship and where it flies, just where it shoots. It's kind of fun just playing as the gunner, trying to take out the fast moving small ships as they whiz by. Kinda feels like being in the Millennium Falcon shooting down ties (in a more simplified 2D environment ;)
What is the DevLog? It's shall be a journal for the progress
of my current projects. I'm not sure how often I'll update
it, but the goal is to keep me in the habit frequently updating
my site.
Lately I've been working on updates to BowMaster Prelude.
I have a really great artist helping me with the project
and the end result will be really special. I may release
some new screenshots when I'm closer to release.
I've also been working on a space game on the side. I may
release it relatively soon actually so stay tuned for that.
I need to focus on BowMaster, but this space game is so
much fun to program... I've never done a true "scrolling"
game before so it's been an interesting challenge.
Back to BowMaster... I watched the Movie 300 again this
weekend (probably the last weekend it's on the big screen,
now that Spider Man's here). That movie made me want to
make a Spartan-like unit with Phalanx squad AI (of some
sort). I love how they alternated attacks between blocking
and spear thrusting. We'll see.