diff --git a/Templates/BaseGame/game/core/core.module b/Templates/BaseGame/game/core/core.module
new file mode 100644
index 000000000..5318ce1f3
--- /dev/null
+++ b/Templates/BaseGame/game/core/core.module
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/Templates/BaseGame/game/core/core.tscript b/Templates/BaseGame/game/core/core.tscript
new file mode 100644
index 000000000..07122e787
--- /dev/null
+++ b/Templates/BaseGame/game/core/core.tscript
@@ -0,0 +1,86 @@
+
+function CoreModule::onCreate(%this)
+{
+ // ----------------------------------------------------------------------------
+ // Initialize core sub system functionality such as audio, the Canvas, PostFX,
+ // rendermanager, light managers, etc.
+ //
+ // Note that not all of these need to be initialized before the client, although
+ // the audio should and the canvas definitely needs to be. I've put things here
+ // to distinguish between the purpose and functionality of the various client
+ // scripts. Game specific script isn't needed until we reach the shell menus
+ // and start a game or connect to a server. We get the various subsystems ready
+ // to go, and then use initClient() to handle the rest of the startup sequence.
+ //
+ // If this is too convoluted we can reduce this complexity after futher testing
+ // to find exactly which subsystems should be readied before kicking things off.
+ // ----------------------------------------------------------------------------
+
+ new Settings(ProjectSettings) { file = "core/settings.xml"; };
+ ProjectSettings.read();
+
+ ModuleDatabase.LoadExplicit( "Core_Rendering" );
+ ModuleDatabase.LoadExplicit( "Core_Utility" );
+ ModuleDatabase.LoadExplicit( "Core_GUI" );
+ ModuleDatabase.LoadExplicit( "Core_Lighting" );
+ ModuleDatabase.LoadExplicit( "Core_SFX" );
+ ModuleDatabase.LoadExplicit( "Core_PostFX" );
+ ModuleDatabase.LoadExplicit( "Core_GameObjects" );
+
+ exec("data/defaults." @ $TorqueScriptFileExtension);
+ %prefPath = getPrefpath();
+ if ( isFile( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension ) )
+ exec( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension );
+
+ // Seed the random number generator.
+ setRandomSeed();
+
+ // Parse the command line arguments
+ echo("\n--------- Parsing Arguments ---------");
+ parseArgs();
+
+ // The canvas needs to be initialized before any gui scripts are run since
+ // some of the controls assume that the canvas exists at load time.
+ createCanvas($appName);
+
+ //load canvas
+ //exec("./console/main." @ $TorqueScriptFileExtension);
+
+ ModuleDatabase.LoadExplicit( "Core_Console" );
+
+ // Init the physics plugin.
+ physicsInit();
+
+ sfxStartup();
+
+ // Set up networking.
+ setNetPort(0);
+
+ // Start processing file change events.
+ startFileChangeNotifications();
+
+ // If we have editors, initialize them here as well
+ if (isToolBuild())
+ {
+ if(isFile("tools/main." @ $TorqueScriptFileExtension) && !$isDedicated)
+ exec("tools/main." @ $TorqueScriptFileExtension);
+ }
+
+ //This is used to build the remap keybind sets for the different actionMaps.
+ $RemapCount = 0;
+}
+
+function CoreModule::onDestroy(%this)
+{
+
+}
+
+//-----------------------------------------------------------------------------
+// Called when the engine is shutting down.
+function onExit()
+{
+ // Stop file change events.
+ stopFileChangeNotifications();
+
+ ModuleDatabase.UnloadExplicit( "Game" );
+}
\ No newline at end of file
diff --git a/Templates/BaseGame/game/tools/tools.module b/Templates/BaseGame/game/tools/tools.module
new file mode 100644
index 000000000..f680e3e03
--- /dev/null
+++ b/Templates/BaseGame/game/tools/tools.module
@@ -0,0 +1,14 @@
+
+
+
\ No newline at end of file
diff --git a/Templates/BaseGame/game/tools/tools.tscript b/Templates/BaseGame/game/tools/tools.tscript
new file mode 100644
index 000000000..c9e0e01f5
--- /dev/null
+++ b/Templates/BaseGame/game/tools/tools.tscript
@@ -0,0 +1,26 @@
+
+function ToolsModule::onCreate(%this)
+{
+ // ----------------------------------------------------------------------------
+ // Initialize core sub system functionality such as audio, the Canvas, PostFX,
+ // rendermanager, light managers, etc.
+ //
+ // Note that not all of these need to be initialized before the client, although
+ // the audio should and the canvas definitely needs to be. I've put things here
+ // to distinguish between the purpose and functionality of the various client
+ // scripts. Game specific script isn't needed until we reach the shell menus
+ // and start a game or connect to a server. We get the various subsystems ready
+ // to go, and then use initClient() to handle the rest of the startup sequence.
+ //
+ // If this is too convoluted we can reduce this complexity after futher testing
+ // to find exactly which subsystems should be readied before kicking things off.
+ // ----------------------------------------------------------------------------
+
+ //ModuleDatabase.LoadExplicit( "MainEditor" );
+ //ModuleDatabase.LoadExplicit( "Tools_ObjectViewer" );
+}
+
+function ToolsModule::onDestroy(%this)
+{
+
+}
\ No newline at end of file