The Frank Engine is an open sourced game engine written in C++. The mission is to have a fun and fast way to create large open world games with state of the art 2D graphics. Everything necessary to create a fully featured game is included: physics (Box2D), rendering (DirectX), level editor, dynamic lighting, particle system, sound, music (Ogg Vorbis), gamepad input, GUI, and debug console. The code is well documented and includes a simple starter project to build on.
To download a snapshot of the latest release or access the SVN repository you can visit the Frank Engine project page on SourceForge.
- You can also download the Frank Engine Demo, which is an example project that shows some of the basic features. This has all the engine features like the integrated level editor and debug console for you to play around with.
- To compile games for the The Frank Engine you will need to install Visual Studio Community 2017.
- Make sure to install components “Windows Universal CRT SDK” and “Windows 8.1 SDK” which may not be selected by default.
- Also you will need the DirectX SDK.
- Open source with MIT license on SourceForce
- Focus on simplicity, flexibility, and fast iteration
- C++ with object oriented architecture
- Supports huge streamable worlds
- Deferred lighting, dynamic soft shadows, emissive, specular, and normal maps
- Integrated physics using Box2d
- Rendering for 2D sprites, deformable terrain and particle system
- Integrated level editor for faster iteration
- Sub frame interpolation using fixed time step
- Detects if assets changes and refreshes automatically
- Stereo sound effects using Direct Sound
- Music using Ogg Vorbis
- Input supports keyboard, mouse, gamepad, and Xbox 360 controllers
- Integrated with The DirectX Utility Library (GUI, fonts, sound, etc)
- In game debug console and debug primitive rendering system
- Dev environment is Microsoft Visual C++ 2010 Express
- Graphics SDK is Microsoft DirectX 9
- Uses precompiled headers for faster compile times
- Native wide character support
- Integrated tile sheets support
- Font rendering using BMFont
- User friendly editor features including cut, copy, paste, undo, and redo
Basic Engine Commands
These commands work by default in all games made using Frank Engine, so you can use them with pretty much ever game I’ve made. In some games you will need to type “devmode 1” in the debug console to enable all the commands.
- Tilde – Brings up the debug console where you can enter debug commands. Try typing “help” for more info. There are a slew of commands, everything from vsync to tweaks for specific gameplay variables.
- F1 – Shows debug information like frame rate and engine stats.
- F2 – Shows an Box2D debug physics overlay.
- F3 – Reloads textures and sounds from disk.
- F4 – Toggles edit mode, allowing a designer to create the terrain and place objects.
- F5 – Takes a screenshot and saves it to the snapshots folder.
- F6 – Opens up the profiler to help track where frame time is being spent.
Pressing F4 will toggle between the editor and the game. Whenever you switch back to the game, the player will automatically be moved to the mouse cursor to make iteration faster.
The top right shows which layer you are editing/selecting, click on a layer number to change it, or use the number keys. On a tile layer you can draw and change tiles for visual and collision. On an object layer you can move objects and change their attributes. Select the tile or object type to draw in the pick box in the lower right. Cut, copy, paste and undo/redo are all very functional.
Draw tiles and select objects using the left mouse button. Drag right mouse button to select multiple tiles/objects. By default this will select all layers but you can hold alt to select only the active layer.
1 – Background layer
2 – Foreground layer
3 – Objects layer
Middle Mouse (or Left Mouse + Tab) – Move camera
Mouse Wheel (or Right Mouse + Tab) – Zoom camera
Mouse Right – Rectangle select
+ Alt – Single layer select
+ Shift – add to selection (only for objects)
+ Ctrl – remove from selection (only for objects)
Mouse Left – Draw tile data & select/deselect
+ Shift – Draw line
+ Ctrl – Eyedropper
+ Mouse Right – Block erase
Alt – Block draw
Z – Flood fill
X – Flood erase
Mouse Left – Object select
+ Ctrl – Scale object (only can be done when 1 object is selected)
+ Shift – Rotate object (only can be done when 1 object is selected)
Z – Add object
X – Remove object
WASD – Move in quick pick box
Ctrl+Z, Y – Undo, Redo
Ctrl+X, C, V – Cut, Copy Paste
Ctrl+S, L – Save, Load
Shift+Ctrl+C,V – Copy, Paste the entire patch under the mouse
G – Toggle grid
B – Toggle block edit