The Keen project tech demo. Version 1.1. By Zach -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1.1 - How do I get it started? 1.2 - Using the demo * 2.1 - What is it? 2.2 - Tile engine 2.3 - Drawing Bad guys * 2.4 - Physics * 2.5 - AI * 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 * Once it starts up, the information you might want to know is displayed in the upper-left corner. Press Enter to change the resolution, Space to change the color depth. It cycles through 640x480, 800x600, and 1025x768 resolutions. And through 8 (256 color), 16, 24, and 32 bit color depths. Also not mentioned in the demo is that you can (and should!) use the arrow keys to scroll around the level! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 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, the bitmap of Big Ben, is a single bitmap sized 1024x768. When using that screen resolution, the bitmap will not move. If you go smaller, it will scroll a little bit, slowly. Next up is the "actor" layer, the one that contains what you and the bad guys will walk on. And finally, there is a foreground layer that looks like big green fish guys with boxing gloves. I don't have any tiles appropriate for the close foreground. 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 work, it is an extremely simple matter to turn any tile into an animated tile. * 2.3 - Drawing Bad guys New in this version, the Keen actor is animated! Behind the scenes the game is working with the concept of current actions. The Keen currently understands walking, and which direction. No more sliding! Also, the animation should no longer slide. (Rather than fixing the bug, i'm just using floating point numbers.) 2.4 - Physics * The Keen actor now utilizes some very simple AI, now the "AI" is responsible for setting the actor's acceleration, but the physics system still controls the resulting movement. The gravitational effects are now demonstrated, but only for a short period of time when the program first loads. Actually, when he walks downhill, the engine is using gravity to make him move down, but it doesn't look like that is the case. 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. 2.5 - AI * New to this version, there is some simple "AI" work done behind the scenes. You may notice that Keen turns around once he runs into a wall, this is because the AI is looking at the world around him and knows when he has run into something. Still this is a very simple AI implementation, as much of the system remains to be developed. There are a couple bugs in this simple implementation. (Since this is not permanent, I haven't bothered to fix them.) The areas where an actor looks for walls will eventually be adjusted for their velocity and relative motion. Since it is not yet adjusted, Keen "jumps" up walls when he turns around, and turns around when walking up a hill. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 3.1 - Additional info If you have any questions that were not answered here, please check the website. http://www.geocities.com/KeenKoncepts, or keen.zeeper.com. 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 July 25, 2003 - Added Section 1.2 - Using the demo. July 23, 2003 - 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