Nakul Verma - Progress Report

-------------------- WEEK 2 ----------------------

04/01 (InputAPI)
- Coded a preliminary version of InputAPI.... assuming windows messaging

04/03-04 (re-structuring InputAPI)
- Finished up a somewhat working version of InputAPI - version 2.0 - the correct way - :P

04/06 (Generalizing / Testing)
- Generalized the API so as it can be configured for any device and tested it with keyboard.

04/08 (Gamepad input device research)
- Researched on how to add in gamepad input (device enumeration and polling).
- Finished up isAnyKeyPressed method.
- Group meeting to see what others are up to.

04/10 (Finishing up InputHandler for keyboard input / INIWriter)
- Finished up mapInputKey method (needed for bind user input with specified game action)
- Finished up writing INIWriter (interface needed to write to .ini files)

-------------------- WEEK 3 ----------------------

04/11 - 13 (OUT)
- Out of town to enjoy life...

04/16 (Finishing up InputHandler for gamepad input)
- Got the gamepad. finally :P
- Restructured methods definitions to include gamepad input
- INIWriter changed to INIParser (interface needed to read/write to .ini files)

04/17 (InputAPI Finalization)
- Finalized gamepad.
- Re-tested all methods thoroughly.
- InputAPI ready for (beta) integration!

-------------------- WEEK 4 ----------------------

04/20 (Reseach on game AI)
- Start up on Enemy AI API

04/22 (Integration fixes)
- Integration bugs found with InputAPI
- unintended multiple polling (screwing up key mapping)

04/24 (InputHandler post integration finalization)
- Changed InputHandler fixing all bugs
- New functions added (see details with the documentation)

04/25 (Resume work on game AI)
- General design of how AI will work. Click Here

-------------------- WEEK 5 ----------------------

04/26 (AI Method details)

- Initialize(); / Cleanup();
[should be called once on serverside]

ActionToTake* generateNextAction (AIPlayer AIplayer, double AILevel, WorldState* wstt);

semantics: the method will return what action *should* be taken by AIplayer, who is AILevel smart given the current world state (wstt)

Advantages of this approach:
- A 'human' player can give up control to the AI API and
- A 'human' player can take control of the ai bot.
- Seems like a very good feature to add (which we are getting for free )

* for this to work, we need a good OO structure *
* I suggest whosoever will be working on making 'Player class' should also consult me - for integration issues (plus i have good OO suggestions) *

Disadvantages of this approach:
- cannot think of any.
- Input from others is appriciated


04/27 (Simplified AI design)
- As per the group agreement tried to come up with a simplified version :(
- And realized that it is much better to start off with a simpler version :)
- No changes to the AIHandler interface (all changes are done internally). Final methods:
____ Initialize()
____ generateNextAction()
____ Cleanup()
- Refer to AIHandler API for more details.

04/29-30 (AI first draft ready)
- Finished writing first draft of of AI players.
- Overall integration issues:
____+ Still need to discuss as a group (on a higher level) on how the actual AI player be created.
____+ Still need to decide do we want the capability of someone taking over an AI player, or AI taking over some real player.

- Ready for Alpha integration / testing.

05/01-02 (Midterm Study)
- No work done (2 midterms coming - Mon & Wed)

-------------------- WEEK 6 ----------------------

- Start preliminary integration for testing.
- Start to add differend behavior (group attack / single attack, etc)
- Very quickly try to improve and finalize an acceptable AI response.

- Start preliminary AI integration for testing.
- Fixing enemy class to encorporate AI, collision detection
- Restructuring AIHandler interface to better integrate.


- Decent Enemy AI movement complete
____+ Starts at random places and looks for the closest player
____+ Moves towards the closest player using following rules
________- If player is shooting in your general direction, you move away 90* (randomly decide right or left)
________- If you and other enemies are in same line going towards the player, then spread out, using weghted randomness
________- Enemy acceleration is a function of the distance you are away from the closest player and number of enemies close to you
________- If you are close to the player and the player starts to run away, you tend to ram into the player, disrupting its direction (cool effect)

