AGE is a simple 2D console game engine runs in UNIX using third library Ncurses.
- You need to install
ncurses
using the following commandsudo apt-get install libncurses5-dev libncursesw5-dev
cd
to thebuild
directory and typemake
- Once it compiles, runs the executable called
vm
.
- see
/doc/uml.pdf
for more details
- Controller
- ✔
Controller
class - ✔Ncurses Adapter
- ✔Timer
- ✔Gneral engine class
- ✔
- Model
WindowModel
- mutiple inheritance from
WindowModel
BoardWindow
StatusWindow
- mutiple inheritance from
View
CameraView
- provide two different printing algorithms
TextView
- 光栅化 - Rasterization
- Painter's Algorithm
- advantage
- disadvantage
- time & space complexcity
- Limitations (cyclic overlap or piercing polygons)
- Reverse Painter's Algorithm
- Z-buffer Algorithm
ObjectModel
- nonCollidableObject
- collidableObject
- object can have different bounding (not just Rect, but cycle, or more complex geometry, so I need an abstract class named
BoundingBox
as a base class)
- Motion & Gravity
- Collision
Quadtree
- Game1
- Game2
- trivial enhancement
- see
/doc/plan.md
for more details
- Quadtree - for fast collision detection (
log(n)
)- brute force is
O(n^2)
.
- brute force is
- displayView: recursively displayEachView OR simply display a 2D array
- Camera: How camera works perfectly with WindowModel
- can
GameWindow
contains mutipleBoardWindow
- can
- board type: view and solid
- Timer: encapsolate into controller
- ✔Object: gravitation
- ✔Model: Do we need another
WindowModel
inheritances fromModel
? - ✔Collision: enhancement - brute force detection vs. Quadtree/octree detection
- Enhancement - using Decorator Pattern for switching
- file I/O (support save and load)
- colour
- QuadtreeGrid
- multiple controller
- multiple scenes (muti-models may exists)
- Event System ? (probably no need for this)