TimeMachine Editor

In April 2014 I began work on my current project, Chronomancers.  While half of our team was using DigiPen’s Zero Engine for prototyping, I started work on my own engine and editor.  The TimeMachine Engine/Editor was written in C++.  It utilizes wxWidgets as a GUI framework, DirectX 11 for graphics, and FMOD Studio for audio.

Features I Worked On

  • Lua
    • Integrated Lua into engine utilizing meta data for bindings
    • Support for C++ user defined classes/enumerations
    • Additional safeguards for new Lua users
      • Detection of implicit global creation
      • Detection of usage of dangling Lua references
      • Detection of invalid enumeration values
  • In-engine Script Editor
    • Simple autocomplete for user-defined types/enums
    • Doxygen-like documentation
    • In-depth error reporting with inline annotations
    • Inline documentation accessible by hotkey
  • Gizmos
    • Translation, scale, and rotation with multi-object support
  • PropertyGrid
    • Display properties for user-defined types
    • Supports custom scripting component properties
  • Engine Architecture
    • Component-based design with support of C++ and Lua defined components
    • Integrated major systems (graphics, physics, audio) into main engine
    • Event dispatching system with support for event priority
  • Debugging
    • Scoped instrumented profiler with HTML/Text output (Example output)
    • Custom ASSERT/logging macros and functions
    • Automatic Lua stack tracing
    • Crash handler which produces dump files for postumus debugging