Game Engine
Project Description
My engine is a two dimensional platformer engine written in C++ using OpenGL, and the SOIL library. This engine was started as a side project while taking Game Design and Computer Graphics due to wanting to do more than was within the scope of the class.
Source
I have decided to make my project open source. The source is under Github for version control and the source is available at:
    https://www.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.
- Bots capable of pathfinding using A* search.
- Implemented using navMesh scheme, see the screen shot at the bottom of the page.
- Graph for searching is built in the following manner: A vertex for each platform, an Edge for each path from a navNode to another platform (note that this results in the possibility of multiple edges between the same verices in the graph).
- Models for costs:
- Path Cost: (horizontal distance to player + vertical distance to player ^ 2 + travel time + linear distance to dest platform ^ 2) * 10
- Heuristic: linear distance from given platform to destination * 100
- Multiples are used to bring both values into the 10-100 range on average
In Progress
- 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 playCompleted- 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?