Project Progress:
March 28, 2008:
- Compiled and ran a demo in Aszgard
April 13, 2008:
- Compiled and ran an OpenGL camera demo
April 20, 2008:
- Created a Vector3D class that stores a 3-D vector and implements vector
arithmetic
- Created a simple Camera class that stores its own position, line of sight,
and up vector
- Researched GLUT
- Created a main function that sets up GLUT and, for now, displays a triangle
April 23, 2008:
- Drew a 2-D grid for the game field
- Created a Snake class that represents the Snake
- Implemented a doubly-linked list of SnakeNode objects to represent the
Snake's body
- Drew the snake on the game field using GLUT and OpenGL functions
- Fixed overhead camera
- Implemented user input: Arrow keys move snake (in 2-D plane)
- SnakeNodes follow snake head's movement
- New classes:
- Snake
- SnakeNode
- SnakeWorld
- World
- Not Implemented Yet:
- Collision detection with walls/self
- Growing snake size
- Apples
- 3-D movement
- Camera movement
April 24, 2008:
- Collision detection with walls and snake body
- Snake can grow in size correctly (doubly-linked list of SnakeNodes
work properly)
- Timer that automatically moves the snake in forward direction every
timestep
- Functionality for increasing game speed
- Fixed bug where snake couldn't follow directly behind its tail
- Game ends cleanly before exiting
- Not Implemented Yet:
- Apples
- 3-D movement
- Camera movement
May 1, 2008:
- Added apples to game
- Snake keeps track of apples eaten
- Three sizes of apples that grow the snake a different amount
- Fully functional 2-D game
- Camera Control - can move camera about a sphere (centered at center of game board)
- New Classes:
May 2, 2008:
- Fixed a bug where an apple would not appear
- Game speeds up as player eats more apples
- Camera rotation speed also increases as game speeds up
- Extended the game into 3-D
- Option to draw relevant gridlines
- Walls on same x, y, or z coordinates of snake light up to assist in lining up the snake
- Drew background "box" around the world
- Two control schemes:
- Absolute: Six movement keys for North, South, East, West, Up (towards the sky), and Down (towards the ground)
- Snake-Relative: Four movement keys for Up, Down, Right, and Left relative to the snake's current facing and up vector.
- Game records number of apples eaten
- Fully playable 3-D demo
May 5, 2008:
- Drew an "up vector" for the snake's head
- Walls that the snake is adjacent to are big and red
- Fixed a bug with the snake's forward and upward orientation
- Two Camera modes:
- World View: player controls camera in a sphere around the world
- Snake View: camera sits in the head of the snake
- Implemented a very rudimentary Snake View camera
- Camera rotates (instead of just jumps) when snake turns
- Implemented turning the camera only to view other sides in snake cam mode
- Toggle between the two camera modes with 'c'
- Fixed a bug when the snake is first created
- Added a three second delay before the snake starts moving when the game begins
May 6, 2008:
- Fixed a bug where using "absolute" controls would mess up "snake-relative" controls
- Improved Snake View camera by putting the camera on top and a little behind the snake's head
- Improved looking around in Snake View mode to be smoother and support diagonal looking
May 7, 2008:
- As speed level increases, more apples appear at once
- Implemented a scoring system
- Draws the player's score to the screen
- After player loses, game restarts by pressing ENTER
May 8, 2008:
- Draws # apples eaten to the screen
- After player loses, displays a Game Over message
- Drew a pair of eyes on the snake head
- Added option to draw the game controls on the bottom right corner of the screen
- Increased the camera rotation speed
- SnakeWorld v1.00 finished!