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 Microsoft Visual C++ 2010 Express and the DirectX SDK.
- Open source with MIT license on SourceForce
- Focus on simplicity, flexibility, and fast iteration
- C++ with object oriented architecture
- Huge streaming 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 with delta buffering
- Detects if assets changes while editing and refreshes them 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)
- All assets can be compiled into the exe (excluding music)
- 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
- Custom 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.
Use F4 to switch bettween the editor and the game. The editor uses a WASD hand
position. Use number keys to change which layer you are editing/selecting. You
can use right mouse to select multiple tiles/objects. By default you will select all layers but you can hold alt to select only the current layer. In tile edit mode you can draw
with the left mouse button. In object edit mode you can move objects and
change their attributes. Cut, copy, paste and undo/redo are all very functional.
When you switch out of edit mode back to the game the player will automatically
be moved to the mouse cursor to make iteration faster.
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