Game Engine
This project is the mainstay of my work for the MP course, see below for more information.
Project Description
My engine is a two dimensional platformer engine written in C++ using OpenGL, SOIL library, and the FMod sound system. This engine was started as a side project while taking Game Design and Computer Graphics due to feeling that the classes were not moving fast enough.
Source
I have decided to make my project open source. The source is under Github for version control and the source is available at:
github.com/andlindsay/2dEngine
The project supports x86 and x64 on both Windows and Linux.
Windows
Builds are available via the Visual Studio solution file included in the Source directory. Open the solution and select one of the four configurations, the options are Debug and Release for both x86 and x64.
Linux
Builds use the gnu make system. To compile on Linux there are a few libraries required, these dependencies are currently being moved into the project itself so that the source for the third party libraries can be compiled locally. After these dependencies have been resolved simply cd into the Source directory and run a make.
Features
Current
- Input handling and movement.
- Multi-layer rendering.
- Collision detection and resolution.
- Editor mode for editing levels.
- Level loading/saving to/from xml format.
- Basic projectiles.
- Basic bots capable of simple linear pathfinding.
In Progress
- More sophisticated pathfinding (A*).
- Implementing A* pathfinding using the current navMesh scheme, see the screen shot at the bottom of the page.
- Need to generate a nav mesh describing what is reachable from where.
- Need to settle on a heuristic for the pathfinding algorithm, using time for path cost.
- Different behavior types: aggressive, defensive, passive.
- Weapon implementation.
- Derive from projectile base class for unique weapon types.
- Add an inventory.
- Documentation
- Looking into doxygen for javadoc like comments and docs
- Possibly class diagrams as well.
- Add in combat, melee and ranged preferably.
- Different character base classes with significant differences.
- Movement ability of melee greater, ranged has better perception, etc.
Future Plans
- Networking.
- Ability to host through interface or command line server program.
- Weapon implementation.
- Derive from projectile base class for unique weapon types.
- Add an inventory.
Idea Dump
- Allow different zoom levels in editor and play
- shift key to walk
- limit to 1 wall jump (0 if ranged?) initially, skills can increase ability to slide
- lighting
- expand platforms to 3rd dimension to trick lighting into creating shadows
- editor
- add grab points to resize platforms
- drop down for layer selection for objects
- support alpha on custom textures
- way to pkg textures w/ level
- enemies with dynamically generated actions
- not just 1 jump height
- update level format to something capable of storing images, sounds, etc
- adaptive ai, learn how player plays and change behavior accordingly
- dev blog
- grappling hook?