Invisible_Man

The seventh demo of the SHMUP has been released. For details, click here.

From the ProgrammerWritten by Invisible

Now that the SHMUP has been in development for a while, it's starting to get a bit texture heavy. Because of this, some users have been unable to run the game due to a lack of video memory. My initial attempt at solving this was to load textures into system memory after video memory runs out. Unfortunately, your graphics card needs to support rendering with textures in system memory for this to work. This seems to be a somewhat rare capability, so I ended up scrapping the code. The proper way to solve the memory issue is to load textures only when they are needed and unload them when they are not.

Last week I was stuck on what should have been a simple problem: Calculating the time at which two objects will intersect. The objects in question have constant velocity, so that helps simplify things a bit. My original plan was to set both object's motion formulas equal to each other and solve for time. This would have worked splendidly, if not for the fact that division is undefined for vectors... It was impossible to get time alone on one side of the equation. The breakthrough which helped me finally solve this pr

The heightmap tool is finally finished! Since I decided to use the arrow keys rather than the mouse to move the tile selector, the tool was completed easily. The tool isn't very well optimized (every tile in the map is being rendered) but it runs fast enough to get the job done. The one tricky bit I ran into was making the selector turn green when behind tiles. I eventually got it to work by checking for intersection between the selector and any tiles with the same x coordinate as it, but a lower y coordinate (in map space, not screen space).

I spent the majority of last week working on the alien ship's movement. They needed to enter the screen and then circle around in front of the player's ship, both in an effort to avoid the player's shots and to hit the player's ship with their own projectiles (a moving target is difficult to hit). There are several ways you can go about this, and it took me a while to both discover those systems and try them out. These are some of the systems which I found: track, track and spring, move commands, waypoints, and a waypoint track.

Track With this system, the alien ship would be on a fixed track. This fixed tr

We have postponed the heightmap tool which I discussed in the previous newsletter issue. This is good news for me, since I can work on the fun stuff (destroying alien ships) and I don't need to worry about the problems with the tool yet. Our artist doesn't need to work on backgrounds right now, so this shouldn't hurt that side of development.

So yes, I worked on making it so that you can destroy alien ships. I personally think that it turned out quite nicely, and have been found to sit and constantly kill ali

To make it easier to create the background images, our artist GreyKnight requested that I create a tool for him. This tool would allow him to create the rough outline of the terrain by stacking blocks. Blocks would be stacked by clicking the mouse over the area where you want the block to be placed, and it would appear at the top of the stack at that location. Blocks would then be removed in a similar fashion by right-clicking.

Unfortunately, I seem to be cursed when it comes to tool development (ju

The first demo of our test project (a vertical scrolling SHMUP) has been released. For details, click here.

From the ProgrammerWritten by Invisible

Starting fresh without any wrappers around the APIs has been interesting. The code is actually a lot simpler, and I spend more time working on the actual game rather than the engine. This has led me to wonder if the "game engine" which people sometimes talk about is actually a game specific framework, not a collection of generic wrappers and utilities.

I have decided to use exceptions for error handling. This would also allow me to catch any other exception and report it in a more user-friendly way (although I have not taken advantage of this yet). The exception class is pretty basic; just a message a

What was originally a small detour into studying finite state machines has completely redirected development.

Due to the spaghetti code which was SAO state handling, I started researching finite state machines. The idea is that a finite state machine would clean up the code and make it easier to read, and bugs would be easier to detect as well. If you want to know more about finite state machines, I highly recommend these two articles: UML State Machine on Wikipedia and Finite State Machines (FSM) by Jason Brownlee.

The FSM system which I wrote involves a main CStateMachine class, a base

The latest demo of SAO: Redux is version 28.3. If you are interested in trying SAO: Redux as it is being developed, feel free to stop on by the online chat and ask for the latest demo.

Changes since version 24: -WASD can now be used to walk/crawl/fly around. -Numpad 0 can be used to jump. -Numpad 1 can be used to equip/unequip a potion. -You can now punch by left-clicking. -The stuck-drinking bug should be fixed. -An equipped potion can be thrown by right-clicking. Hold down the right mouse button to aim.

From the ProgrammerWritten by Invisible

This week I added punching and potion chucking, although the latter still needs some work. I also spent some time refactoring the code.

Rather than having the state integration and rendering code in the same class, I've split them into separate

The latest demo of SAO: Redux is version 24. If you are interested in trying SAO: Redux as it is being developed, feel free to stop on by the online chat and ask for the latest demo.

From the ProgrammerWritten by Invisible

SAO: Redux now has graphics other than squares, lines, and arrows. Getting the background to scroll correctly was a bit of a challenge, but handling world space like a 3D space helped solve the issues. The homogeneous divide step was the main bit I was missing, although I did have to scrap most of my original idea (handling the background as a separate "space" did not work out at all).

In the current demo there are multiple characters: two stickmen, one pollenator, and one stinkbug. To help find problems, the user can plug into the characters the same way a