- Enemy AI shooting/firing complete
____+ Each enemy is given an initial random frequency to shoot
____+ If it is time to shoot and enemy is nearby a player then fire
____+ Reset shooting timer

- Enemy AI collision detection
____+ works very well with the players
____+ works fairly well with the players
____+ Enemies try to space out to avoid collision, still need to work on that
_____ _ + Grouping up together takes, i guess, more precidence, currently :P


-------------------- WEEK 7 ----------------------

- Parameterize AI such that we can incorporate different behaviour for different kinds of viruses
- Plan:
____+ Given five different types of AI entities: Cold Virus, Mutate, SARS Virus, RBC's, WBC's

Following are the suggestions made to me (by Justin):

1) Cold: These will be the dumb, never-fire but swarm and try to ram you enemies. Of course, careful about the things below: don't cluster them too closely together, or have them swarm you and stay RIGHT where you are, or it'll e impossible to move.

2) Mutate: these look more complex, & I think should therefore be the semi-intelligent, more precise, shooting-at-you enemies. Their motion will look more deliberate and less random than Colds, there will be fewer of them, they will never try to ram you, but will often shoot at you.

3) Red Blood Cell: These are completely nonintelligent entities, just obstacles, that never shoot or attack you; however since they move through the world, should still be governed by some kind of AI. I imagine that since they're blood cells, it would look cool if they sort of flow about in semi-formed groups, as if theyre caught in little currents or tides. Again, careful that if they're in groups, they don't get TOO close together that they start overlapping and such.

4) SARS: This, I think, would be another semi-intelligent type of enemy, with behavior similar to Mutate...perhaps you can tweak their "habits" so they act a bit different, we'll give them a different type of weapon..maybe, for example, MUTATE will move in groups while SARS moves alone, or SARS will try to surround you and fire from all sides while Mutate simply approaches, fires, & carefully backs off...something like that, but if you have a noticeable, specific type of behavior it would be really cool

5) White Blood Cell: Similarly to Cold, I'd think that these would not fire but only ram you. Like I said w/ SARS, getting White Blood Cell and Cold to look different would just be a matter of tweaking their behaviors so each has different looking habits, maybe cold is jittery and moves back and forth quickly while white blood cells flow more smoothly, calmy, slowly like red blood cells, until they decide to attack, of course.


05/13-15 - (Implemented AI for 5 different types of enemies)
____+ All five different AI's have been coded with their own unique behavior.
____+ NOTE: None of the 5 AI's can be controlled by the .ini files, just because we need very fine tuning of all the parameters, and chaning even one of the parameters messes up the AI behavior. (so I advice keeping it hardcoded)

____+ fixed up Enemy collision with the player, so now it just doesnt get 'absorbed' into the player (it bounces back)


-------------------- WEEK 8 ----------------------

05/18 -
____+ Need to polish up AI.
____+ Start helping in game engine.

____+ AI project due. No work done.

____+ AI done.
____+ Helped Justin/Andy in game engine.
____+ Found a number of bugs.... fixed a few
____+ PowerUp infrastructure created.


-------------------- WEEK 9 ----------------------

____+ Debugging / cleaning up

____+ Long coding and debuggin sessions w/ Justin and Andrew

____+ Player movement in room 2 and beyond bug fixed
____+ Player re-spawning in room 2 and beyond after dying bug found and fixed

____+ Blackout Bug Fixed .
____+ Enemy shooting accuracy.
____+ Basic draft for powerups.

____+ Big Coding session
____+ Boss AI
____+ Egola AI
____+ Added more randomness in the movement of far off enemies.
____+ Ramming fixed to bouncing
____+ Random PowerUp locations


-------------------- WEEK 10 ----------------------







documentation on how to use:
- InputAPI
- AIHandler API