원문

 

준비물

- uTinyRipper: 산소미포함 v466654까지 지원한다.

- 산소미포함 v466654

- K-Parser: JRE 11 필요

- Spriter

 

1. uTinyRipper로 sharedassets0.assets 뜯기 (이 때 다른 assets들도 같은 폴더 안에 들어있어야 함)

2. .png, _anim.bytes, _build.bytes 파일을 폴더 안에 넣고 kparser.jar을 그 상위 폴더에 배치

3. 디컴파일: 여기에 명령창 열기하고 'java -jar kparser.jar scml png경로 build경로 anim경로' 입력

4. Spriter로 scml 수정 (여기서 build, anim를 수정할 수 있음, 전 하도 강종돼서 Notepad++로 했어요.)

- png = 쪼갠 이미지들

- build: height(이미지 높이), id(번호, 0부터 시작), name(이미지 이름), pivot_x(앞뒤 좌표), pivot_y(잘 모름), width(이미지 너비)

ex) <file height="108" id="0" name="hair_034_0" pivot_x="0.5529807" pivot_y="0.7295408" width="130"/>

- anim: 애니메이션

5. 컴파일: 여기에 명령창 열기하고 'java -jar kparser.jar kanim scml경로' 입력

 

Q1. K-Parser를 사용하면 main 어쩌고하는 오류가 뜨면서 png파일밖에 생성이 안돼요.

A1. 저도 이 오류를 겪고 나눠서 작업해봤는데 mouth(입모양)에서 오류가 일어나더라고요. 작은 이미지가 오류의 원인 같습니다.

A1. 폴더명이 한글일때도 이 오류가 발생한 적이 있어요.

 

Q2. 컴파일했는데 이미지가 이렇게 개박살났어요.

A2. scml파일을 수정하지 않았거나, 잘못 수정했을 경우입니다. 알맞게 수정하면 됩니다.

 

Q3. Spriter가 계속 꺼져요. / Spriter 어떻게 사용해요?

A3. 저도 Spriter를 사용하는데 계속 꺼져서 Notepad++로 수정했습니다.

 

Q4. 컴파일했는데 일부 이미지가 날아갔어요.

A4. cmd창에 alias가 있는지 확인해보세요. 모양은 같은데 이름만 다를 경우 이렇게 됩니다.

그리고 이렇게 되면 게임에서 제대로 나타나지 않으니 둘 중 하나를 포토샵으로 수정하여 다시 컴파일하세요.

 

Q5. 분명히 순서 맞췄는데 이상해서 다시 디컴파일 해보니 순서가 바뀌어있어요.

<file height="74" id="0" name="hair_034_0" pivot_x="0.5450237" pivot_y="0.71308726" width="105"/>
<file height="60" id="1" name="hair_034_1" pivot_x="0.5618557" pivot_y="0.684969" width="97"/>
<file height="77" id="2" name="hair_034_2" pivot_x="0.6" pivot_y="0.6826299" width="80"/>
<file height="77" id="3" name="hat_hair_034_2" pivot_x="0.6" pivot_y="0.6826299" width="80"/>
<file height="73" id="4" name="hat_hair_034_0" pivot_x="0.5393808" pivot_y="0.7271756" width="108"/>
<file height="59" id="5" name="hat_hair_034_1" pivot_x="0.5484291" pivot_y="0.69658613" width="93"/>

A5. 저도 원인을 모르겠습니다.

다시 디컴파일해서 scml을 보면 순서가 어떻게 바뀌어있는지 확인할 수 있습니다. 그 순서를 토대로 png 파일을 수정하면 됩니다.

스택으로 불러오기로 위치를 잘 맞추고도 왼쪽으로 6번 이동함

'산소미포함 > Modding' 카테고리의 다른 글

산소미포함 모딩  (0) 2021.07.08

원문

 

준비물

dotPeek
- Visual Studio: '워크로드>데스크톱 및 모바일>.NET 데스크톱 개발'과 '개별 구성 요소>.NET Framework 4.7.1 SDK&타기팅 팩'를 선택하여 설치

- 산소미포함 모드 템플릿: 'C:\Users\사용자이름\Documents\Visual Studio 2019\Templates\ProjectTemplates'에 압축해제

ONI Mod.zip
0.01MB

- uTinyRipper: 산소미포함 v466654까지 지원한다.

- 산소미포함 v466654

- 산소미포함 최신버전

 

[리버스 엔지니어링 용도로 게임 파일 뜯기]

1. dotPeek으로 Assembly-CSharp.dll를 불러온다.
- 위치: C:\Program Files (x86)\Steam\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data\Managed

2. 불러온 Assembly-CSharp.dll에 우클릭하고 Export to Project... 선택
3. Create *.sln file과 Open project in Visual Studio를 선택하고 Export

4. Visual Studio가 자동으로 열린다.

 

[모드 만들기]

1. '파일>새로 만들기>프로젝트'에서 검색하여 ONI Mod 템플릿을 연다.

2. 'C:\Users\사용자 이름\source\repos\솔루션 이름(sln 파일이 위치한 폴더)'에 폴더 lib를 만들어 참조할 dll 파일들을 불러온다.

- 참조할 dll 종류: 0Harmony.dll, Assembly-CSharp.dll, Assembly-CSharp-firstpass.dll, Unity.TextMeshPro.dll, UnityEngine.CoreModule.dll, UnityEngine.dll, UnityEngine.ImageConversionModule.dll, UnityEngine.UI.dll

- dll 위치: C:\Program Files (x86)\Steam\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data\Managed

3. 솔루션 탐색기에서 솔루션 밑에 있는 게 프로젝트이다. 프로젝트에 우클릭하고 빌드

4. mod.yaml은 모드 이름&설명, Patches.cs는 모드 내용

5. dotpeek으로 디컴파일했을 때랑 dnSpy로 디컴파일했을 때 다르다.

6. dnSpy가 코드 복붙에서 더 긍정적인 결과를 보인다.

7. dll은 Bin\Release에 있는 걸 사용

+ Recent posts