Description
A 2D “Logic” game engine based on the JC++ platform and Box2D, being independent of any other engine or platform and being currently focused on the 2D platformer genre. Together with the Tiled open source map editor and python based tools this engine currently provides a development framework for creating highly customizable 2D Platformer games on their logic side, which can be connected to popular engines, such as Unity 3D or Cocos2D-x, in order to achieve high quality 2D or 2.5D games for any platform.
Video
(the video bellow shows some features of the current version of the 2DL Engine running on iPad 4. The last map shown is endless with procedurally generated parts, but repetitive since it was based on few pre-defined variation pieces)
Skills
- C++ programming
- Game engine architecture
- 2D Physics with Box2D
- Cocos2D-x (basic usage)
Environment
- Visual Studio
- Tiled map editor
- Marmalade C++ (for android builds)
- XCode (for iOS builds)
- Perforce
Role
Engine Developer at my own studio
Development Period
Currently on development. The features listed on this page were developed from July, 2015 to April, 2016.
Project Status
This project is currently on development, but it shares priority with others, which complements this one.
Currently Supported Features:
Level Designing Framework and Several Related Features
By using the popular and open source Tiled map editor, 2D levels can be created for the 2DL engine, including with contour tracing for properly generating physics shapes from tilemaps. Going beyond of what is usually provided for designers, it is possible to have entire and fully featured levels pre-generated through Python tools, based on several pre-defined settings, providing an impressive shortcut on the designing process.
The runtime level management system allows “close to infinity size” levels by dynamically loading only the currently needed level pieces. Endless levels and procedurally generated levels are also supported on runtime and by the designing framework.
Level edition features currently supported by the 2DL engine are lots of platform types, including moving, unstable, impulse (on player), falling (when stepped) and rotating platforms and also “composed” platforms involving Box2D joints for combining more than one dynamic/moving platforms in several ways. All these support their “one-way” platform variation. In addition, pushable objects, ladder variations, rope, hook spots, grab spots, bridges, conveyer belts, ziplines, water, sink, wind and portals are also supported.
Highly Customizable And 100% Physics Based Player Controller
After an extensive gameplay research, involving several of the top 2D platformers for PC, iOS , SNES, GBA and NDS, a highly customizable player controller component based on Box2D dynamic object physics. By modifying some of the dozens of settings available it is possible to make the character gameplay controlling be practically identical to that seen on Mario, or Shovel Knight or on Goblin Sword, or on Castlevania, or on Meat Boy or on almost any other you can imagine. Famous issues when implementing 2D character controllers with realistic physics were all solved through high quality approaches that kept the code flexibility.
Additional features implemented, beyond the basic moves expected under different friction and inclination, are multiple jumps (such as double jumping), crouching, rolling, wall sliding and jumping from, ladder climbing and jumping from, edge grabbing and climbing up (including for several types of moving platforms), rope climbing, dangling and jumping from, grabbed moving, swimming, jetpack flying and “hook based moving” (Mikey Hooks game style).
Highly Customizable Camera Controller
Strongly inspired by this wonderful gamasutra article (http://tinyurl.com/2DPlatCam), several 2D platformer style cameras were implemented. By properly arranging these settings it is possible to support the following camera types and features listed by this article: position-locking, camera-window, position-snapping, speedup-push-zone, speedup-pull-zone, lerp-smoothing, static-forward-focus, forward-focus, region-based-anchors, region-focus, cue-focus and camera-shake and dynamic zooming in/out.
Basic UI and Input logic
Supports the definition of UI layers with the basic components that may be related with the gameplay logic, in special, input components. No UI visual and rendering aspects are supported, the point here is to handle the basic logic behind menu systems and allow gameplay logic affected by them to still being supported at the 2DL engine side. This way UI/input elements such as buttons at the current UI layer, a health bar, an ammo counter or an entire item store can still have their logic 100% handled at the 2DL side, while visually designed and rendered by a rendering engine, such as Cocos2d-x, Unity, Game Maker or Unreal.