The Keen project tech demo. Version 1.2. By Zach -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1.1 - How do I get it started? 1.2 - Using the demo * 1.3 - Warning * 2.1 - What is it? 2.2 - Tile engine * 2.3 - Drawing Actors * 2.4 - Physics * 3.1 - Additional info 3.2 - Updates 4.1 - Can I help? (* - Contains updated info) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= First note: Installing and running easy, you probably wont want to read that section. So I want to get this out of the way now. When I first ran the demo by itself (outside of the programming environment), for some reason the images had light blue areas where they should have been transparent. I do not know why. I simply closed and then ran the program again, the problem has not happened again. Bottom line: If the images look funky the first time, try starting it again. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1.1 - How do I get it started? Download the zip file, extract it. (Get winzip or whatever.) Then run Keen.exe. Simple as that. 1.2 - Using the demo * This is the first interactive demo. In previous versions, you could scroll around the level with the arrow keys, but there was no interaction. Now you control Commander Keen who starts in the upper-left corner of the level. Use the Left and Right arrow keys to move and the left Control key to jump. 1.3 - Warning * Since this is a tech demo, it is very flexible and not very secure. It is easily possible to crash the game. While anything the game does should not cause any harm to your system, just be careful. If the game goes into a bad state, it is theoretically possible that it could begin modifying things it shouldn't and make your computer unstable. (Fortunately, if by some crazy sequence of events this happens, a simple restart of your computer should fix it.) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2.1 What is it? This is a technology demo. It is intended to give an idea of the quality and capabilities of the engine. Currently, there is little more than the core tile rendering engine. However, this was what I saw as the primary stumbling block to getting this project off the ground. Well, the graphic engine and time constraints. As most people who have started these sort of projects know, it's easy to get distracted and put the project away. Hopefully having put this much effort into it, and now ensuring any technical difficulties that may have plagued me have been overcome, I will continue to stay motivated and push this game to completion. Sooner rather than later. Now let's talk about some of the features in the demo. 2.2 - Tile Engine * The tile engine is responsible for almost everything you see when you run the demo. Consequently, it is the biggest speed bump. As I think you will observe, this bump has been smoothed. Visible on the screen currently are three layers of tiles. The distant background, a light blue bitmap, is a single bitmap sized 1024x768. Since it is a solid color, you will not see it move. But the demo is hard-coded to use an 800x600 screen resolution so it does actually scroll a little bit. Next up is the "actor" layer, the one that contains what you and the bad guys will walk on. Technically speaking, Keen and the bad guys are rendered on this layer. And finally, there is a foreground layer that has a number of green boxes. In the end, there will be 7 layers of tiles. But adding additional layers is a fairly simple task at this point. What are not demonstrated in this demo are animated tiles. Without any performance loss, every single tile on the screen could be animated. I have not yet decided how the tile definition files will be formatted; but as far as the game engine is concerned, it is an extremely simple matter to turn any tile into an animated tile. 2.3 - Drawing Actors * The Behind the scenes the game is working with the concept of current actions. Keen now knows if he's Walking, Falling or Jumping. Although Keen is the player and therefore very different from other Actors, he still operates with many of the same concepts and requires many of the same engine utilities. The player internally is another actor, but it doesn't perform any AI calculations because the user controls it. The Keen (player) actor uses the entire Actor graphics system much like other bad guys. The graphics look at the current action and draw the sprites. A nice feature of the graphics system is that it automates the animation, allowing us to focus solely on logic or solely on animation at one time. More importantly, it allows for one person to develop the animation and another to develop the logic and control systems. 2.4 - Physics * The gravitational effects are more accurately implemented. Keen doesn't use gravity to walk downhill. However, gravity is used to make him fall when required. While a physics engine may sound complicated, and modern 3d games employ advanced physics engines, the engine for Keen does nothing more than compute 2d rectilinear motion. But this is great for a platform game! Because of this, objects will fall accurately. To make something jump, just give it a high enough upwards velocity, and allow the physics engine to use gravity to pull it back down. Additionally, surfaces can have coefficients of friction - you can have accurately modeled slippery things. Put in a fan object that causes a force (acceleration) in a direction away from it or towards it within some distance. There's no limit to the sorts of creative gameplay elements that can be added to the game rather easily! I am no longer performing all physics calculations using integers. But I may go back to doing so. If I continue to use floating point values, the movement will continue to be perfectly smooth. But I may want to change this back to integers because the computer is much faster working with integers than floating point numbers. As the engine gets more complex, I will be able to more accurately assess how costly this switch has been, and if it can be kept without destroying the gameplay. Keep in mind that while the physics calculations are simple, they may have to happen more than a thousand times per frame, which translates into hundreds of thousands of times per second. So the "small" cost of using floating point numbers adds up. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 3.1 - Additional info If you have any questions that were not answered here, please check the website. http://www.geocities.com/KeenKoncepts. Also, I check the public commander keen forum often, as Vitamin Zach - http://pub128.ezboard.com/fpimentogamedevelopment. Finally, you can try emailing me at zapdim8@juno.com, but realize that I do not check my email as often as the keen forum. Also, you can contact me on AIM - VitaminZach. This is usually the most efficient way to get your questions answered, but it also means that I have to be online at that particular time. 3.2 - Updates January 10, 2004 - Added Section 1.3 - Warning January 10, 2004 - Changed "Drawing Bad Guys" to "Drawing Actors". January 10, 2004 - Removed extinct website link. January 10, 2004 - Removed AI section, not applicable to this demo. January 10, 2004 - Updated to version 1.2 July 25, 2003 - (1.1) Added Section 1.2 - Using the demo. July 23, 2003 - (1.1) Updated to version 1.1 July 23, 2003 (1.0) - Added Updates (this) section. July 23, 2003 (1.0) - Fixed some more spelling errors and missing words. July 16, 2003 (1.0) - Fixed some spelling errors. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 4.1 - Can I help? Certainly! The website should have the latest info on what sort of help will be most appreciated currently. Then feel free to email me (zapdim8@juno.com) or contact me on Instant Messenger (VitaminZach). By the way, help of a graphic nature (if you can create sprites or tiles) will almost always be desired! Thank you, I hope this document didn't bore you to death. Zach