diff --git a/Game/.gitignore b/Game/.gitignore
index 0b38b94..50c5eed 100644
--- a/Game/.gitignore
+++ b/Game/.gitignore
@@ -38,4 +38,9 @@ UnityScript.Lang/UnityScript.Lang.suo
 UnityDomainLoad/obj/
 UnityDomainLoad/bin/
 UnityDomainLoad/.vs/
-UnityDomainLoad/UnityDomainLoad.suo
\ No newline at end of file
+UnityDomainLoad/UnityDomainLoad.suo
+MarsXPLR.suo
+MarsXPLR.ncb
+PreBuild/Debug
+PreBuild/Release
+PreBuild/PreBuild.vcproj.*
diff --git a/Game/Assembly - CSHarp - first pass/Assembly---CSharp---first-pass.csproj b/Game/Assembly - CSHarp - first pass/Assembly---CSharp---first-pass.csproj
index 4f385a0..19728e6 100644
--- a/Game/Assembly - CSHarp - first pass/Assembly---CSharp---first-pass.csproj	
+++ b/Game/Assembly - CSHarp - first pass/Assembly---CSharp---first-pass.csproj	
@@ -63,4 +63,7 @@
     
   
   
+  
+    copy "$(ProjectDir)bin\26998b3a9cbf54825a27e5f2d3cc4df1.dll" "$(SolutionDir)marsxplr_build\Mars Explorer_Data\Assembly - CSharp - first pass.dll"
+  
 
\ No newline at end of file
diff --git a/Game/Assembly - CSharp/Assembly---CSharp.csproj b/Game/Assembly - CSharp/Assembly---CSharp.csproj
index 3f2a003..ff12b42 100644
--- a/Game/Assembly - CSharp/Assembly---CSharp.csproj	
+++ b/Game/Assembly - CSharp/Assembly---CSharp.csproj	
@@ -1,4 +1,4 @@
-
+
 
   
     Debug
@@ -12,6 +12,7 @@
     v3.5
     512
     False
+    {23B280BD-8095-4FA3-B894-B77354BEF075}
   
   
     true
@@ -30,8 +31,8 @@
   
   
     True
-	bin
-	False
+    bin
+    False
   
   
     
@@ -46,4 +47,9 @@
     
   
   
+  
+    
+    
+    copy "$(ProjectDir)bin\e36192721fc364533a8edf2aefd3b72c.dll" "$(SolutionDir)marsxplr_build\Mars Explorer_Data\Assembly - CSharp.dll"
+  
 
\ No newline at end of file
diff --git a/Game/Assembly - UnityScript/Assembly---UnityScript.csproj b/Game/Assembly - UnityScript/Assembly---UnityScript.csproj
index 9259a69..a7c849a 100644
--- a/Game/Assembly - UnityScript/Assembly---UnityScript.csproj	
+++ b/Game/Assembly - UnityScript/Assembly---UnityScript.csproj	
@@ -100,4 +100,7 @@
     
   
   
+  
+    copy "$(ProjectDir)bin\58cc2f0ae478d40e7a89c7ba576c3586.dll" "$(SolutionDir)marsxplr_build\Mars Explorer_Data\Assembly - UnityScript.dll"
+  
 
\ No newline at end of file
diff --git a/Game/Assembly - UnityScript/CameraVehicle.cs b/Game/Assembly - UnityScript/CameraVehicle.cs
index dcc2202..4956aa0 100644
--- a/Game/Assembly - UnityScript/CameraVehicle.cs	
+++ b/Game/Assembly - UnityScript/CameraVehicle.cs	
@@ -23,6 +23,8 @@ public class CameraVehicle : MonoBehaviour
 	public GlowEffect glowEffect;
 	public ColorCorrectionEffect colorEffect;
 	public float worldTime;
+    public GameObject camTarget;
+    public Vehicle camTargetVeh;
 
 	public CameraVehicle()
     {
@@ -56,6 +58,18 @@ public class CameraVehicle : MonoBehaviour
 			return;
 		}
 
