Skip to content

Outputs

Roderick Kennedy edited this page Jul 31, 2016 · 1 revision

The outputs are:

  • The Main SDK
  • The Engine Plugins

Main SDK

SDK Source

The full SDK source repository is here. Source code licensees have access to this. They get access by putting their Github username in their Simul Account.

SDK Installer

We create SDK installers that put the trueSKY SDK to a specified directory on the user's machine.
These will install the Simul headers, static and dynamic libraries (.lib and .dll files), and also the source code for the code samples. The SDK installers are mostly for 30-day trials, because SDK customers will normally use a source code licence.

Platform Automated Build Download
x64 and Win32 Jarvis: Releases Installers Download
PS4 Jarvis: Simul PS4 Download
Xbox One Jarvis: Simul Xbox One Download

UE4 plugin

Epic supplies UE4 both as binary installable versions, and as full source code on Github. We maintain a branch of the UE4 source code. There are two parts to the UE4 plugin. On the UE4 side, The specific code for our plugin goes in the directory Engine\Plugins\TrueSkyPlugin. This also contains data and shaders. There are actually two plugins - the game-side plugin, whose source is in TrueSkyPlugin/Source/TrueSkyPlugin, and which is always in use; and the editor plugin in TrueSkyPlugin/Source/TrueSkyEditorPlugin, which is only loaded by the Unreal Editor, never by a game. These are built as dll's for the editor exe to load, and as static libs for games to link.

This plugin code launches the trueSKY renderer dll, and the trueSKY UI dll. These are built from our own codebase (i.e. in the Simul repo). In UE4, these are deployed to Engine/Binaries/ThirdParty/Simul.

i.e. In UE4, a plugin is hosted within the engine's main source tree - contrast with Unity below.

We also have minor modifications that we made to these files:

  • Engine\Source\Runtime\Renderer\Private\DeferredShadingRenderer.cpp

  • Engine\Source\Runtime\Renderer\Public\RendererInterface.h

  • Engine\Source\Runtime\Renderer\Private\RendererPrivate.h

  • Engine\Source\Runtime\Renderer\Private\SceneRendering.cpp

  • Engine\Source\Runtime\Renderer\Private\RendererScene.cpp

  • Engine\Source\Programs\AutomationTool\PS4\PS4Platform.Automation.cs

  • Engine\Source\Programs\AutomationTool\Win\WinPlatform.Automation.cs

  • Engine\Source\Programs\AutomationTool\XboxOne\XboxOnePlatform.Automation.cs

We create plugin installers that put the plugin to a UE4 installation. This excludes the above modifications to the main UE code, which are optional, but useful.

The plugin is built here

Unity plugin

Unity Plugin Source

In Unity, a plugin is just files in a project folder. So we maintain a Unity project in the main Simul repo, in Simul/Plugins/Unity/Project5. In Unity, a project keeps its content in the Assets folder. So we have the folder Project5/Assets/Simul. Here there are C# .cs files which handle the Unity engine-side behaviour, and which launch the trueSKY renderer dll, and the trueSKY UI dll. The editor-specific C# files are in Project5/Assets/Simul/Editor

Notes on the plugin

The same plugin libraries are used for all different engines. The rendering library is:

  • TrueSkyPluginRender_MT.dll, for Win32 and x64
  • TrueSkyPluginRender_MD.dll, for Xbox One
  • TrueSkyPluginRender.prx, for PS4

This dll is statically-linked, so it has no external dependencies (except that the Xbox One version is dependent on the dynamic runtime, hence the _MD suffix).

The UI library is TrueSkyUI_MD.dll, for Win32 and x64, and links dynamically with Qt5CLucene.dll, Qt5Core.dll, Qt5Designer.dll, Qt5Gui.dll, Qt5Help.dll, Qt5Network.dll, Qt5OpenGL.dll ,Qt5Sql.dll ,Qt5Widgets.dll ,Qt5Xml.dll ,SequencerQtWidgets_MD.dll ,SimulBase_MD.dll ,SimulClouds_MD.dll ,SimulCrossPlatform_MD.dll ,SimulGeometry_MD.dll ,SimulMath_MD.dll, SimulQtWidgets_MD.dll, and SimulSky_MD.dll.

The _MD suffix indicates that it uses the dynamic runtime (this may require end-users to install the Visual Studio prerequisites). The UI is linked dynamically to comply with the terms of the LGPL for Qt, so that we don't need to pay a licence fee to use Qt in our products.