소스 엔진 게임에 기본적으로 포함되어 있는 Hammer 에디터는 솔직히 말해, 좀 구립니다.
현대적인 맵 에디터는 내가 배치한 요소가 실제 게임에서 어떻게 보일지 대강이나마 보여주지만, 소스 엔진에서는 이를 확인하려 할 때마다 전체 맵을 컴파일 한 후 게임에서 맵을 열어보아야만 알 수 있습니다.
이런 문제는 맵의 특정 요소를 세밀하게 조절하려고 할 때 더욱 두드러집니다. 값 하나를 조절했다고 맵 전체를 다시 컴파일해야 하니까요.
3ds Max 라이선스가 있는 사람이라면 구닥다리 Hammer 에디터 대신 Wall Worm 플러그인을 쓸 수 있습니다만, 3ds Max의 라이선스 비용이 워낙 비싸야지요. 하지만 그 대신 굉장히 미려한 맵을 만들 수 있다는 장점이 있긴 합니다. 그 대표적인 예가 Black Mesa의 Xen 레벨 디자인이죠. 처음부터 끝까지 Wall Worm을 썼다고 합니다.
현재 업데이트가 제공되지 않는 Hammer 에디터를 대신하기 위해, 소스 엔진 소스코드에 접근 권한을 가진 ficool2이라는 사람이 Hammer 에디터를 합법적으로 개조해 만든 맵 에디터가 바로 Hammer++입니다.
하지만 Hammer++는 공식적으로 Garry's Mod를 지원하지 않습니다. 한 때 Garry's Mod를 지원할 예정이었던 것으로 보이나, 현재는 Source SDK Base 2013 Multiplayer 버전을 통해 우회하여 비공식적으로만 사용할 수 있습니다.
Hammer++ 설치
Hammer++를 Garry's Mod에 그냥 설치할 시, 다음과 같은 오류 메시지가 출력되며 Hammer++를 실행할 수 없습니다.
따라서 위에서 말한 것처럼, Source SDK Base 2013 Multiplayer(이하 SDK MP)를 통해 우회적으로 사용해야 합니다.
Source SDK Base 2013 Multiplayer 설치
Hammer++를 Garry's Mod에서 이용하기 위해선 먼저 SDK MP를 설치해야 합니다.
위 링크를 클릭해서 SDK MP를 설치할 수 없을 경우, 다음 절차를 따라 하세요.
먼저 Steam을 실행한 후, 라이브러리에서 왼쪽 상단의 '게임'을 누르세요. 아래에 나타난 '도구'를 선택하면 다음과 같은 모양이 될 것입니다.
이후 스크롤을 내려 Source SDK Base 2013 Multiplayer를 찾아 설치합니다.
이때, Garry's Mod가 설치된 드라이브에 SDK MP를 설치해 주세요.
설치가 모두 끝나면, SDK MP를 우클릭해 '속성'을 클릭합니다.
'설치된 파일' 탭에서 우측 상단의 '찾아보기' 버튼을 누르면 SDK MP가 설치된 경로가 파일 탐색기에서 열립니다.
bin
디렉터리로 들어가, hammer.exe
를 더블클릭해 실행해 줍니다.
이 과정을 생략할 시 Hammer++의 초기 설정에 오류가 생길 수 있으니 반드시 hammer.exe
를 먼저 실행해 주세요.
기본적으로 'Half-Life 2'에 선택이 되어있을 텐데, 이 상태에서 그대로 OK를 눌러 Hammer 에디터를 실행한 후, 그대로 Hammer 에디터 창을 닫습니다.
gameinfo.txt 수정
Garry's Mod는 cfg/mountdepots.txt
와 cfg/mount.cfg
파일을 통해 동적으로 게임 파일을 불러올 수 있습니다. 하지만 우리가 작업할 SDK MP에는 그러한 기능이 없기 때문에, 수동으로 불러올 게임 파일을 지정해주어야 합니다.
SDK MP가 설치된 경로에서 hl2
디렉터리를 찾아 들어가, gameinfo.txt
파일을 Notepad++ 등의 고급 텍스트 편집기로 열어줍니다. Windows에 기본적으로 포함된 메모장은 gameinfo.txt
파일을 다루기에 부적합합니다.
파일의 맨 밑에 다음과 같은 내용이 보일 것입니다.
// Last, mount in shared HL2 loose files
game |all_source_engine_paths|hl2
platform |all_source_engine_paths|platform
그 아래에 다음과 같이 내용을 추가합니다. 큰따옴표에 주의하세요.
// Last, mount in shared HL2 loose files
game |all_source_engine_paths|hl2
platform |all_source_engine_paths|platform
// Hammer++
game "|all_source_engine_paths|../GarrysMod/garrysmod/garrysmod.vpk"
game "|all_source_engine_paths|../Half-Life 2/episodic/ep1_pak.vpk"
game "|all_source_engine_paths|../Half-Life 2/ep2/ep2_pak.vpk"
game "|all_source_engine_paths|hl2mp/hl2mp_pak.vpk"
game "|all_source_engine_paths|../Counter-Strike Source/cstrike/cstrike_pak.vpk"
// HammerAddons (https://github.com/TeamSpen210/HammerAddons)
// Uncomment line below if using HammerAddons
//game hammer
당연한 이야기이지만, 해당하는 게임이 Garry's Mod와 SDK MP가 설치된 드라이브에 미리 설치가 되어있어야 합니다.
- Garry's Mod
"|all_source_engine_paths|../GarrysMod/garrysmod/garrysmod.vpk"
- Half-Life 2: Episode 1
"|all_source_engine_paths|../Half-Life 2/episodic/ep1_pak.vpk"
- Half-Life 2: Episode 2
"|all_source_engine_paths|../Half-Life 2/ep2/ep2_pak.vpk"
- Half-Life 2: Deathmatch
"|all_source_engine_paths|hl2mp/hl2mp_pak.vpk"
- Counter-Strike: Source
"|all_source_engine_paths|../Counter-Strike Source/cstrike/cstrike_pak.vpk"
Half-Life 2는 이미 윗부분에서 포함이 되기 때문에 여기서 별도로 포함하지 않습니다.
Black Mesa는 Hammer++와 완벽히 호환되지 않아, Hammer++를 크래시 나게 할 수 있습니다.
HammerAddons 부분에 대해서는 나중에 설명하겠습니다.
Hammer++ 다운로드
이제 Hammer++를 다운로드할 차례입니다.
Hammer++ 다운로드 페이지로 이동해 'Source SDK 2013 Multiplayer'를 클릭해 SDK MP용 Hammer++를 다운로드합니다. 실수로 Source SDK 2013 Singleplayer를 다운로드하지 않도록 주의하세요.
다운로드한 파일의 압축을 풀면 bin
디렉터리가 보일 텐데, 이 bin
디렉터리를 그대로 SDK MP가 설치된 경로로 이동합니다.
최종적으로 bin
디렉터리 안에 포함된 hammerplusplus
와 hammerplusplus.exe
는 다음과 같은 경로에 있어야 합니다.
<Steam 설치 경로>\steamapps\common\Source SDK Base 2013 Multiplayer\bin\hammerplusplus\
<Steam 설치 경로>\steamapps\common\Source SDK Base 2013 Multiplayer\bin\hammerplusplus.exe
만약 아직도 SDK MP의 hammer.exe
를 실행하지 않았다면 지금 실행하세요.
hammerplusplus.exe
를 실행하면 다음과 같은 창이 나타납니다.
이번에도 'Half-Life 2'를 선택한 후, OK를 눌러줍니다.
Hammer++ 설정
이 상태에서 곧바로 Hammer++를 사용할 수 있는 것은 아닙니다.
'Tools - Options'를 선택해 Hammer++의 설정창을 엽니다.
스크린샷에서 Configuration 이름이 Garry's Mod로 되어 있는 것은 일부러 그렇게 표시되도록 수동으로 바꾸었기 때문입니다.
여러분은 Garry's Mod 대신 Half-Life 2가 나타나는 것이 정상입니다.
Game Configurations
Game Data Files의 모든 항목을 Remove 버튼으로 제거한 후, Add 버튼을 눌러 Garry's Mod가 설치된 경로의 bin/garrysmod.fgd
파일을 불러옵니다.
위 스크린샷의gmod.fgd
는 HammerAddons에서 제공하는 파일입니다.
HammerAddons를 설치하지 않는다면garrysmod.fgd
파일을 불러와야 합니다.
Build Programs
Game executable의 경로를 Garry's Mod 설치 경로에 있는 hl2.exe
로 변경합니다.
Place compiled maps in this directory before running the game의 경로를 Garry's Mod 설치 경로에 있는 garrysmod/maps
로 변경합니다.
Hammer++
Anisotropic Filtering을 Off로 변경합니다.
Run Map
아무런 맵을 열지 않은 상태에서 Run Map의 항목을 수정할 수 없습니다.
'File - New'를 선택해 새 맵을 만든 후, 'File - Save'를 눌러 아무 곳에나 빈 맵 파일을 저장합니다. 나중에 삭제할 파일이니, 다운로드 폴더 등 눈에 잘 띄는 곳에 파일을 저장하세요.
'File - Run Map'을 눌러 Run Map 창을 엽니다.
맨 마지막에 있는 $game_exe
줄을 다음과 같이 편집합니다.
-dev -console -allowdebug -hijack -game $gamedir +map $file
▼
-dev -console -allowdebug -hijack +map $file
Parameters의 -game $gamedir
를 제거하면 됩니다.
이제 Hammer++의 설치와 설정이 모두 끝났습니다.
HammerAddons 설치
이대로 곧장 Hammer++를 이용해 맵을 만들 수 있지만, Garry's Mod가 기본적으로 제공하는 FGD 파일에는 오류가 많습니다. 분명 Garry's Mod 게임 엔진에 포함되어 있는 엔티티이지만 정작 FGD 파일에 해당 엔티티가 명시가 되어있지 않아 Hammer++에서 사용할 수 없는 경우가 종종 생기거든요.
이러한 문제는 Garry's Mod 뿐만 아니라 다른 소스 엔진 기반 게임, 심지어는 밸브가 직접 만든 게임에서도 발생합니다.
그리고 이 문제를 HammerAddons가 해결해 줄 수 있습니다. 정확히는 HammerAddons의 Unified FGD가요.
HammerAddons 다운로드
HammerAddons는 자동 인스톨러를 제공하지만, Garry's Mod의 특수성 때문에 Hammer Addons의 자동 인스톨러를 제대로 사용할 수 없습니다. 따라서 HammerAddons는 수동으로 설치되어야 합니다.
HammerAddons의 릴리즈 페이지로 이동해 최신 릴리즈를 다운로드한 후, 압축을 적당한 곳에 해제합니다.
우리에게 필요한 것은 다음 세 가지입니다.
hammer\
win64\postcompiler\
gmod.fgd
HammerAddons 설치
먼저 SDK MP가 설치된 경로를 엽니다. 다음과 같이 되도록 hammer
, postcompiler
, gmod.fgd
를 옮기세요.
\Source SDK Base 2013 Multiplayer\hammer\
\Source SDK Base 2013 Multiplayer\bin\postcompiler\
\Source SDK Base 2013 Multiplayer\bin\gmod.fgd
gameinfo.txt 수정
아까처럼 SDK MP가 설치된 경로에서 hl2\gameinfo.txt
파일을 Notepad++ 등의 편집기로 엽니다.
파일의 맨 밑에 아까 추가했던 내용이 보일 것입니다.
// Last, mount in shared HL2 loose files
game |all_source_engine_paths|hl2
platform |all_source_engine_paths|platform
// Hammer++
game "|all_source_engine_paths|../GarrysMod/garrysmod/garrysmod.vpk"
game "|all_source_engine_paths|../Half-Life 2/episodic/ep1_pak.vpk"
game "|all_source_engine_paths|../Half-Life 2/ep2/ep2_pak.vpk"
game "|all_source_engine_paths|hl2mp/hl2mp_pak.vpk"
game "|all_source_engine_paths|../Counter-Strike Source/cstrike/cstrike_pak.vpk"
그 아래에 다음과 같이 내용을 추가합니다.
// Hammer++
game "|all_source_engine_paths|../GarrysMod/garrysmod/garrysmod.vpk"
game "|all_source_engine_paths|../Half-Life 2/episodic/ep1_pak.vpk"
game "|all_source_engine_paths|../Half-Life 2/ep2/ep2_pak.vpk"
game "|all_source_engine_paths|hl2mp/hl2mp_pak.vpk"
game "|all_source_engine_paths|../Counter-Strike Source/cstrike/cstrike_pak.vpk"
// HammerAddons (https://github.com/TeamSpen210/HammerAddons)
// Uncomment line below if using HammerAddons
game hammer
Hammer++ 설정
Hammer++에서도 추가적인 설정을 해주어야 합니다.
Run Map
아까 Hammer++에서 Run Map을 설정할 때와 비슷하지만, 이번에는 HammerAddons의 postcompiler를 추가합니다.
New 버튼을 눌러 새 항목을 생성합니다. 새로 생성된 항목은 맨 밑에 위치하게 되는데, 이를 Move Up 버튼을 이용해 $bsp_exe
바로 다음으로 오도록 조절해 주세요.
새 항목의 오른편의 Cmds를 누른 후, Executable을 클릭해 \Source SDK Base 2013 Multiplayer\bin\postcompiler\postcompiler.exe
를 선택합니다.
아래의 Parameters에는 -game $gamedir --propcombine $path/$file
를 추가합니다.
최종적으로 다음과 같은 형태가 되었는지 확인하세요.
- Command:
$bsp_exe
Parameters:-game $gamedir -allowdynamicpropsasstatic $path\$file
- Command:
<SDK MP 설치 경로>\bin\postcompiler\postcompiler.exe
Parameters:-game $gamedir --propcombine $path/$file
- Command:
$vis_exe
Parameters:-game $gamedir $path\$file
- Command:
$light_exe
Parameters:-game $gamedir $path\$file
- Command:
Copy File
Parameters:$path\$file.bsp $bspdir\$file.bsp
- Command:
$game_exe
Parameters:-dev -console -allowdebug -hijack +map $file
이제 HammerAddons가 정상적으로 설치되었습니다.