CCodelab Station
제품

내 PC에서 작성하고 테스트하는 GMod gamemode 코드

01

GMod gamemode는 정보 파일과 init.lua, cl_init.lua, shared.lua가 든 gamemode/ 하위 폴더로 이루어진 폴더예요. Codelab Station은 그 폴더를 읽고 지정한 Lua를 편집하며, Ask first 모드에서는 수락하기 전에 diff를 보여줘요. 게임 밖에서 동작해요. 모든 작업은 실제 결과가 담긴 카드로 나타나요.

01

쓰기 전에 먼저 읽어요

list_dir, glob, read_file, grep이 먼저 애드온을 파악하니까, 편집은 폴더에 실제로 있는 내용에서 출발해요.

02

검토할 수 있는 편집

edit_file은 diff를 보여주고 write_file은 새 파일을 만들며, Ask first는 변경 전마다 멈춰요.

03

여러 애드온 정리하기

여러 애드온을 폴더 하나로 합치는 건 list_dir, grep, move_file, 그리고 내가 검토하는 diff의 몫이에요.

에이전트가 할 수 있는 일

한 번의 실행을 카드별로

모든 작업이 실제 결과와 함께 카드로 채팅에 나타나요. 이번 실행은 직접 만든 애드온에 crate entity 폴더를 만든 다음 확인해요. 카드마다 수락하거나 거부해요.

맡겨 볼 만한 작업 두 가지

계획에서 출발해 GMod entity 애드온 만들기

Plan only 모드로 시작해서 플레이어가 스폰할 수 있는 상자 같은 scripted entity를 설명해요. 에이전트는 list_dir로 애드온을 읽고 lua/entities/ 아래에 쓸 파일을 나열해요. Plan only는 아무것도 쓰지 않아요. Ask first로 바꾸면 write_file이 shared.lua, init.lua, cl_init.lua를 카드마다 만들어요. 상자 모델이 보이지 않으면 게임이 애드온의 모델을 못 찾았을 수 있으니, glob으로 models 폴더를 나열해서 경로를 Lua의 모델 경로와 비교해요. 맵 곳곳에 적을 스폰하는 모드처럼 더 큰 아이디어에도 같은 계획 우선 방식이 맞아요. diff를 하나씩 검토한 뒤 gm_construct를 불러와 테스트해요.

Sandbox 위에 작은 GMod gamemode 시작하기

gamemode는 garrysmod/gamemodes에 있는 폴더로, 정보 텍스트 파일과 init.lua, cl_init.lua, shared.lua가 든 gamemode/ 하위 폴더로 이루어져요. 에이전트에게 이 구조를 만들고 DeriveGamemode("sandbox")를 추가해 달라고 하면 내 규칙이 Sandbox 위에 올라가요. 파일에는 make_dir과 write_file을, gamemode와 맵을 시작 매개변수로 넣은 실행 스크립트에는 Shell을 써요. Lua 오류는 게임 콘솔에 나타나고, ocr은 스크린샷에서 그 오류를 읽을 수 있어요. Ask first는 켜 둬요. diff를 모두 읽고 gm_flatgrass에서 테스트해요.

Codelab Station이 하지 않는 일

Codelab Station은 게임 플러그인이 아니고, 게임 클라이언트를 절대 건드리지 않아요. 다른 서버는 범위 밖이에요. 내 것이 아닌 플레이어와 계정도 범위 밖이고, 코드가 맞다고 약속할 수도 없어요. 그러니 모든 변경을 직접 테스트하고 모든 diff를 직접 읽어 주세요.

Windows용 Codelab Station

애드온 하나의 복사본으로 써 보세요

Codelab Station 다운로드 ↗