Mutiny - Game Engine

Differences between Mutiny and Unity

Mutiny aims to keep the API as close as possible to Unity 4.x. However, there are a few minor differences documented below.

Getters and Setters

Whilst properties can be emulated in the C++ language, it was deemed better practice (and less confusing) to replace the properties in the Unity / C# implementation with standard C++ getters and (where required) setters. For example:

gameObject.transform.rotate(new Vector3(0, 1, 0) * Time.deltaTime);

Can be achieved with the following.

getGameObject()->getTransform()->rotate(Vector3(0, 1, 0) * Time::getDeltaTime());

Entry Points

With Mutiny, the developer still has the flexibility of entry points such as int main(int argc, char* argv[]) and can initialize Mutiny and start the main loop manually. In Unity, this is taken care of by the build process where you then kick off the project via a GameObject. This decision was made to allow developers to integrate the Mutiny engine with many existing libraries and GUI toolkits if desired which is one of the key benefits of using C++ and something Unity lacks. An example of this is as follows.

// Mutiny is exception safe so exceptions can be caught and handled properly
int main(int argc, char* argv[])
{
  mutiny::engine::Application::init(argc, argv);

  GameObject* cameraGo = new GameObject("Camera");
  cameraGo->addComponent();

  mutiny::engine::Application::run();

  return 0;
}




(Return to Mutiny Home Page)

Copyright © 2014 Karsten Pedersen. All Rights Reserved.