---------------------------------------------------
General Modules in Water Island RPG 0.74:
---------------------------------------------------
Executable:

"WaterIslandRPG_0.74.exe" was compiled for DirectX 9.0 on Windows XP (and should run fine on any Windows system with DirectX 9.0 or 8.0)

-----------------
Controls (uses DirectInput):

arrow keys and numpad - move character.  Note, you can combine keys (this is intentional) for more angled movement.  For example, press "numpad 8" and "numpad 6" to acheive the same effect as "numpad 9" (45 degrees northeast).  Or press "numpad 9" and "numpad 6" to acheive 22.5 degrees northeast east.

a - attack
c - character screen
g - game screen
r - reset
click mouse - path-find mvoement (currently incomplete)
esc - quit

l - lock frame rate and refresh rate sync
u - unlock frame rate and refresh rate sync
s - sound test

page_up - scroll up text
page_down - scroll down text
end - bottom text
home - top text

-----------------
DirectX and Windows Basics:

This includes the general set-up and design/implementation of the windows (full screen is implemented, just used in this release), and also of the DirectX setup.  This area could use some expansion, such as allowing the user to select particular devices.

This set up also includes things like loading.

Also, timing is used.  Currently timer is used only to sync drawing frame rate with monitor refresh rate.  In a future version (in the works), game movement will run based on time passage (instead of being relative to the framerate).

-----------------
Images Folder and General Graphics:

All the images used in the game.

These were made or freely distributed.  This is a purely academic project.  The exception of the "free" graphics are the StarCraft marine graphics.  This project was for a programming course (some code design and game design emphasized, but not a graphics art course), but the game was very incomplete without some decent looking graphics.  These come from legal copies of the games.  The main purpose of the marines is that they have 32 directions of animation, which was not feasible to find (in testing I used blue boxes with numbers instead of marine graphics).  These are temporary and are meant to be replaced by original art in future versions.

Graphics were all built around the DirectX "Sprites" class (meant for 2D).  The types of graphics include:

-Simple Graphics (overlays)
-Tiles
-Animated player/monster

-----------------
Maps Folder and Isometric TileMap:

Core to the project.  Isometric tile-based system.  Current position in an inexpensive array (currently char values) defines the world.  Only necessary "view window" tiles are drawn.  Basic file loading and displaying and 2D world movement.

It is important to note why Isometic tiles were chosen.  This 2D view of tiles is more complicated than basic rectangular tiles.  This is primarily because the tile edges are not parallel to the sides of the screen, and the rows do not keep a consistent vertical position.  Thus, the translation math is more complicated than with rectangular tiles.

By the way, another common more complicated tile view (done by a group in the course) is hexagonal, which of course also has fairly different algorithms behind it.

See "FORMAT.txt" for specifics of the map file format.

-----------------
Player/Monster Graphics:

There are animations for the player and monsters.  They move in in any direction at equal speeds (using trig functions and float/double storage, thus  movements is in fractions of pixels, truncated per pixel for display).

Also, there are 8 frames of animation in 32 directions for monster/character movement and for attacking.  This is actually 17 graphics frames flipped.  More complicated loading is done for these graphics (ie - a single file is loaded and chopped up into textures for frames).

-----------------
Sound:

Sound Folder includes all sounds used in the game.  Off of various web sites; none is original (as with the images - 2D game programming course, not a music and game sound compoisition course).

Sound code was mostly pretty simple.  We have a single class which deals with creation and use of all the sound objects.  Users of our sound class refer to the sounds through a simple key to value map system.

Various sound affects play.  Most noticebly is the level-based constant music.  There are different sound affects based on hit, miss, block, etc (corresponding graphic text output is shown).  The marines are place holders - the sounds aren't gun shots because the game is meant to be more traditional medieval melee combat as opposed to science fiction.  Sounds also play at player level up, monster killings, next level, and death, and win.

-----------------
Informal_Game_Design Folder: 

My RPG rules design.  Most significantly includes combat equations ("Combat_Equations.doc") and the rpg class system rules ("Classes_Current.doc").

-----------------
RPG Rules:

A large (and seperated) module of the code is the RPG rules implementation.  Currently implemented are character and monster stats (press "c" to see some of them), rules for melee combat (based on stats and rules design), a simplified form of leveling, equipment (not interfaced yet).

-----------------
Font Engine and Character Screen:

A graphical font engine maps text to text images.  It's effectiveness is especially seen in the scrolling text buffer.

-----------------
Character Screen:

Displays player's RPG rules stats.

-----------------
Game Play:

Of course the implementation of the game play rules should be mentioned.  Their meaning is pretty self explanatory.  You attack and kill monsters.  If your player's HP runs out, "You Lose".  If monster's HP runs out, it dies and you get experience.  If all monsters on a level die, you go to the next level.  If you get enough experience, you gain a RPG rules level.  You win the game when you beat the last level.

The current rules of the game are one obvious area for more in-depth expansion.

-----------------
Directions Folder: More Info. from Earlier Submission:

Directions contains some pure text directions and documenantation from an earlier submission.

The code is not included in this release, but I have since refactored the design a bit.  Especially to remove some code redundancies.  An example of one of these major refactorings is the ScreenOverlay class.  In the event of a game Win, Loss, Level Change, Night Shadow, etc there are simple screen overlays that were originally done with redundant code.  In refactoring, I moved th redundancies into a "ScreenOverlay" class.

More in depth documentation on design exists, but is not included since the design has been significantly refactored.

-----------------
Comments on pathfinding:

The current major problem to fix other than re-design is the pathfinding method.  A* pathfinding is used in both cases.  But what I used in this version was largely experimental.  Instead of doing more traditional tile-based path-finding, test points on the screen are used for path-finding.  This experimental method is slower, and the current version has rounding errors that cause the character to attempt to move through water.

Again, the currently implemented method was done for experimental reasons; it is both harder to implement and slower than the the more traditional tile-based path-finding.	However, the method does have the advantage of being more precies and of working regardless of the type of 2D graphics on the screen (tiles or not).

However, there is a faster (and more common) method.  Faster would be a more tile-based implementation which accounts for dynamic objects (such as monsters that move from tile to tile) in which tiles change from "block" to "unblock" based on what dynamic objects are "on" them.


-----------------
Future releases:

-Fix any bugs (ie - those listed in sections above), and thoroughly test for more to fix

-Still some design refactoring to do

-The next major feature to add would be better path-finding

-Improve graphics, and replace temporary borrowed art with original art

-Optimization!

-Further implementation of RPG rules and a graphical interface and gameplay more involved with the RPG rules

-Items, more RPG rules, etc

-After fixes (especially design refactoring), implement OpenGL