원신 모드 ini 파일 수동 수정하는 캐릭터 일러스트

왜 자동 툴 대신 ‘수동 수정’인가?

솔직히 말씀드리자면, 현재 커뮤니티에 돌아다니는 ‘근카픽스툴’ 같은 자동화 프로그램들은 완벽하지 않습니다. 저도 처음엔 편하려고 툴을 돌렸다가 멀쩡하던 모드까지 텍스처가 깨지는 경험을 수도 없이 했습니다. 결국 답은 직접 코드를 보고 고치는 것(Manual Fix)입니다.

어렵게 생각하실 필요 없습니다. 복잡한 코드를 다 이해할 필요도 없고요. 딱 3가지 규칙만 기억하면 됩니다. 이 글을 끝까지 읽으시면 여러분은 이제 픽스툴 없이도 스스로 모드를 고치는 ‘모드 장인’이 되실 수 있습니다.

핵심 로직: ORFix vs NNFix 구분하기

모드 수정의 핵심은 노말맵(Normal Map)의 유무입니다. .ini 파일을 열었을 때, TextureOverride 섹션에 어떤 맵들이 연결되어 있는지 확인하는 것이 첫 번째 단계입니다.

구분 슬롯 구성 (ps-t) 필요한 명령어 (Fix Command)
노말맵 존재 시 ps-t0 = NormalMap
ps-t1 = DiffuseMap
ps-t2 = LightMap
run = CommandList\global\ORFix\ORFix
노말맵 없음 ps-t0 = DiffuseMap
ps-t1 = LightMap
run = CommandList\global\ORFix\NNFix
FaceHead (화장) ps-t0 = DiffuseMap (단독) ps-t0 을 this 로 변경

💡 꿀팁: .ini 파일이 너무 길어서 겁난다고요? 다 무시하고 [TextureOverride…]라고 적힌 구간 중 Head, Body, Dress, EYE, FaceHeadDiffuse 이 5가지만 찾아서 확인하세요. 해쉬값(hash)이나 IB 데이터는 절대 건드리지 마세요!

실전 예제 1: 일반적인 캐릭터 모드 (Aino)

가장 기본적인 형태의 모드를 예로 들어보겠습니다. 아래 코드를 보면서 차이점을 비교해보세요.

1. 노말맵이 있는 경우 (Body, Dress 등)

[TextureOverrideAinoHead]
ps-t0 = ResourceAinoHead            ; 노말맵
ps-t1 = ResourceAinoHeadDiffuse     ; 디퓨즈맵
ps-t2 = ResourceAinoHeadLightMap    ; 라이트맵
run = CommandList\global\ORFix\ORFix ; <- 여기에 ORFix 추가!

위와 같이 ps-t0, t1, t2가 모두 존재하면 ORFix를 실행 구문에 넣어주면 해결됩니다.

2. 노말맵이 없는 경우 (Eye, Hair 등)

[TextureOverrideAinoEyeHead]
ps-t0 = ResourceAinoEyeHeadDiffuse  ; 디퓨즈맵
ps-t1 = ResourceAinoEyeHeadLightMap ; 라이트맵
run = CommandList\global\ORFix\NNFix ; <- 여기에 NNFix 추가!

노말맵 없이 바로 디퓨즈와 라이트맵만 연결된 경우 NNFix를 사용합니다.

실전 예제 2: 토글/병합 모드 (푸리나)

최신 모드들은 여러 의상이 합쳐져 있거나 토글 기능이 있어 코드가 조금 다르게 생겼을 수 있습니다. 하지만 원리는 같습니다. run = CommandList... 바로 아랫줄에 픽스 명령어를 넣어주면 됩니다.

[TextureOverrideFurinaBody]
hash = 045e580b
match_first_index = 57279
run = CommandListFurinaBody
run = CommandList\global\ORFix\ORFix ; <- 기존 run 명령줄 아래에 추가

위 코드처럼 TextureOverride 덩어리 안에 ps-t 정보가 안 보일 때가 있습니다. 당황하지 마세요. 그건 CommandListFurinaBody 안에 텍스처 정보가 뭉쳐져 있다는 뜻입니다. 그냥 그 덩어리 전체에 ORFix를 적용한다고 생각하고 run 명령어 아래에 한 줄을 추가해주면 됩니다.

주의! FaceHeadDiffuse (얼굴/화장) 수정법

얼굴 텍스처(FaceHeadDiffuse)는 처리 방식이 완전히 다릅니다. 이건 ORFixNNFix를 넣는 게 아니라, 변수 할당 방식을 바꿔줘야 합니다.

수정 전:

[CommandListFurinaFaceHeadDiffuse]
if $swapvar == 0
    ps-t0 = ResourceFurinaFaceHeadDiffuse.0 ; <- ps-t0으로 되어 있음
endif

수정 후 (정답):

[CommandListFurinaFaceHeadDiffuse]
if $swapvar == 0
    this = ResourceFurinaFaceHeadDiffuse.0 ; <- ps-t0을 'this'로 변경
endif

이 부분만 ps-t0this로 바꿔주시면 얼굴이 까맣게 나오거나 텍스처가 깨지는 현상이 완벽하게 해결됩니다.

자주 묻는 질문 (FAQ)

Q. 수정을 잘못해서 게임이 튕기면 어떡하나요?
A. 작업을 시작하기 전에 반드시 mods 폴더나 해당 캐릭터의 .ini 파일을 백업(복사)해두는 것을 추천합니다. 원본만 있다면 언제든 되돌릴 수 있습니다.

Q. ps-t0, t1 순서가 바뀌어 있으면 어떡하나요?
A. 순서보다는 연결된 리소스의 이름을 보세요. 보통 Normal, Diffuse, LightMap 등의 단어가 파일명에 포함되어 있습니다. 노말맵 유무만 확실히 파악하면 됩니다.

Q. 이 방법은 모든 캐릭터에 적용되나요?
A. 네, 원신 모딩의 기본 구조는 동일하기 때문에 99%의 캐릭터 모드에 동일하게 적용되는 만능 해결법입니다.

관련 글

답글 남기기