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)
DETAILS:
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 ----------------------
05/05
- 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.
05/07
- Start preliminary AI integration for testing.
- Fixing enemy class to encorporate AI, collision detection
- Restructuring AIHandler interface to better integrate.
05/09
- Decent Enemy AI movement complete
____Details:
____+ 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
____Details:
____+ 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 ----------------------
05/11
- 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.
05/20-23
____+ AI project due. No work done.
05/24
____+ AI done.
____+ Helped Justin/Andy in game engine.
____+ Found a number of bugs.... fixed a few
____+ PowerUp infrastructure created.
-------------------- WEEK 9 ----------------------
05/25
____+ Debugging / cleaning up
05/25
05/26
____+ Long coding and debuggin sessions w/ Justin
and Andrew
05/28
____+ Player movement in room 2 and beyond bug
fixed
____+ Player re-spawning in room 2 and beyond after
dying bug found and fixed
05/29
05/30
____+ Blackout Bug Fixed .
____+ Enemy shooting accuracy.
____+ Basic draft for powerups.
05/31
____+ 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 ----------------------
06/01
TODO
- TESTING.
documentation on how to use:
- InputAPI
- AIHandler API