This project's canonical repositories is hosted on Gothel
Software.
Goals
This project likes to demonstrate a complex system written in modern
C++ for our computer science class.
Besides management of animated sprite graphics, maze environment and
tile positioning, the interesting part might be the ghost's state
machine and their movements.
To implement the original pacman game behavior like weighted tile
collision, ghost algorithm, etc. - we have used the following documents
for reference
With the -bugfix mode enabled, see Usage
above, the original puckman behavior (bugs) are disabled.
The list below shall be updated in case we further the implementation
and kept in sync with include/pacman/globals.hpp.
By default the original pacman behavior is being implemented:
weighted (round) tile position for collision tests
pinky's up-target not 4 ahead, but 4 ahead and 4 to the left
...
If false, a more accurate implementation, the pacman bugfix, is
used:
pixel accurate tile position for collision tests
pinky's up-traget to be 4 ahead as intended
...
Implementation Status
Done
Maze
Read maze specification from text file
Sprites
Speed per tile accurate key-frame animation
Weighted tile position from floating position
Renderer fps derived step width, i.e. sub-tiles
Sync speed by dropping tick, every n-frames
Ghost AI
Scared RNG target
Scatter, chase and phantom targets
Next direction_t algo
Grouped wave switch of scatter, chase and frightened
Exit home using local and global pellet timer
PRNG with an identical seed value every new level and life for
predictable results
Adjust tunnel speed
No turning up in Red-Zones if chasing or scattering
Pacman
show eaten ghosts score onscreen (FREEZE)
Level specification (per level)
Timings
scatter and chase duration per phase
frightening/powered duration
Speed
pacman normal on empty tile or eating
pacman powered on empty tile or eating
ghost speed normal, frightening or in tunnel
Score
Score
ghost 1-4 per power pellet
Sound
Using wav chunks, mixed from seperated channels
To Do
Ghost AI
Elroy 1+2 mode
Score
Fruits / Bonus
Pacman
Lives
Freeze pacman only for 3 frames after eating power pellet
Sound
Use lossy formats
Complete samples
Extension
Second player moves a ghost
Maze
Render maze itself from maze-spec file
Persistent game state
Save/load game state
Screenshot
Record video
Media Data
The pixel data in media/playfield_pacman.png and
media/tiles_all.png are copied from Arcade
- Pac-Man - General Sprites.png, which were submitted and created by
Superjustinbros and assumed to be in the public domain.
Changes
0.0.1
Initial commit with working status and prelim ghost algorithm.