This project is a 2D dungeon game maker implemented with a component pattern and many essential structures for other extensions. With a low-coupling programming principle, the game could be easily used as a game engine that supports various 2D game development.
Here is a list of what we have did in this project.
We implemented a procedural map generation and an auto-tiling system.
With a binary space partitioning tree, we devide the map area randomly into leaf spaces and generate random rooms and hallways within these spaces. The auto-tiling functions then recognize all corners, floors and directional wall sprites.
This short clip shows the new map generation.
Learn more about map generation here.We implemented an enemy AI with pathfinding.
The enemy comes with a pathfinder component for chasing player or traveling to a random destination.
The enemy changes between walk and rest states based on fixed time schedule. The player detection runs with highest priority, and will change the enemy state to attack when the player is in sight.
Learn more about A* algorithm here.
We implemented a simple Raycast() function for detecting player.
The collision check method is adapted from the Separating Axis Theorem (SAT) in Austin Morlan 's tutorial.
The current build is still more "game-like" instead of "engine-like". But, most of the game is coded as we are using an engine, which makes the update a easier task. For example, all sprite loading and resource configurations are written in Config.hpp, with strict formats. Also, all the game objects, including player and enemy, can be easily updated with new sprites, attributes and behaviors (like collider). (2 week)
Add A better GUI system, the engine could looked more like an application build that support a relatively complete development work. This could support managing game objects as in a file system, managing resources like sprite and configuring tile palette. (2 week)
Create more possibilities for other users to write all kinds of scripts changing the game state. For example, be able to specify game ending by writing purely in scripts. (2 weeks)
Allow player to control the engine behavior, like switching between scenes, to support game start/end coding.(1 week)
So that users could drop more textx/images and even buttons to create their own menus. (1 week)
hu.ya@northeastern.edu
Zhou Hangzhou.han@northeastern.edu
Shang Lyulyu.sha@northeastern.edu
Qikun Xuxu.qik@northeastern.edu
Jiangchuan Wangwang.jiangch@northeastern.edu