diff --git a/.gitignore b/.gitignore
index 1893fb283..410c212f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,7 +9,7 @@ kenbuild
 kenbuild-editor
 apps/
 *.exe
-*.dll
+/*.dll
 *.dylib
 *.so
 *.elf
@@ -24,23 +24,23 @@ apps/
 *.cfg
 textures
 
-platform/Windows/*.cache
-platform/Windows/*.cfg
-platform/Windows/.vs/
-platform/Windows/*.db
-platform/Windows/*.opendb
-platform/Windows/*.con
-platform/Windows/*.sym
-platform/Windows/*.memmap
-platform/Windows/*.manifest
-platform/Windows/*.map
-platform/Windows/*.pdb
-platform/Windows/*.sdf
-platform/Windows/*.suo
-platform/Windows/*.opensdf
-platform/Windows/*.vcxproj.user
-platform/Windows/*.psess
-platform/Windows/*.vsp
+*.manifest
+/*.map
+/platform/Windows/*.map
+*.pdb
+.vs/
+*.VC.db
+*.VC.opendb
+*.sym
+/*.con
+/platform/Windows/*.con
+*.memmap
+*.sdf
+*.suo
+*.opensdf
+*.vcxproj.user
+*.psess
+*.vsp
 
 xcuserdata/
 project.xcworkspace/
diff --git a/GNUmakefile b/GNUmakefile
index 29727566f..25b59d131 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -299,11 +299,11 @@ KENBUILD_OBJ=$(obj)/$(KENBUILD)
 
 KENBUILD_CFLAGS=-I$(KENBUILD_SRC)
 
-KENBUILD_GAME ?= kenbuild
-KENBUILD_EDITOR ?= kenbuild-editor
+KENBUILD_GAME ?= ekenbuild
+KENBUILD_EDITOR ?= ekenbuild-editor
 
-KENBUILD_GAME_PROPER ?= KenBuild
-KENBUILD_EDITOR_PROPER ?= KenBuild Editor
+KENBUILD_GAME_PROPER ?= EKenBuild
+KENBUILD_EDITOR_PROPER ?= EKenBuild Editor
 
 KENBUILD_GAME_OBJS = \
     game \
diff --git a/platform/Windows/eduke32.vcxproj b/platform/Windows/eduke32.vcxproj
index 37e4ee616..ec6bf00ed 100644
--- a/platform/Windows/eduke32.vcxproj
+++ b/platform/Windows/eduke32.vcxproj
@@ -51,8 +51,8 @@
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
     <ConfigurationType>Makefile</ConfigurationType>
     <PlatformToolset>v140</PlatformToolset>
-    <OutDir>.\</OutDir>
-    <IntDir>.\</IntDir>
+    <OutDir>.\..\..\</OutDir>
+    <IntDir>.\..\..\</IntDir>
     <NMakeIncludeSearchPath>$(NMakeIncludeSearchPath);..\..\source\build\include;..\..\source\mact\include;..\..\source\audiolib\include;..\..\source\enet\include;..\..\platform\windows\include</NMakeIncludeSearchPath>
     <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f msvc.mak DEBUG=1 WINBITS=32</NMakeBuildCommandLine>
     <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f msvc.mak veryclean all DEBUG=1 WINBITS=32</NMakeReBuildCommandLine>
diff --git a/platform/Windows/msvc.mak b/platform/Windows/msvc.mak
index 45921614f..093bd1a78 100644
--- a/platform/Windows/msvc.mak
+++ b/platform/Windows/msvc.mak
@@ -284,6 +284,9 @@ CHECKDIR_MACT=@if not exist "$(MACT_OBJ)" mkdir "$(MACT_OBJ)"
 CHECKDIR_AUDIOLIB=@if not exist "$(AUDIOLIB_OBJ)" mkdir "$(AUDIOLIB_OBJ)"
 
 
+EDUKE32_TARGET=$(root)\eduke32$(EXESUFFIX)
+MAPSTER32_TARGET=$(root)\mapster32$(EXESUFFIX)
+
 # RULES
 .SUFFIXES: .masm
 
@@ -325,13 +328,15 @@ CHECKDIR_AUDIOLIB=@if not exist "$(AUDIOLIB_OBJ)" mkdir "$(AUDIOLIB_OBJ)"
 
 
 # TARGETS
-all: eduke32$(EXESUFFIX) mapster32$(EXESUFFIX)
 
-eduke32$(EXESUFFIX): $(DUKE3D_OBJS) $(ENGINE_OBJS) $(AUDIOLIB_OBJS) $(MACT_OBJS) $(ENET_OBJS)
+
+all: $(EDUKE32_TARGET) $(MAPSTER32_TARGET)
+
+$(EDUKE32_TARGET): $(DUKE3D_OBJS) $(ENGINE_OBJS) $(AUDIOLIB_OBJS) $(MACT_OBJS) $(ENET_OBJS)
 	$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS $(WINMACHINE) /LIBPATH:$(PLATFORM)\lib$(WINLIB) $(flags_link) /MAP $** $(LIBS)
 	$(MT) -manifest $(DUKE3D_RSRC)\manifest.game.xml -hashupdate -outputresource:$@ -out:$@.manifest
 
-mapster32$(EXESUFFIX): $(DUKE3D_EDITOR_OBJS) $(ENGINE_OBJS) $(ENGINE_EDITOR_OBJS) $(AUDIOLIB_OBJS)
+$(MAPSTER32_TARGET): $(DUKE3D_EDITOR_OBJS) $(ENGINE_OBJS) $(ENGINE_EDITOR_OBJS) $(AUDIOLIB_OBJS)
 	$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS $(WINMACHINE) /LIBPATH:$(PLATFORM)\lib$(WINLIB) $(flags_link) /MAP $** $(LIBS)
 	$(MT) -manifest $(DUKE3D_RSRC)\manifest.build.xml -hashupdate -outputresource:$@ -out:$@.manifest
 
@@ -341,7 +346,6 @@ mapster32$(EXESUFFIX): $(DUKE3D_EDITOR_OBJS) $(ENGINE_OBJS) $(ENGINE_EDITOR_OBJS
 # PHONIES
 
 clean:
-	-del /Q eduke32$(EXESUFFIX) mapster32$(EXESUFFIX) $(DUKE3D_OBJS) $(DUKE3D_EDITOR_OBJS) *.pdb *.map *.manifest
+	-del /Q $(EDUKE32_TARGET) $(MAPSTER32_TARGET) $(DUKE3D_OBJS) $(DUKE3D_EDITOR_OBJS) $(ENGINE_OBJS) $(ENGINE_EDITOR_OBJS) $(ENET_OBJS) $(MACT_OBJS) $(AUDIOLIB_OBJS) *.pdb $(root)\*.pdb $(root)\*.map $(root)\*.manifest
 
 veryclean: clean
-	-del /Q $(ENGINE_OBJS) $(ENGINE_EDITOR_OBJS) $(ENET_OBJS) $(AUDIOLIB_OBJS)