vpk에서 검시대까지: 무기 상자, 컬렉션, 요원이 게임 내에서 '호명'되는 방식

2026년 10월 13일 12:00:09

C5GAME에서 스킨을 볼 때 우리는 렌더링 이미지, 마모 범위, 가격을 본다. 하지만 게임 클라이언트는 이를 인식하지 않는다. 무기 상자, 컬렉션, 요원은 리소스 계층에서 각기 다른 경로를 걸으며, 이는 페이지와 게임 간의 불일치를 설명한다.

서론

C5GAME에서 스킨을 넘겨볼 때, 우리가 보는 것은 렌더링 이미지, 하나의 마모 범위, 하나의 가격이다. 그러나 게임 클라이언트는 이것들을 알지 못한다. 클라이언트가 아는 것은 scripts/items/items_game.txt 안의 한 줄 항목, materials/ 아래의 .vmat, 그리고 models/ 안의 .vmdl이다. 무기 상자, 컬렉션, 요원—이 세 가지는 리소스 계층에서 서로 다른 세 갈래 길을 걷는다. 그리고 이 세 갈래 길은 '왜 페이지와 게임이 서로 안 맞는가'라는 오래된 질문에 대한 해답을 제공한다.

무기 상자: 산개한 스킨 더미가 아닌 하나의 컨테이너 ID

많은 사람들은 무기 상자 = 스킨 한 바구니라고 생각한다. 실제로 리소스 구조에서 상자 자체는 독립된 아이템이며, 고유한 prefab, 고유한 개봉 애니메이션 리소스, 고유한 사운드 이벤트를 가진다. 상자에서 무엇이 나오는지는 items_game.txt의 client_loot_lists에 기록되며, 일련의 '아이템 정의 인덱스'를 통해 구체적인 스킨을 가리킨다.

이는 두 가지를 의미한다. 첫째, 상자 안의 스킨은 상자 모델에 '포장'되어 있는 것이 아니다. 당신이 개봉해서 얻은 그 AK와 상점에서 직접 보는 그 AK는 동일한 아이템 정의를 가리키며, 단지 획득 경로만 다를 뿐이다. 둘째, 상자의 개봉 애니메이션(회전하는 빛줄기)은 고정된 리소스로, 당신이 군용 등급을 뽑든 기밀 등급을 뽑든 구분하지 않는다. 희귀도는 빛줄기가 멈출 때의 하이라이트와 사운드 레이어에만 영향을 미친다.

그래서 C5GAME에서 어떤 상자를 볼 때, 페이지에 표시되는 '가능한 내용'은 업스트림이 loot list를 펼쳐놓은 결과이며, 게임에서 실제로 보는 것은 그 빛줄기가 돌다가 어느 칸에 멈추는지이다. 둘 다 동일한 아이템 정의 집합을 설명하지만, 제시 논리는 완전히 다르다—하나는 한 번에 펼쳐 보여주고, 다른 하나는 확률적 착지점이다.

컬렉션: 맵, 토너먼트와 묶인 네임스페이스

컬렉션(Collection)은 리소스 계층에서 '네임스페이스'에 더 가깝다. 상자가 아니며 개봉 애니메이션도 없다. 그 역할은 일련의 스킨에 동일한 출처 태그를 붙이는 것이다. 예를 들어 특정 맵의 드롭 풀, 특정 토너먼트의 기념품 풀 등이다.

핵심은 컬렉션 자체가 마모를 결정하지도, 패턴을 결정하지도 않는다는 점이다. 그것은 단지 '이 스킨이 어느 풀에 속하는가'만 결정한다. 당신 손에 있는 총이 어떻게 생겼는지를 실제로 결정하는 것은 아이템 정의의 paint_kit 인덱스, 그리고 그 paint kit에 대응하는 .vmat와 텍스처이다. 마모는 런타임에 seed로 계산되며, 패턴 위치도 마찬가지다.

이것은 오래된 현상을 설명한다. 동일한 스킨의 기념품 버전과 일반 버전은 모델, 텍스처, 마모 논리가 완전히 동일하며, 차이는 기념품에 금색 스티커와 명판이 추가된 것뿐이다. C5GAME에서 기념품을 볼 때 페이지는 스티커와 명판을 강조하지만, 게임에서 F를 눌렀을 때 첫눈에 보이는 것은 여전히 총 자체의 도장이다—컬렉션이라는 태그는 총신에 그려지지 않는다.

요원: 세 리소스 중 유일하게 '뼈대'를 가진 것

요원이 앞의 둘과 가장 다른 점은 완전한 캐릭터 모델, 뼈대, 얼굴 바인딩, 음성 이벤트를 가진다는 것이다. 무기 상자와 컬렉션은 '아이템 계층'의 것이고, 요원은 '캐릭터 계층'의 것이다.

리소스 구조에서 요원은 models/player/ 아래의 모델, 그리고 한 세트의 재질과 한 세트의 음성에 대응한다. 어떤 요원을 선택하든, 바뀌는 것은 캐릭터 리소스 참조이지 인벤토리 한 칸의 텍스처가 아니다. 이것이 요원의 '검시'와 총의 검시가 완전히 다른 이유다—총은 F로 도장을 보고, 요원은 선택 화면에서 모델과 장갑을 보며, 게임에 들어가면 1인칭 손 모델과 소매만 볼 수 있다.

그래서 고전적인 어긋남이 생긴다: C5GAME 페이지에서 요원은 전신 일러스트지만, 게임에서는 대부분의 시간 동안 두 손만 본다. 페이지는 모델 리소스를 보여주고, 게임은 1인칭 하위 모델을 호출한다. 둘은 같은 근원이지만 시점이 다르므로 자연히 느낌이 다르다.

세 갈래 길을 나란히 보기

무기 상자는 컨테이너로, loot list를 통해 아이템 정의를 가리킨다. 컬렉션은 태그로, 네임스페이스를 통해 아이템 정의를 분류한다. 요원은 캐릭터로, 모델과 음성 리소스를 통해 아이템 정의 밖에 독립해 있다. 셋 다 같은 상점 인터페이스에 나타나지만, 클라이언트에서는 세 가지 다른 논리로 호출된다.

그러니 다음에 C5GAME에서 물건을 볼 때, 한 걸음 더 생각해보자: 당신이 보는 이 이미지가 아이템 정의의 렌더링인지, 모델 리소스의 일러스트인지, 아니면 컬렉션 태그 아래의 한 항목인지. 이 점을 명확히 하면, 페이지와 게임 사이의 그 '안 맞는' 느낌은 꽤 흥미로운 일이 될 것이다.