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
