Welcome to my project page! Here you can check up on the development of my latest game.

Operation: Oblivion (name subject to change =)) is a mostly top view space shooter project for the IBM PC.

Right now the game is in very early stages, but I expect it to start taking shape over my summer break. Soon there will be screenshots, but for now check out the level one music which I have composed by clicking here.

Latest work done:
July 9th, 2003 Today I fixed up the level transition code which started crashing, added a music playback system which switches tracks finally, drew some turrets and made shots more visible.

July 7th, 2003 In the past few days I've designed a new enemy that I'm still heavily finetuning. Level 2 is up to 40 seconds of somewhat rough gameplay, including a neat rocket trap. Also, there is a switch you can flip by shooting that will play a key role in level 2 which now works:

July 1st, 2003 Today I designed 9 screens of the new level. I haven't drawn any new art yet though or designed any new enemies yet.

June 30th, 2003 Not much happened today. I've become obsessed with playing through old Amiga games, which is eating my time. I did, however, come up with a plan for 104 seconds worth of level 2. It's sketched roughly in pen with notes across 3 sheets of printer paper (which is handy because they're continuous sheets until you tear them off). All I have to do now is program it in, and of course draw it-- which is always the most time consuming part for me.

June 26th, 2003 This was a massive update day. I redid the sound effects system, fixed the powerup graphics, made the gun sound change pitch/speed as you power it up (awww yeah!), and coded in a transition after the boss blows up in which it fades smoothly into a new level. The source code is getting rather large, with the biggest file (the A.I. routines) weighing in at 30k. I drew a simple tileset for the next level, and am looking into how to skip around a music module correctly. Here is a screenshot: If it looks a little off, well, it is. I'm fixing that, too.

June 24th, 2003 The first level is done done done! I got around today to adding a banked ship graphic (which is a little too extreme so I have to edit it later), sounds for hits and coins as well as a low rumble when anything large goes boom, added a couple new modes for the first boss, made the boss actually explode (which I have to say is pretty satisfying), and fixed quite a few bugs. There'll be a playtest version out soon complete with a high res scaled mode, I swear. I just need to fix a couple more things up.

June 21st, 2003 The boss is coming along nicely now. The shell and the underlying machinery are now seperate sprites. The shell is a little lagged to give the boss more depth in its motion. It now shoots 3 different patterns of shots at the player, and when it dies both halves seperate slowly. I still have yet to work out a couple glitches.

June 20th, 2003 I showed the first boss to some people and they thought it looked too goofy, so I toned down the colors, underlit it, and added some exposed machinery and a couple other details. It's still not quite finished, but it's getting better. I've been working on the boss patterns too, and I've yet to come up with something that's both interesting and satisfying.

June 19th, 2003 I've been struggling trying to come up with a look for the first boss. It's going to take some pretty different drawing skills I think to get it to look correct. The first one I drew had a lot of jagged angles and sparse shading, and that didn't look that great. A lot of games seem to draw them in a rougher way-- more squiggly with thicker shading and often some kind of a colored shell over banded machinery. After doodling in Deluxe Paint for a while, I came up with the look I wanted. It still needs some heavier shading, but I felt I should have something to show for the day's work so I'm presenting here the level 1 boss design:

June 17th, 2003 Today I redesigned the hover ship enemy so that it looks more rounded and shaded and added a new autocannon that sticks to the walls, moves up and down, and fires laser blasts. I'm thinking of making the wiggling fleet ships easier to beat.

June 13th, 2003 Finally, the player can die and be resurrected (complete with gliding onto the screen and an invincibility period), and the scoring system is in place. The scoring is a multiplier-based system, but is gentler than, say, Mars Matrix. O:O is pulling together into the top/side view hybrid that I wanted. The game is now playable as an actual game, and level 1 is in my opinion a good challenge for a first level. It only needs to be a little bit longer and have a boss, and it will be finished. Expect a one-level playtest demo to appear here within the next week. I haven't posted any shots in too long, so here's one of my ship being destroyed by a rocket:

June 12th, 2003 Today, I cleaned up a lot of the source code, fixed yet another scrolling bug, and fixed some of the AI routines. I also added another enemy type that bounces around in a sine-like pattern, and started writing in a new weapon powerup. The first level is now around 1 minute 15 seconds, but is missing something to break up the level such as a miniboss halfway through.

June 11th, 2003 Today was less productive than I had expected, but I still got some things done. I spent a good part of the day running into a wall trying to get enemies to shoot directly at the player using custom tangent routines. I ended up just using C's arctan and sine functions instead. I also got cut and paste ability working in the editor. Due to Allegro's, uh, gigantic nature, the game needs a heavier processor than I expected. This shouldn't pose a problem for anyone but p200 owners such as myself =). It will run on a 200, but it will jerk around a little. I think it's due to the sound routines, and I will experiment maybe with a different library later.

June 10th, 2003 Well, it was a pain, but I got the scrolling routines capable of scrolling between rooms. I redid the world map routines to suit a 2d shooter better also. I've noticed that the level editor really needs cut and paste routines, so I guess I'll get to that later. Also, I added the map position to the debug information at the top of the screen-- hopefully this will help me create more intricate levels. I also added a few more attack waves to the level-- level one is now almost a minute long.

June 9th, 2003 Sorry I haven't been updating, as I was out of town. Development resumes tomorrow.

June 5th, 2003 Today, most of went on was thinking about the game design and tweaking the enemy patterns. I found that the level felt too 'safe'-- and I remedied it by making enemies that come from behind. I plan to make the same formation take potshots at the player every now and then. I also made a rocket enemy that launches as the player gets close, as well as an enemy that comes down the screen, fires, then transforms and flies away. Also, the explosions looked strange until I made them move with the scroll.

June 4th, 2003 It's only a couple hours into the day and I now have the powerup ship dropping off various powerups when destroyed, as well as some ships giving you coins which boost the multiplier.

June 3rd, 2003 Well, it's finally starting to shape up into something playable! I took out the old dot starfield and replaced it with one that uses sprites. Also, the sprite-scenery collisions now work. I drew some barns and cows that go on the side of the scenery too, as well as a powerup ship (second picture). I had to redo the animation routines, and so those work better now as well. The ships now can take multiple hits and the sprite-sprite collision detection is practically finished. I tried to record some announcer voice sounds today, but I was unable to find the microphone. Oh well.

June 2nd, 2003 I liked my old tileset so much that I feel it would be a shame to ditch it, so it will definetly be in use in the later levels. I might switch between top-side view fusion and strict top view gameplay-- one space level followed by one planet level. I'm kind of making things up as I go along at this point =)

June 1st, 2003 Ok, I'm sure you're wondering why I describe the game as mostly top view. That's because it's not going to be a standard top view game such as Raiden, but rather a fusion of top view and side view gameplay. That means I have decided to pretty much toss out the tileset as it is for now, though I will probably end up using it for some level later, perhaps as a bonus round background or something I can parallax other tiles over in a later stage. So, here is a screenshot of what I've been cooking up. These are only the foreground tiles-- I plan to have some sort of a starfield or background layer beneath to add depth and color.


May 31th, 2003 It's a weekend so I'm not planning to do a whole lot of work on it-- but I now have an event system working, as well as player shots and enemies which move in a sine pattern (shown below). I've also composed several more songs for the game which get more abstract and experimental sounding the higher the level.

May 30th, 2003 I have done quite a bit of work on the sprite routines. There is now a player ship that can move around, and the sprite routines should be flexible enough that I can do what I want with the game. The next phase is going to be a bit more exciting. I'll soon start working on enemy designs and AI, as well as a level timing system. The source code is getting rather large-- 15k for just the basics. Hopefully the flexibility of the game system will be worth it. I also got around to drawing a nifty circular explosion graphic: and a nifty banked version of the player ship: Aaaand, here is an in-game screenshot (don't worry, I'm still working on those tiles!):

May 29th, 2003 Well, scrolling pretty much works! I spent most of today playing with various screen updating methods. I found that double buffering with a vsync delay produced better results than page flipping on my system. It scrolls nearly jitterlessly, and should be perfectly smooth on a better videocard. I have also included a sync-with-timer update method that you can switch to. It looks ugly, but most IBM gamers are used to the look of its tearing and jittering. In addition, it is more compatible, running at the same speed regardless of video hardware or drivers. I heavily recommend the other display mode, though. Lastly, I plan to impliment a 640x480 doubled-pixel mode in both synched and non-synched forms for incompatible videocards and for TV-out cards which cannot do low resolutions-- but this can wait until much later.

May 28th, 2003 It's been a lazy day. What I did get working though is scrolling on a tile-by-tile basis, and I have now a concrete method for pixel-by-pixel scrolling written down on paper that works in conjunction with the tile-by-tile routine. One reason the day was slow is that I discovered a new arcade and spent too much time playing Blazing Star, Last Blade 2, and the super-cute-but-awesome Twinkle Star Sprites.

May 27th, 2003 Well, I was hoping to get it scrolling today but it turned out to be a tad bit more complex to do than I had initially thought-- I did come close though. Just a couple more routines are required for it to work. This scrolling method is actually harder to impliment than one huge tilemap. The advantage is that I can sequence a bunch of rooms one after another which saves space and time, as well as lets me do things easily such as loop a segment so I can have the screen scroll really fast without quickly running off the edge of the map. Of course it has a few disadvantages such as the inability to scroll between rooms diagonally (which we won't need for this game) and, of course, it's a pain in the rear to program. I guess between this and the circular buffer method for my Ventura Heat game I have a knack for choosing frusterating scrolling methods.

May 26th, 2003 It's a weekend, and a 3-day one at that, so the work I've done lately has been pretty light. What did get finished though are the headers for the control system and scrolling system, as well as a couple placeholder graphics and some sound effect and soundtrack work. The core routines of the above routines should be fairly simple to do so they should be finished soon.

Code elements which are finished or near finished:

  • Animation routines
  • Screen (tilemap) routines
  • Tile routines
  • World map routines (for level sequencing)
  • Level editor
  • File formats
  • Sprite control and drawing routines
  • Control routines
  • Internal game structure (near)
Screenshot of the level editor:
It's a room-by-room level editor. The rooms are sequenced to form a continuous level. It is at the moment missing commands such as fill and buffer operations. Don't worry, I'm working on the artwork! These are only test tiles. Anyway, in the upper-left corner is the current map being edited, and in the lower-right are the tiles you can choose from. The upper-right corner displays the tile currently selected.
Tools used:
  • Anjuta for editing
  • GCC v3 for compiling
  • Impulse Tracker for music composition
  • Deluxe Paint II for pixel graphics

Libraries used:

  • Allegro 4 for graphics/audio/io/timer
  • DUMB for music playback