ALPHA - Fall ‘05

Total Time: 103 hours
————————–


Stickman Game Engine

Source Location: http://ew.xidus.net/download/SGE

Current Downloadable (Win32) Binaries:
http://ew.xidus.net/download/SGE/bin/collisions.exe
http://ew.xidus.net/download/SGE/bin/collisions-B.exe

—-
General
———–
- Rename SaucerAI to DodgeAI, as that is more accurate. It is the first in a series of AI routines.
- Change SetVelocity to reflect the new MAXSPEED define.
- Add screen transitions (left/up/down/right wipe, perhaps spiral)
- Add cinema support (AVI’s)

Bitmaps
———–
- Stretching bitmap’s loaded from files for the background doesnt seem to work
- Bitmaps loaded via file retain their directory and extention within their name, even though they shouldn’t

Scripting
———–
- Need better error handling - It can always get better, but hey, it works alright now.
- Add ability for GENERIC specified bitmaps to use the PRGW/PRGH parameters
- GetBitmapDimensionsEx() seems to have stopped working, add scripting functionality to specify width/height of bitmaps loaded from files
- Add ability for file loaded bitmaps to specify the PRGW/PRGH parameters
- Add the ability for the #LEVEL section to wipe the game’s loaded bitmaps
- Add PRGH and PRGW capabilities to the bounds entry for sprites
- Fix error: unable to script two sprites Solution: This was actually a linking problem, and a fair memory leak if the z-orders didnt work.
- Allow level’s to specify their song in the script (via number or enumerated type for song)

Levels
——–
- Add field to specify song via number
- Work on run time level script handler (this will take a while…)

Level Creation
———————
- Need a better way then defining each object individually…. perhaps a level editor….

Game Physics
————————
- Create or find a 2D collision library that -works-
- Fix dragging so sprite doesnt move when held.
- Make it so dragging sprites do not collide with other sprites.
- Edit DodgeAI so width/height are not based on bitmaps, but rather on the actual sprite values.
- Don’t allow Dodging sprites (that is, sprites with the DodgeAI routine) to modify their velocity if being dragged.
- Allow function pointers to collision function’s specified in game.c so it is more like a game engine. Sprite.c really shouldn’t have to be compiled when writing the game.

Sound
———–
- Loading needs to be able to set the number of bytes for the song, or record them all for each wave. Solution: Fix via reference table
- Modify sound so streaming isnt time based, but rather based on play-write cursors
- Modify so level’s specify the songs they play
- Add code for multiple sounds to play, rather than just one song.
- Remove MIDI support

Other Quirks that are Related
———————-
- XLib: Need to do a fflush() when writing the end tags
- XLib: Make it includable in C++ projects
- XLib: Allow users to specify the file they wish to log to (ie, expansion of glog and new macro)
- XLib: Add file checking for glog() log files
- XLib: make it so new files start logs at 1 and continue normally
- XLib: change the “time” variable name to stime for *nix compatibility (time is a *nix function)

————–
CS I - Word frequency and total counter

Code -> http://ew.xidus.net/download/cs1/5
Input file used for testing -> http://ew.xidus.net/download/cs1/5/input.file
Win32 Binary -> http://ew.xidus.net/download/cs1/5/words.exe
————–
CS I - Lab Project - Basic Interpreter

Code & Scripts -> http://ew.xidus.net/download/cs1/final/
Download Binary and Scripts -> http://ew.xidus.net/download/cs1/final/final.zip

Words of wisdom:
The format is very specific. Check the example scripts to see how it should be done. You can create new scripts and run them through the interpreter, and whoa, you could almost call yourself a programmer.

Make sure when you specify the file you don’t type the name wrong, and make sure you either have the correct path or that the script is inside the directory that the interpreter binary is in.

All scripts should be plain text files.

Keywords (commands) are goto, stop, write, set, read, and if.

The details of the interpreter and the mysticalness of scripting are thus:

  • Expressions: expressions may involve the +, -, *, / arithmetic operators and the ==, < , <=, >= comparison operators.
    All variables and all constants are integers.
  • An IF statement consists of the optional statement number, the keyword, one or more blanks, an expression involving variables and constants (integers only), one or more blanks, and a statement number. If the expression is true, branch to the statement number. If false, continue with execution. False is zero, true non-zero.
  • The SET statement consists of the optional statement number, the keyword, a varbiable, the “=” operator followed by an expression involving the operators above and open and close parentheses.
  • Variable names are formed out of letters or a letter with trailing digits.
  • Variables are created in a symbol table by appearing in a READ statement or on the left hand side of an assignment.
  • The WRITE statement consists of the optional line number, the keword and a comma separated list of variables and string constants.
  • Each WRITE results in one line of output (i.e., a linefeed is implied).
  • The READ statement consists of one or more comma separated variables.
  • The GOTO takes a statement number as its argument and causes execution to branch to the named statement.
  • STOP terminates execution.