Engine

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.

Installing

Features

  • 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.

Editor Help

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.

Layer Select
1 – Background layer
2 – Foreground layer
3 – Objects layer

Camera
Middle Mouse (or Left Mouse + Tab) – Move camera
Mouse Wheel (or Right Mouse + Tab) – Zoom camera

Selection
Mouse Right - Rectangle select
+ Alt – Single layer select
+ Shift – add to selection (only for objects)
+ Ctrl – remove from selection (only for objects)

Tile Edit
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

Object Edit
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

Shortcuts
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

13 Responses to Engine

  1. Pingback: 2D Light Mapping | Killed By A Pixel

  2. McFunkypants says:

    Wonderful work! Thanks so much for being awesome, using the MIT license, and creating something truly impressive. Good luck at the upcoming Ludum Dare!

    - McFunkypants

  3. Jeremy Stark says:

    This looks amazing! Love the lighting work, can’t wait to try it out! Good luck in Ludum Dare!

  4. Pingback: Dark World Post Mortem | Killed By A Pixel

  5. Pingback: (R,G,B) – Postmortem | Killed By A Pixel

  6. Gerald Howes says:

    i just tried compiling this one vs2013 but all the lighting is messed up
    how can i fix this please

    • Gerald Howes says:

      same with 2010
      using win7

    • Frank says:

      I am using Visual Studio Express 2010 with Win7. First try updating both your graphics driver and DirectX. Then verify that the pre-compiled version of my engine demo looks correct. If that doesn’t work you will need to be more specific about the problem you see.

      • Gerald Howes says:

        precompiled game works. dxjune10 is installed correctly. driver updated to latest. here is a screenshot of my problem. http://imgur.com/9Q2ZW6U

        • Frank says:

          That is weird. Did you download the project directly or sync to the repository? The only thing I can think of is if you aren’t up to date and it is a bug that is now fixed.

        • Frank says:

          I’m not sure what could cause that. Looks like the light buffers aren’t being cleared properly. I’ve tried building on a few other pcs and it seemed to work fine. Can you send me the exe?

  7. Gerald Howes says:

    v0642 not working
    v064 not working
    v0533 working

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>