|
2021-12-12 00:44
조회: 13,107
추천: 65
원하는 이펙트를 내 무기,방어구에 응용시켜보기 -json파일 변형편-안녕하세요.
저번에 별거아닌 정보를 드렸는데에도 불구하고 반응이 생각보다 좋아 후속편을 이렇게 작성하게 되었습니다. 모든 지식의 습득은 무료이나, 지식을 습득하려는 노력은 해당 지식 제공자에 대한 예의입니다. 오늘은 제목과 같이 원하는 모드를 내 무기, 방어구에 응용시켜보는 기초편 입니다. 그냥 막무가내로 다른 사람의 모드를 훔쳐다 쓰라는 취지가 아닌 누군가는 모드를 올려주셨으나, 그 모드를 사용하는데 나와 사용하는 무기 또는 방어구가 달라 적용하기 어려우셨던 분들을 위한 글입니다. 이 글을 읽고 다른 모드들을 응용하시는 것은 자유이시겠지만, 반드시 원작자의 출처는 남기시기 바랍니다. 자, 이제 시작합니다. 이번 시간의 가장 큰 핵심은 아래와 같습니다. 1. 기본적인 영어능력 (weapon=무기 / armor=방어구 / misc=miscellaneous=이것저것 다양한=룬or열쇠 등 잡템) 자 이정도 영어는 다 아시죠? 웨폰, 아머는 아실거고 세번째 단어는 조금 생소하실 수 있는데 무튼 저렇습니다. 이 세가지를 이해하셨다면, 본인 디아 모드가 깔린 폴더에 들어가봅니다. 디아설치경로>mods>모드이름>모드이름.mpq>data>hd>items 여기까지 진입하셨다면 어디서 많이 본듯한 폴더명이 세개가 보일겁니다. 네 그렇습니다. 방금 10초전에 읽으신 armor, misc, weapon 폴더가 보이실겁니다. (물론 일부 종합스킨이 아닌경우 무기나 방어구의 외형변경에 대한 파일이 없기에 안보일 수 있습니다.) 그럼 이게 무슨뜻일까요? weapon 폴더에는 무기와 관련된 파일들이, armor폴더에는 방어구와 관련된 파일들이, misc폴더에는 룬과 열쇠에 관한 파일들이 있다는 것이겠죠? 실제로 들어가보면 그렇습니다. 여기까지 하셨다면 오늘 내용의 50%는 다 따라오신겁니다. 2. json파일과 texture파일의 구분 이내용은 저번 게시글에 올렸으니 간략하게 설명합니다. json파일은 이펙트, 외형을 담당하는 파일이며 texture파일은 질감 또는 색감과 같은 텍스처들을 담당하는 파일입니다. 이해가 안되셨다구요? 예를들어, 여러분이 도끼를 들고 있는데 망치로 바꾸고 싶다? 모너크를 들고있는데 본쉴드로 바꾸고싶다? 그러면 바로 외형을 담당하는 파일인 json 파일을 건드는 것입니다. 또 다른 예로, 여러분이 들고있는 모너크에 들어가는 이미지를 아이유로 넣고싶다? 본쉴드의 색상을 검정으로 바꾸고싶다? 그러면 바로 색감과 질감을 담당하는 texture 파일을 건드는 것입니다. 그래도 이해가 안되셨다면 제 이전 작성글을 확인해주세요. 이 두가지를 이해하셨다면 여러분은 모드 폴더에서 내가 원하는 작업이 생겼을 경우에 어디로 들어가야 하는지 네비게이션이 딱 잡히셨을 겁니다. 자 그러면 정말 오늘의 알짜배기 내용으로 들어갑니다. 여러분이 변경하고자 하는 무기 또는 방어구의 JSON 파일을 하나 엽니다. 그럼 하얀 메모장에 엄청난 영어글자가 쫘르르륵 써있죠... (일반 유저를 대상으로 작성하는 글이니 별도의 프로그램을 깔아서 보는 법은 생략합니다.) 그러면 여기서 건들여볼 것은 다른것이 아닌 이펙트 관련 소스만 건들 것인데 그것을 어떻게 아는지에 대해서부터 설명드리겠습니다. 기본적으로 이펙트들은 블리자드(디아블로2 레저렉션 개발자)가 이미 디아블로2라는 게임에 만들어둔 다양한 이펙트들을 불러오는 것으로 사용합니다. 예를들면, 파란 불꽃을 원한다? 웨이포인트에서 나오는 불꽃을 사용 빨간 불꽃을 원한다? 마을에 있는 횃불에서 나오는 불꽃을 사용 이런식이죠. 이렇기 때문에 단순히 이 메모장에서 저기 내가 원하는 이펙트들을 가져와서 불러와주기만 하면 되는데 그것을 경로지정이라고 하며 filename이라는 구문에 작성해주는 것입니다. 해당 경로지정에 있어 슬래시(/)표시는 폴더가 하위폴더임을 의미해줍니다. data/hd/vfx 라면 data폴더 밑 hd 폴더 밑 vfx폴더라는 것을 의미한다는 것이죠. 자 그럼 다시 본론으로 와서, 이 이펙트들은 어떻게 찾느냐 예외가 있는지는 저도 아직 모든 파일을 뒤져본 것이 아니고 제 경험에 한정된 것이기에 더 많을 수 있지만 이펙트는 타입이 VfxDefinition~~ 식으로 지정되어있습니다. Ctrl+f 를 누른 후 VfxDefinition을 검색하면 아마 메모장 최 하단으로 움직일 것입니다. 바로 거기에 속한 모든 것들이 해당 이펙트에 대한 내용들입니다. 이펙트가 여러개 접목되어있는 경우 이펙트들에 관한 엔티티들이 여러개 들어가있을 것입니다. 제 자벨린 파일의 이펙트 구문만을 떼어와보았습니다. { "type": "Entity", "name": "entity_root", "id": 1079187010, "components": [{ "type": "VfxDefinitionComponent", "name": "entity_root_VfxDefinition", "filename": "data/hd/vfx/particles/missiles/fire_arrow/fx_fire_projectile_arrow.particles", "hardKillOnDestroy": false }, { "type": "TransformDefinitionComponent", "name": "TransformDefinitionComponent002", "position": { "x": 0, "y": -5.5, "z": 0 }, "orientation": { "x": 0.7, "y": 0.0, "z": 0.0, "w": 1.0 }, "scale": { "x": 1.3, "y": 1.3, "z": 1.3 }, "inheritOnlyPosition": false } ] } 자 위 소스가 바로 이펙트 소스인데요, 제가 설명 드린 대로 type에는 vfxdefinition이라고 되어있죠. 또 그 밑에는 filename 해서 해당 이펙트의 경로가 지정되어있습니다. 결국 이 이펙트는 filename에 지정되어있는 이펙트를 가져와 쓸 것이라는 말이 됩니다. 무기에다가 파란 불꽃이펙트를 가져와 쓰고 싶다면 무기의 json파일을 열어 맨 아래에 저 구문을 쓴 후 filename에 파란 불꽃이펙트가 있는 경로를 적어주면 됩니다. 경로를 잘 모르겠다면 내가 참고할만한 다른 모더들의 이펙트 관련 json파일 소스를 열어서 검색해보면 정말 큰 도움이 될 것입니다. 자 이제 이펙트를 가져오는 데에 성공했다면 내 무기나 방어구에 맞게 위치 및 크기 및 방향 조절을 해서 어우러지도록 해야겠죠? 무기가 길쭉하다면 길이를 늘리고 두께를 얇게 만드는 것과 같은 작업이 되겠죠. 그것이 소스 맨 아래부분에 다 있습니다. 첫번째, position 위치라는 뜻이죠 position은 이펙트가 표시될 좌표를 찍어주는 작업으로써 x,y,z의 변수로 지정되어 있는데 변수가 3개이므로 3D적인 공간감각이 필요하겠죠 가로,세로,높이 라고 표현을 해야하나.. 이걸 말로 표현하면 직관성이 떨어지기에 이 x,y,z값의 숫자만 바꿔주면서 직접 위치를 바꾸어 보시기 바랍니다. 숫자를 0.1씩 변경하면 드라마틱한 차이가 없어 내가 어떤 방향으로 움직이게 했는지 구분이 안갈 수 있기에 5정도 +- 해가면서 직접 해보시는게 감이 빨리 오실 것입니다. 두번째, orientation 사전적 정의로는 목표하는 방향, 지향을 의미하나 쉽게 이해하려면 이것은 축회전이라고 보시면됩니다. 이건 특이하게도 4가지의 변수로 이루어져있는데 저도 이부분은 조금 설명하기 힘든 어려운 내용이나 축회전을 4방향으로 모델링한 것으로 추정됩니다. 이 또한 위의 포지션 값과 마찬가지로 직접 +-해보며 만져보시면서 조정하시는것을 추천드립니다. 세번째, scale 크기입니다. x,y,z 로 변수가 세개로 되어있는데 이는 포지션의 변수와 일맥상통하는 변수로써 가로,세로,높이의 크기를 조정하는 것입니다. 웬만하면 이펙트가 심하게 이질적이어보이거나 변질되는것을 우려하시는 분들께서는 x,y,z값을 같은값으로 설정하시는것을 추천드리나 일부 이펙트는 얇은 무기와 같은 곳에 어울리게 표현하려면 부득이하게 어느 한 좌표값의 스케일을 늘려야 하는 경우가 발생하기도 하므로 유도리있게 변경하시면 되겠습니다. 이 세가지의 값은 여러분들의 취향에 맞게 변경하시되 코드 이해의 기본은 하나씩 바꿔보는 것입니다. 이것저것 수치를 한번에 만지다보면 내가 뭘 만져야하는지 오히려 더 어렵게 다가올 수 있습니다. 따라서 position, orientation, scale 값들 각각 안에서도 단 하나의 좌표값만을 변경해보며 감을 찾으시면서 천천히 작업하시길 바랍니다. 물론 모든 값을 변경하고 난 후에는 메모장을 저장 후 닫고, 그 이후 게임의 방을 나갔다 들어와야 적용이 됩니다. 코드의 기본은 괄호의 열고 닫음에 있습니다. 그것이 코드의 시작과 끝을 알리기 때문인데요 가끔 일부 모더분들 조차도 실수하는 부분인데 { 로 시작했으면 }로 닫혀야하며 [ 로 시작했으면 ]로 닫혀야합니다. 그런데 일부 다른 파일을 가져오는 경우 무심하게 드래그하다보면 이 작은 괄호 하나가 빠지게 되어 모델 자체가 사라지게 되버리는 현상이 발생합니다. 따라서 정말 꼼꼼하게 작업하기 위해서는 전문 코딩툴을 받는것을 권장드립니다 (코딩 툴에서는 괄호 구분을 명확하게 할 수 있도록 기본적인 세팅들이 되어있습니다. 가독성도 좋구요) 또는 정말 괄호 하나하나까지 완벽하게 복사 붙여넣기 하시기 바랍니다. 이상....오늘의 정보제공은 여기까지 하도록 하겠습니다. 감사합니다.
EXP
742
(42%)
/ 801
|
Itttt