🚀 DISSNELAND GAME
Github Repository: DISSNELAND GAME
Final Project for Course INT2215
- Student Name: Nguyễn Việt Cường
- University: University of Engineering and Technology - VNU Hanoi
General Description of the Game
-
A top-down third-person game where the player controls a swordsman to eliminate all enemies to advance to the next level.
-
Controls:
- Move:
W A S D
- Attack:
J
- Dodge:
K
- Move:
-
Three types of enemies:
- Flying Eye: Moves within a fixed area and can shoot projectiles.
- Skeleton: Uses a sword for melee attacks, has a wide movement range, can hunt the player and avoid obstacles.
- Boss: Wields an axe, has a teleportation skill to chase the player, moves across the entire map, and is immortal.
- Items dropped when an enemy is defeated:
- Diamond Potion: Restores 100% health.
- Royal Potion: Doubles attack damage for 10 seconds (not stackable).
- The player loses when their health reaches zero.
- On the second map, if health drops below 40%, pressing
E
initiates a truce, resulting in a game win.
Implemented Features
Game Menu
- The main menu appears when the game starts with the following options:
- Start: Begin the game.
- Tutorial: View game instructions.
- Sound ON/OFF: Toggle sound.
- Quit: Exit the game.
- Pause menu, accessed by pressing
P
:- Continue: Resume the game.
- Menu: Return to the main menu.
- Quit: Exit the game.
- Game Over menu, appears when the player loses:
- Menu: Return to the main menu.
- Quit: Exit the game.
- Game Win menu, appears when a successful truce is made:
- Menu: Return to the main menu.
- Quit: Exit the game.
- The player can exit the game at any time by pressing
Esc
or clicking the close button on the game window.
Knowledge Applied
- Pointers
- Static arrays, vectors, bitsets, maps, algorithms from the standard library
- Classes and templates
- Algorithms:
- Collision detection.
- Camera tracking the player.
- Linear interpolation for smoother movement and hit reactions.
- Implementing attack, dodge, and hit mechanics.
- Using BFS pathfinding to allow enemies to navigate around obstacles and efficiently reach the player while staying within their designated range.
- SDL2 Libraries Used:
SDL
SDL_image
SDL_ttf
SDL_mixer
Installation and How to Play
- Open
main.exe
to play. - Alternatively, open the terminal, navigate to the game folder, and run
makefile
.
Future Development
- Expand the storyline, add new maps, enemies, and mechanics.
- Introduce Endless Mode and Two-Player Mode.
References
- Learned and referenced basics from the YouTube channel Let’s Make Games.
- Audio and visual assets were sourced freely from the internet.
- Everything else was self-developed.
Lessons Learned from the Project
- Gained an overview of project structure.
- Improved understanding of classes and library usage.
- Applied algorithms to enhance game mechanics.
- Developed problem-solving skills.