| Timeline | char | March 10, 2007 2:28 PM |
| Feb 5, 2006 -- Concept of using "States" instead of giant decision trees. Brilliant. Also, should make States, Predicates, etc. into single-instances with managers. A State should be able to switch to a new state, and update a track with the action of its choice. (Actor ultimately asks the current state for its state recommendation, then switches if necessary, killing all goals of the previous state, and whatever the current state is updates the tracks)
Feb 6, 2006 -- Rewrote Predicates as single-instances. Feb 7, 2006 -- Completed the "State" overhaul. Revamped/optimized Decision Trees for returning only the highest weighted decision. Got rid of the ActionDistribution class, since there won't be any weighted-random decisions any more. All indeterminism must reside inside the Actions themselves. Feb 9, 2006 -- Game to singleton class with features/game-play settings. Camera interpolates smoothly between perspectives when tracking different objects. Ball has cool tracking model. States can restrict "user direction" control... previously the mouse always override the intended look direction when user-controlled. Added State inheritance (copies rules from parent state). Feb 10-11, 2006 -- Completed the RunRoute action (Route and Playbook Loader, and WayPoint classes were done earlier), Seek to line (this is not "follow line", it's like run to a line) minor variation on Seek. Show Routes before the snap with the right mouse button. Feb 11, 2006 -- Play Selection in huddle using mouse-wheel. Reworked Camera follow mode again to work better with the auto-selection of the receiver closest to line-of-sight (ball tracking, when enabled, is now slightly less cool than before). Throwing is a two-button process now: Hold the left button up to get the ball ready and lock onto a receiver (still need to update the player locking besides just head-tracking), press the right mouse button to throw the ball. Release the left mouse button to fake/bring the ball back down. Feb 16, 2006 -- Implemented basic zone defense by calculating a weighted center of mass of relevant receivers' (projected) positions. The home position to line up is different than the zone-center. Need to revamp Route class using some ideas from the Zone class. Feb 18, 2006 -- Finally got around to the referee's touchdown and incomplete animations (crude though). The game is "playable" in a sense that completions move the ball, and touchdowns result in a change of possession. Feb 20, 2006 -- Keep track of score and down. Throwing now depends both on your intended target and on where you are facing when you release the ball. Enforced field boundaries. Some user control on defense, just to make defense a little less boring, still needs work. Quarterback sneak is no longer invincible (still legal to run before the 4 second rush count though). Added crude man defense, just for the rusher to use temporarily. Feb 22, 2006 -- Modified the throwing controls, refined some plays, and added tagging/tackling animation to the defenders. Feb 23, 2006 -- Worked out the basics for the IK system on paper. Feb 24, 2006 -- Implemented IK control of segment-chains. Started implementing the joint constraint system (after some more revision). The new Action class for catching is coded up, but the IK has to all come together before it will work. I think my joint constraint system is kind of interesting, because instead of expanding ball & socket joints into two or three revolute joints, I'm using conic constraints independently on the forward and normal vectors. I'll describe it better once it's fully implemented, but the nice thing about it is that it keeps the joints simple for keyframe animation, while still allowing IK to be plugged in easily. Feb 26, 2006 -- IK is in place except for the finishing touches on the joint constraints. Feb 28 thru Mar 2, 2006 -- Reworked and simplified IK for pure IK (previously had a dynamics-simulation approach, which was unnecessarily complicated). Fixed some constraint glitches, it's pretty cool now. Modified the Play/Route classes. When scripting plays the routes must be preceded by "left" or "right" now. Routes are defined to the left, and mirrored if you specify right (so that absolute points flipped properly). Mar 4 & 5, 2006 -- Touched up little things. Added some plays. Adjusted catching behavior. Added tagging and ball-deflection (they just use the basic catch/reach behavior with some different parameters). Tweaked the intersection-point prediction (for catching), for the upper body IK (steering still uses old model, and it has problems). Gave more control to the user on where to throw. Mar 9, 2006 -- Just tweaking some little stuff. Receivers try to adjust to catch the ball out front, but they don't turn around yet if they have lots of time to get to the ball. F4 puts the game on auto-pilot. I'm working out some math for the receiver selection, so the AI opponent should get some skillz on offense pretty soon. Textures and shaders are coming soon, but the graphics are really secondary until after I finish my machine-learning project. Mar 16, 2006 -- Haven't worked on it in a week. Added a TextureManager. To load PNGs I used Ben Wyatt's glPNG library. The manager loads a texture definition file, which abstracts the texture references from the actual image file names, and contains info about how the texture should be used. The actual texture data is loaded only if necessary (the mesh will request the texture ID during initialization if it is going to use it, like TurfTextureID = TexMan->GetTextureID("field_turf") ). Mar 24, 2006 -- Improved the forecasting for tracking/tackling players using a minimum predicted interception time calculated using your estimated average speed (currently at 7 yards per second, but may be reduced to pursue conservatively). Gave the center of the zone an initial weight of 1.0 (controls how well defenders stay "at home") |
|