+        //QuarryCam
+        camTarget = Game.Player;
+        camTargetVeh = Game.PlayerVeh;
+        if (
+            Game.Settings.quarryCam &&
+            (bool)Game.QuarryVeh &&
+            (bool)Game.QuarryVeh.ridePos)
+        {
+            camTarget = Game.QuarryVeh.gameObject;
+            camTargetVeh = Game.QuarryVeh;
+        }
+
 		//Blur
 		if (mb.enabled)
         {
@@ -70,7 +84,7 @@ public class CameraVehicle : MonoBehaviour
 		if (Game.Settings.useHypersound == 1)
         {
 			Game.Settings.gameMusic.pitch = Mathf.Clamp(
-				-0.5f + Game.Player.rigidbody.velocity.magnitude / 15f,
+				-0.5f + camTarget.rigidbody.velocity.magnitude / 15f,
 				0.8f,
 				1.5f
 			);
@@ -133,10 +147,10 @@ public class CameraVehicle : MonoBehaviour
 		arrow.rotation = Quaternion.Lerp(
 			arrow.rotation, 
 			Quaternion.LookRotation(
-				((Game.PlayerVeh.isIt != 0 || !Game.QuarryVeh) ?
+				((camTargetVeh.isIt != 0 || !Game.QuarryVeh) ?
 					World.baseTF :
 					Game.QuarryVeh.gameObject.transform
-				).position - Game.Player.transform.position
+				).position - camTarget.transform.position
 			),
 			Time.deltaTime * 15f
 		);
@@ -192,7 +206,7 @@ public class CameraVehicle : MonoBehaviour
 		}
 
 		//Constants
-		float camDist = (float)Game.PlayerVeh.camOffset + Game.Settings.camDist;
+		float camDist = (float)camTargetVeh.camOffset + Game.Settings.camDist;
 
 		//World Entry Effect
 		if (worldTime < 7f)
@@ -200,11 +214,11 @@ public class CameraVehicle : MonoBehaviour
 			worldTime = Time.time - Game.Controller.worldLoadTime;
 			transform.position = Vector3.Lerp(
 				transform.position,
-				Game.Player.transform.position,
+				camTarget.transform.position,
 				Time.deltaTime * 1f
 			);
 			wr = Quaternion.LookRotation(
-				Game.Player.transform.position - transform.position,
+				camTarget.transform.position - transform.position,
 				Vector3.up
 			);
 			if (worldTime > 1f)
@@ -224,7 +238,7 @@ public class CameraVehicle : MonoBehaviour
 			(Input.GetButton("Snipe") && !Game.Messaging.chatting)
 		)
         {
-			transform.position = Game.PlayerVeh.ridePos.position;
+			transform.position = camTargetVeh.ridePos.position;
 			
 			if (Input.GetButtonDown("Fire2") || Input.GetKeyDown(KeyCode.Alpha1))
             {
@@ -234,7 +248,7 @@ public class CameraVehicle : MonoBehaviour
                 {
 					gyroTation = Quaternion.Euler(
 						0f,
-						Game.PlayerVeh.ridePos.rotation.eulerAngles.y,
+						camTargetVeh.ridePos.rotation.eulerAngles.y,
 						0f
 					);
 				}
@@ -246,7 +260,7 @@ public class CameraVehicle : MonoBehaviour
 			}
 			else
             {
-				transform.rotation = Game.PlayerVeh.ridePos.rotation;
+				transform.rotation = camTargetVeh.ridePos.rotation;
 			}
 			
 			rotationX += Input.GetAxis("Mouse X") * (Input.GetButton("Snipe") ? 0.5f : 2f);
@@ -291,9 +305,9 @@ public class CameraVehicle : MonoBehaviour
             {
 				transform.position = Vector3.Lerp(
 					transform.position,
-					Game.Player.transform.position - Vector3.Normalize(
-						Game.Player.transform.position - transform.position
-					) * camDist + Vector3.one * (Game.PlayerVeh.camSmooth ?
+					camTarget.transform.position - Vector3.Normalize(
+						camTarget.transform.position - transform.position
+					) * camDist + Vector3.one * (camTargetVeh.camSmooth ?
 						0f :
 						Mathf.Lerp(0f, 15f, camDist / 30f)
 					),
@@ -302,9 +316,9 @@ public class CameraVehicle : MonoBehaviour
 				transform.rotation = Quaternion.Slerp(
 					transform.rotation,
 					Quaternion.LookRotation(
-						Game.Player.transform.position - transform.position,
+						camTarget.transform.position - transform.position,
 						(Game.Settings.flightCam ?
-							Game.Player.transform.up :
+							camTarget.transform.up :
 							Vector3.up
 						)
 					),
@@ -329,15 +343,15 @@ public class CameraVehicle : MonoBehaviour
 			else if (Game.Settings.camChase == 1)
             {
 				if (
-					(bool)Game.Player.transform.gameObject.rigidbody &&
-					Game.Player.transform.gameObject.rigidbody.velocity.sqrMagnitude > 0.1f &&
-					Game.Player.transform.gameObject.rigidbody.velocity.normalized.y < 0.8f &&
-					Game.Player.transform.gameObject.rigidbody.velocity.normalized.y > -0.8f
+					(bool)camTarget.transform.gameObject.rigidbody &&
+					camTarget.transform.gameObject.rigidbody.velocity.sqrMagnitude > 0.1f &&
+					camTarget.transform.gameObject.rigidbody.velocity.normalized.y < 0.8f &&
+					camTarget.transform.gameObject.rigidbody.velocity.normalized.y > -0.8f
 				)
                 {
 					lastDir = Vector3.Lerp(
 						lastDir,
-						Game.Player.transform.gameObject.rigidbody.velocity.normalized,
+						camTarget.transform.gameObject.rigidbody.velocity.normalized,
 						0.1f
 					);
 				}
@@ -350,12 +364,12 @@ public class CameraVehicle : MonoBehaviour
 					);
 				}
 				Vector3 newPos = (
-					Game.Player.transform.position + 
+					camTarget.transform.position + 
 					lastDir * -(camDist) + 
 					Vector3.up * (camDist / 3f)
 				);
 				Vector3 tpos = transform.position;
-				float y = tpos.y + (Game.Player.transform.position.y - lastY) * Time.deltaTime;
+				float y = tpos.y + (camTarget.transform.position.y - lastY) * Time.deltaTime;
 				tpos.y = y;
 				transform.position = tpos;
 				transform.position = Vector3.Lerp(
@@ -363,13 +377,13 @@ public class CameraVehicle : MonoBehaviour
 					newPos,
 					Time.deltaTime * 4f
 				);
-				lastY = Game.Player.transform.position.y;
+				lastY = camTarget.transform.position.y;
 				transform.rotation = Quaternion.Slerp(
 					transform.rotation,
 					Quaternion.LookRotation(
-						Game.Player.transform.position - transform.position,
+						camTarget.transform.position - transform.position,
 						(Game.Settings.flightCam ?
-							Game.Player.transform.up :
+							camTarget.transform.up :
 							Vector3.up
 						)
 					),
@@ -395,13 +409,13 @@ public class CameraVehicle : MonoBehaviour
 			//Arcade
 			else if (
 				Game.Settings.camChase == 2 &&
-				Game.Player.transform.rigidbody.velocity.magnitude > 0f
+				camTarget.transform.rigidbody.velocity.magnitude > 0f
 			)
             {
 				float heightDamping = 3f;
 				float rotationDamping = 3f;
 				float wantedRotationAngle = Quaternion.LookRotation(
-					Game.Player.transform.rigidbody.velocity
+					camTarget.transform.rigidbody.velocity
 				).eulerAngles.y;
 				wantedRotationAngle += Mathf.Lerp(
 					30f,
@@ -409,7 +423,7 @@ public class CameraVehicle : MonoBehaviour
 					camDist / 30f
 				) * Input.GetAxis("Horizontal");
 				float wantedHeight = (
-					Game.Player.transform.position.y +
+					camTarget.transform.position.y +
 					Mathf.Lerp(0.1f, 15f, camDist / 30f) +
 					heightBoost
 				);
@@ -432,7 +446,7 @@ public class CameraVehicle : MonoBehaviour
 					currentRotationAngle,
 					0f
 				);
-				Vector3 pos = Game.Player.transform.position;
+				Vector3 pos = camTarget.transform.position;
 				pos.y += targetHeight; //Look ABOVE the target
 				transform.position = pos;
 				transform.position -= currentRotation * Vector3.forward * camDist;
@@ -455,7 +469,7 @@ public class CameraVehicle : MonoBehaviour
                 { //We are under terrain
 					Physics.Linecast( //Determine how far forward we need to go to be out of it
 						transform.position,
-						Game.Player.transform.position + Vector3.up * currentHeight,
+						camTarget.transform.position + Vector3.up * currentHeight,
 						out hit,
 						1 << 8
 					);
@@ -476,11 +490,11 @@ public class CameraVehicle : MonoBehaviour
         {
 			transform.position = Vector3.Lerp(
 				transform.position,
-				Game.Player.transform.position + Vector3.up * 40f,
+				camTarget.transform.position + Vector3.up * 40f,
 				Time.deltaTime * 0.3f
 			);
 			wr = Quaternion.LookRotation(
-				Game.Player.transform.position - transform.position,
+				camTarget.transform.position - transform.position,
 				Vector3.up
 			);
 			transform.rotation = Quaternion.Slerp(
@@ -495,7 +509,7 @@ public class CameraVehicle : MonoBehaviour
         {
 			transform.rotation = Quaternion.Slerp(
 				transform.rotation,
-				Quaternion.LookRotation(Game.Player.transform.position - transform.position),
+				Quaternion.LookRotation(camTarget.transform.position - transform.position),
 				Time.deltaTime * 1.5f
 			);
 			transform.Translate(new Vector3(
diff --git a/Game/Assembly - UnityScript/Settings.cs b/Game/Assembly - UnityScript/Settings.cs
index 9a16768..16cd886 100644
--- a/Game/Assembly - UnityScript/Settings.cs	
+++ b/Game/Assembly - UnityScript/Settings.cs	
@@ -71,6 +71,7 @@ public class Settings : MonoBehaviour
 	public float camDist = 0;
 	public bool flightCam = false;
 	public bool gyroCam = false;
+    public bool quarryCam = false;
 
 	public float worldGrav = -9.81f;
 	public float worldFog = 0.001f;
@@ -154,19 +155,17 @@ public class Settings : MonoBehaviour
 		renderViewCap = PlayerPrefs.GetFloat("viewCap", 1000f);
 		Application.targetFrameRate = (int)PlayerPrefs.GetFloat("targetFrameRate", 100f);
 		renderAutoAdjust = false;
-		showHints = ((PlayerPrefs.GetInt("showHints", 1) != 0) ? true : false);
+		showHints = PlayerPrefs.GetInt("showHints", 1) != 0;
 		useMusic = PlayerPrefs.GetInt("useMusic", 1);
-		useSfx = ((PlayerPrefs.GetInt("useSfx", 1) != 0) ? true : false);
+		useSfx = PlayerPrefs.GetInt("useSfx", 1) != 0;
 		useHypersound = PlayerPrefs.GetInt("useHypersound", 0);
-		useMinimap = ((PlayerPrefs.GetInt("useMinimap", 1) != 0) ? true : false);
-		bool flag = ((PlayerPrefs.GetInt("superCam", 1) != 0) ? true : false);
-		flightCam = ((PlayerPrefs.GetInt("flightCam", 1) != 0) ? true : false);
-		gyroCam = ((PlayerPrefs.GetInt("gyroCam", 0) != 0) ? true : false);
+		useMinimap = PlayerPrefs.GetInt("useMinimap", 1) != 0;
 		camMode = PlayerPrefs.GetInt("cam", 1);
 		camChase = PlayerPrefs.GetInt("camChase", 1);
 		camDist = PlayerPrefs.GetFloat("camDist", 0.01f);
-		flightCam = ((PlayerPrefs.GetInt("flightCam", 0) != 0) ? true : false);
-		gyroCam = ((PlayerPrefs.GetInt("gyroCam", 0) != 0) ? true : false);
+		flightCam = PlayerPrefs.GetInt("flightCam", 0) != 0;
+		gyroCam = PlayerPrefs.GetInt("gyroCam", 0) != 0;
+        quarryCam = PlayerPrefs.GetInt("quarryCam", 0) != 0;
 	}
 
 	public void showDialogGame()
@@ -486,6 +485,12 @@ public class Settings : MonoBehaviour
 			PlayerPrefs.SetInt("flightCam", flightCam ? 1 : 0);
 		}
 
+        if (GUILayout.Toggle(quarryCam, "QuarryCam Enabled") != quarryCam)
+        {
+            quarryCam = !quarryCam;
+            PlayerPrefs.SetInt("quarryCam", quarryCam ? 1 : 0);
+        }
+
 		float cg;
 		if (camMode == 0)
 		{
diff --git a/Game/MarsXPLR.sln b/Game/MarsXPLR.sln
new file mode 100644
index 0000000..4132c17
--- /dev/null
+++ b/Game/MarsXPLR.sln
@@ -0,0 +1,110 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly---UnityScript", "Assembly - UnityScript\Assembly---UnityScript.csproj", "{084E81A6-3376-4976-B642-4C6443C97C36}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2} = {C67F4835-3976-49D0-AA05-3487C9FD57A2}
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E} = {546DAF9B-0B6A-4800-922B-2F95A86DE45E}
+		{23B280BD-8095-4FA3-B894-B77354BEF075} = {23B280BD-8095-4FA3-B894-B77354BEF075}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly---CSharp---first-pass", "Assembly - CSHarp - first pass\Assembly---CSharp---first-pass.csproj", "{93A8D6B3-DD52-4C21-A101-AF360DAFC096}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2} = {C67F4835-3976-49D0-AA05-3487C9FD57A2}
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E} = {546DAF9B-0B6A-4800-922B-2F95A86DE45E}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly---CSharp", "Assembly - CSharp\Assembly---CSharp.csproj", "{23B280BD-8095-4FA3-B894-B77354BEF075}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2} = {C67F4835-3976-49D0-AA05-3487C9FD57A2}
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E} = {546DAF9B-0B6A-4800-922B-2F95A86DE45E}
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096} = {93A8D6B3-DD52-4C21-A101-AF360DAFC096}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityEngine", "UnityEngine\UnityEngine.csproj", "{C67F4835-3976-49D0-AA05-3487C9FD57A2}"
+	ProjectSection(ProjectDependencies) = postProject
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E} = {546DAF9B-0B6A-4800-922B-2F95A86DE45E}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityDomainLoad", "UnityDomainLoad\UnityDomainLoad.csproj", "{9446C081-D322-4861-B4E4-DD57727ABD6D}"
+	ProjectSection(ProjectDependencies) = postProject
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E} = {546DAF9B-0B6A-4800-922B-2F95A86DE45E}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PreBuild", "PreBuild\PreBuild.vcproj", "{546DAF9B-0B6A-4800-922B-2F95A86DE45E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Release|Any CPU.Build.0 = Release|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{084E81A6-3376-4976-B642-4C6443C97C36}.Release|Win32.ActiveCfg = Release|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Release|Any CPU.Build.0 = Release|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{93A8D6B3-DD52-4C21-A101-AF360DAFC096}.Release|Win32.ActiveCfg = Release|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Release|Any CPU.Build.0 = Release|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{23B280BD-8095-4FA3-B894-B77354BEF075}.Release|Win32.ActiveCfg = Release|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{C67F4835-3976-49D0-AA05-3487C9FD57A2}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9446C081-D322-4861-B4E4-DD57727ABD6D}.Release|Win32.ActiveCfg = Release|Any CPU
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Debug|Win32.Build.0 = Debug|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Release|Any CPU.ActiveCfg = Release|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Release|Win32.ActiveCfg = Release|Win32
+		{546DAF9B-0B6A-4800-922B-2F95A86DE45E}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/Game/PreBuild/PreBuild.vcproj b/Game/PreBuild/PreBuild.vcproj
new file mode 100644
index 0000000..5272993
--- /dev/null
+++ b/Game/PreBuild/PreBuild.vcproj
@@ -0,0 +1,65 @@
+
+
+	
+		
+	
+	
+	
+	
+		
+			
+		
+		
+			
+		
+	
+	
+	
+	
+	
+	
+	
+
diff --git a/Game/UnityDomainLoad/UnityDomainLoad.csproj b/Game/UnityDomainLoad/UnityDomainLoad.csproj
index 2c56653..d80dcdb 100644
--- a/Game/UnityDomainLoad/UnityDomainLoad.csproj
+++ b/Game/UnityDomainLoad/UnityDomainLoad.csproj
@@ -12,6 +12,7 @@
     v3.5
     512
     False
+    {9446C081-D322-4861-B4E4-DD57727ABD6D}
   
   
     true
@@ -30,13 +31,15 @@
   
   
     True
-	bin
-	False
+    bin
+    False
   
-  
   
     
     
   
   
+  
+    copy "$(ProjectDir)bin\UnityDomainLoad.exe" "$(SolutionDir)marsxplr_build\Mars Explorer_Data\lib\UnityDomainLoad.exe"
+  
 
\ No newline at end of file
diff --git a/Game/UnityEngine/UnityEngine.csproj b/Game/UnityEngine/UnityEngine.csproj
index 51fd996..8b28547 100644
--- a/Game/UnityEngine/UnityEngine.csproj
+++ b/Game/UnityEngine/UnityEngine.csproj
@@ -39,4 +39,7 @@
     
   
   
+  
+    copy "$(ProjectDir)bin\UnityEngine.dll" "$(SolutionDir)marsxplr_build\Mars Explorer_Data\lib\UnityEngine.dll"
+  
 
\ No newline at end of file
diff --git a/Game/build_all.cmd b/Game/build_all.cmd
deleted file mode 100644
index f299ec7..0000000
--- a/Game/build_all.cmd
+++ /dev/null
@@ -1,50 +0,0 @@
-@echo off
-
-set "flags=/p:Configuration=Debug /p:Platform=Win32"
-
-echo ----------------
-echo   BUILDING ALL
-echo ----------------
-
-msbuild %flags% "UnityEngine\UnityEngine.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild %flags% "Assembly - CSharp - first pass\Assembly---CSharp---first-pass.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild %flags% "Assembly - UnityScript\Assembly---UnityScript.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild %flags% "Assembly - CSharp\Assembly---CSharp.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild %flags% "UnityDomainLoad\UnityDomainLoad.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-
-echo -----------------
-echo   COPYING FILES
-echo -----------------
-
-if exist "marsxplr_build\Mars Explorer_Data\lib" rd /S /Q "marsxplr_build\Mars Explorer_Data\lib"
-if %errorlevel% neq 0 exit /b %errorlevel%
-if exist "marsxplr_build\Mars Explorer_Data" rd /S /Q "marsxplr_build\Mars Explorer_Data"
-if %errorlevel% neq 0 exit /b %errorlevel%
-if exist marsxplr_build rd /S /Q marsxplr_build
-if %errorlevel% neq 0 exit /b %errorlevel%
-md marsxplr_build
-if %errorlevel% neq 0 exit /b %errorlevel%
-md "marsxplr_build\Mars Explorer_Data"
-if %errorlevel% neq 0 exit /b %errorlevel%
-md "marsxplr_build\Mars Explorer_Data\lib"
-if %errorlevel% neq 0 exit /b %errorlevel%
-
-copy "Assembly - CSharp\bin\e36192721fc364533a8edf2aefd3b72c.dll" "marsxplr_build\Mars Explorer_Data\Assembly - CSharp.dll"
-if %errorlevel% neq 0 exit /b %errorlevel%
-copy "Assembly - CSharp - first pass\bin\26998b3a9cbf54825a27e5f2d3cc4df1.dll" "marsxplr_build\Mars Explorer_Data\Assembly - CSharp - first pass.dll"
-if %errorlevel% neq 0 exit /b %errorlevel%
-copy "Assembly - UnityScript\bin\58cc2f0ae478d40e7a89c7ba576c3586.dll" "marsxplr_build\Mars Explorer_Data\Assembly - UnityScript.dll"
-if %errorlevel% neq 0 exit /b %errorlevel%
-copy "UnityEngine\bin\UnityEngine.dll" "marsxplr_build\Mars Explorer_Data\lib\UnityEngine.dll"
-if %errorlevel% neq 0 exit /b %errorlevel%
-copy "UnityDomainLoad\bin\UnityDomainLoad.exe" "marsxplr_build\Mars Explorer_Data\lib\UnityDomainLoad.exe"
-if %errorlevel% neq 0 exit /b %errorlevel%
-
-echo -----------------
-echo   BUILD SUCCESS
-echo -----------------
\ No newline at end of file
diff --git a/Game/build_dependencies.txt b/Game/build_dependencies.txt
deleted file mode 100644
index a7d8c68..0000000
--- a/Game/build_dependencies.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-------------LISTING/DERIVED BUILD ORDER------------------
-
-UnityEngine:
-
-Assembly - CSharp - first pass:
-	UnityEngine
-
-Assembly - UnityScript:
-	Assembly - CSharp - first pass
-	UnityEngine
-
-Assembly - CSharp:
-	Assembly CSharp - first pass
-	UnityEngine
-
-UnityDomainLoad:
\ No newline at end of file
diff --git a/Game/clean_all.cmd b/Game/clean_all.cmd
deleted file mode 100644
index 3ca4f5a..0000000
--- a/Game/clean_all.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-@echo off
-
-set "flags=/p:Configuration=Debug /p:Platform=Win32"
-
-echo -------------------
-echo   CLEANING BUILDS
-echo -------------------
-
-msbuild /t:Clean %flags% "Assembly - CSharp\Assembly---CSharp.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild /t:Clean %flags% "Assembly - CSharp - first pass\Assembly---CSharp---first-pass.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild /t:Clean %flags% "Assembly - UnityScript\Assembly---UnityScript.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild /t:Clean %flags% "UnityEngine\UnityEngine.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%
-msbuild /t:Clean %flags% "UnityDomainLoad\UnityDomainLoad.csproj"
-if %errorlevel% neq 0 exit /b %errorlevel%