상위 문서:
스타바운드/모딩 1.1.1. .consumable 파일 만들기
1.1.2. .png 이미지 가져오기 or 만들기
1.2.2. 새로운 발사체(탄환) 만들기 - (선택)
1. 아이템을 직접 만들어보자[편집]
바닐라 파일을 가지고 노는 것도 좋지만, 새로운 물건을 만들어보고 싶습니다.
단, 여기부터는 하나의 파일이 아닌, 여러 파일을 수정, 생성해야되며 각 파일들의 관계도 고려 해야되기 때문에 많은 시간과 노력이 필요합니다.
예를들어 새로운 요리를 만들고 싶다면
- 요리 아이템의 이름과 효과를 결정하는 .consumable 파일이 필요합니다.
- 요리의 모양을 나타내는 16X16 크기의 .png 이미지가 필요합니다.
- 해당요리의 레시피와 제작 가능한 범주를 정의하는 .recipe 파일이 필요합니다.
각 파일들은 저장해야 할 경로가 다르며, 파일 내에서도 입력 가능한 변수가 다릅니다.
처음 아이템을 새로 만들어 볼 때는 아예 새로 시작하기 보다는 바닐라 파일을 복사하거나 따라하는 것도 좋은 방법입니다.
따라하기의 쉬운 예로 하나 만들어 봅시다.
1.1. 새로운 음식을 만들어보자[편집]
포탈(게임)에 등장하는 케이크를 만들어봅시다.
1.1.1. .consumable 파일 만들기[편집]
공통적인 예시로는 빵(bread)을 보고 따라하겠습니다.
다음은 \items\generic\tier1\bread.consumable 파일입니다.
{ "itemName" : "bread", "rarity" : "Common", "price" : 50, "inventoryIcon" : "bread.png", "description" : "Mmm, fresh out of the oven.", "shortdescription" : "Bread", "handPosition" : [0, 6], "effects" : [ [ { "effect" : "foodheal25", "duration" : 60 }, { "effect" : "wellfed", "duration" : 150 } ] ], "blockingEffects" : [ "wellfed" ], "learnBlueprintsOnPickup" : [ "fishdumplings", "meatdumplings", "fishfingers" ] } |
간단한 영어를 할 줄 안다면 각 열 별로 의미하는게 무엇인지 짐작할 수 있습니다.
몇 개 설명해보자면
- "inventoryIcon" 은 해당 아이템이 끌어와 쓰는 이미지 입니다.
- "effects" 해당 아이템의 효과 입니다. 종류는 항목 참고
- "blockingEffects" 는 해당 아이템의 사용을 제한하는 것입니다. 만약 하단의 "wellfed"를 지운다면 캐릭터가 빵만은 원없이 먹을 수 있겠죠.
- "learnBlueprintsOnPickup" 는 해당요리 재작시 해금할 수 있는 요리들 입니다.
텍스트 편집기를 실행하여 위의 파일을 복사해 옵니다. 케이크의 이름은... 실제로 모티프가 된
Black forest cake으로 하겠습니다.
옆에 간단히 팁을 달겠습니다.
{ "itemName" : "Black forest cake", "rarity" : "Rare", [1] 가능한 값으로는"Common" "uncommon" "Rare" "Legendary" 이 있습니다. 굳이 바꿀 필요는 없습니다. "price" : 100000, [2] 아이템의 가격입니다. 아웃포스트에서 이 값의 10% 가격에 팔 수 있습니다. 제작 레시피와는 무관합니다. "inventoryIcon" : "Black forest cake.png",[3] 위에 언급했듯이 해당 아이템이 끌어와 쓰는 이미지 입니다. 이미지 파일은 같은 폴더 내에 있어야 합니다. "description" : "The cake is a lie!", [4] "shortdescription" : "Black forest cake", [5] "itemName" 과 일치하게 하는게 좋습니다. "handPosition" : [0, 6], [6] "effects" : [ [ [7] { "effect" : "foodheal720", "duration" : 300 }, { "effect" : "glow", "duration" : 300 }, { "effect" : "regenerationfast", "duration" : 300 }, { "effect" : "lowgrav", "duration" : 300 } ] ], "blockingEffects" : [ "wellfed" [8] ] [9] "learnBlueprintsOnPickup" 는 삭제했습니다. 어느 스트링을 지울 시 위 열의 , 를 지우는걸 잊지 마세요. } |
아이템의 효과("effect")는 \stats\effects 폴더에 있는것을 이용합니다.
항목 참고자신의 모드 폴더에서 items 폴더 안에 generic 폴더를 만들고 확장자를 .consumable 로 하여 저장합니다.
1.1.2. .png 이미지 가져오기 or 만들기[편집]
기존에 있는 이미지를 가져와서 "inventoryIcon" 에 맞게 이름을 바꿉니다.
새로운 이미지를 만들어 사용해도 됩니다.
이미지 편집 프로그램
아이템을 만들더라도 레시피가 없다면 스타바운드 내에서 재작이 불가능 합니다.
빵의 레시피 파일을 봐 봅시다.
다음은 \recipes\kitchen\tier1\bread.recipe 파일 입니다.
{ "input" : [ { "item" : "wheat", "count" : 1 } ], "output" : { "item" : "bread", "count" : 1 }, "groups" : [ "kitchen", "consumables", "foodhealing" ] } |
"input" 은 재료
"output" 은 재작한 물건
"count" 는 수량 입니다.
읽어보면 밀(wheat) 1개로 빵(bread) 1개를 만든다는 걸 알 수 있습니다.
"groups" 은 해당 레시피가 속해있는 범주를 표시합니다. 간단히 말하자면 태그(tag) 같은 개념입니다.
"groups"이 어디에 쓰이는지 알아보기 위해 목제 조리대(woodencookingtable)의 가구 파일을 봅시다.
다음은 \objects\crafting\woodencookingtable\woodencookingtable.object 파일의 일부입니다.
"interactData" : { "config" : "/interface/windowconfig/craftingfood.config", "filter" : [ "kitchen" ] |
"filter" 에 "kitchen"이 있으니 목제 조리대(woodencookingtable)로 빵을 만들 수 있습니다.
이제 Black forest cake 의 레시피를 작성해 봅시다.
{ "input" : [ { "item" : "wheat", "count" : 4 }, { "item" : "egg", "count" : 2 },
{ "item" : "poison", "count" : 10 }, { "item" : "milk", "count" : 2 }, { "item" : "chocolate", "count" : 2 }, { "item" : "sugar", "count" : 3 }, { "item" : "money", "count" : 1000 } ], "output" : { "item" : "Black forest cake", "count" : 1 }, "groups" : [ "kitchen", "consumables" ] } | 독을 탄 건 기분탓 아이템 명을 표시할 때는 해당 아이템의 파일명을 사용합니다. 예를들어 픽셀 아이템의 파일 명이 money 이기 때문에 "pixel" 이 아닌 "money" 를 사용해야 합니다. 자신의 모드 폴더에서 recipes 폴더 안에 kitchen 폴더를 만들어 확장자를 .recipe 로 하여 저장합니다. 레시피를 적용하기 위해 player.config 파일의 기본 레시피에 해당 레시피를 추가해야합니다. 이 때는 앞서 사용한 "op"의 "add"기능을 사용합니다. 텍스트 편집기에 다음을 입력합니다. | [ { "op" : "add", "path" : "/defaultBlueprints/tier1/-", "value" : { "item" : "Black forest cake" } } ] |
모드 폴더에 바로 player.config.patch 파일로 저장합니다.
1.2. 새로운 무기를 만들어보자 (원거리)[편집]
좀 더 어려운걸 만들어봅시다.
로켓런처를 예시로 봅시다.
다음은 \items\guns\accelerator\feroziumrocket.gun 파일 입니다.
{ "itemName" : "feroziumrocket", "price" : 1875, "inventoryIcon" : "feroziumrocket.png", "dropCollision" : [-8.0, -3.0, 8.0, 3.0], "maxStack" : 1, "rarity" : "Legendary", "description" : "Yup. It's a rocket launcher.", "shortdescription" : "Ferozium Launcher", "image" : "feroziumrocket.png", "handPosition" : [-1, -3], "firePosition" : [21, 2], "recoilTime" : 0.1, "level" : 6, "tooltipKind" : "gun", "weaponType" : "Rocket Launcher", "fireTime" : 2.0, "inaccuracy" : 0.02, "twoHanded" : true, "walkWhileFiring" : false, "projectileType" : "rocketshell", "projectile" : { "speed" : 1.0, "acceleration" : 150, "life" : 3, "power" : 12 }, "muzzleEffect" : { "fireSound" : [ { "file" : "/sfx/gun/rocket_shot.wav" } ], "animation" : "/animations/muzzleflash/bulletmuzzle3/bulletmuzzle3.animation" } } |
보이는 것처럼 .gun 파일에 넣을 수 있는 값들은 매우 다양하며 그 중 몇몇은 필수입니다.
따라서
기존에 있는 파일을 복사해와서 덮어씌우는 방법을 추천합니다.눈여겨 볼 만한 값들만 정리해봅시다. 예시에 없는 값들도 있습니다,
값 | 설명 | 예시 |
"classMultiplier" | 에너지 소모량을 설정합니다. 필수는 아닙니다. | "classMultiplier" : 0[10] |
"handPosition" | 무기가 위치할 좌표를 설정합니다. | "handPosition" : [-1, -3] |
"firePosition" | 탄환과 총구 화염이 위치할 좌표를 설정합니다. | "firePosition" : [21, 2] |
"recoilTime" | 반동 시간을 설정합니다. | "recoilTime" : 0.1 |
"level" | 특정 값이 없습니다. 아무 숫자나 쓰세요 | "level" : 1 |
"tooltipKind" | "gun"으로 둡시다 | "tooltipKind" : "gun" |
"weaponType" | 특정 값이 없습니다. 무기의 이름 아래 표시되는 것입니다. | "weaponType" : "banana" |
"fireTime" | 발사 속도를 결정합니다. 단위는 초(s) | "fireTime" : 0.25 |
"inaccuracy" | 발사체의 오차입니다. 0은 오차 0%입니다. | "inaccuracy" : 0.13 |
"twoHanded" | 한 손 무기인지, 양 손 무기인지를 설정합니다. 원한다면 샷건을 두 개 장비할 수도 있습니다 | "twoHanded" : true |
"walkWhileFiring" | true/false; 마우스를 누르고있을 때 걸을 수 있는지를 설정합니다. | "walkWhileFiring" : false |
"muzzleEffect" | 총구의 이펙트를 추가합니다. | "muzzleEffect" : { "fireSound" : [ { "file" : "/sfx/gun/..." } ], "animation" : "/animations/muzzleflash/..." } |
"fireSound" | 발사음을 설정합니다. "muzzleEffect"의 하위 값입니다. /sfx/gun 폴더 내부의 값을 사용합니다. |
"animation" | 총구 화염의 종류를 설정합니다. "muzzleEffect"의 하위 값입니다. /animations/muzzleflash 폴더 내부의 파일을 사용합니다. |
값 | 설명 | 예시 |
"projectileCount" | 한 번에 발사되는 발사체의 개수를 설정합니다. 1이면 생략해도 됩니다. | "projectileCount" : 3 |
"projectileType" | 발사체의 종류를 설정합니다. 보통 \projectiles\guns 폴더에 있는 파일을 사용합니다. | "projectileType" : "standardbullet" |
"projectile" | 발사체에 속성을 부여합니다. [11] 아래에서 보면 알겠지만 하위 값들이 \projectiles\guns 폴더에 있는 파일의 내용과 중복될 수 있습니다. 중복이 될 시 .gun 파일의 내용으로 덮어씌워집니다. | "projectile" : { "speed" : 1.0, "acceleration" : 150, "life" : 3, "power" : 3.5, "pointLight" : true, "damageKind" : "burning" } |
"speed" | 발사체의 속도를 설정합니다. "projectile"의 하위 값입니다. |
"acceleration" | 발사체의 가속도를 설정합니다. 필수는 아닙니다. "projectile"의 하위 값입니다. |
"life" | 발사체의 지속시간을 설정합니다. 필수는 아닙니다. "projectile"의 하위 값입니다. |
"power" | 발사체의 대미지를 설정합니다. "projectile"의 하위 값입니다. |
"pointLight" | true/false; 발사체의 발광 여부를 설정합니다. |
"damageKind" | 대미지의 종류를 설정합니다. .projectile 파일에 설정되어 있으므로 보통은 생략합니다. |
"statusEffects" | 추가 대미지 효과를 설정합니다. .projectile 파일에 설정되어 있으므로 보통은 생략합니다. |
-todo- |
"fireOnRelease" | true/false; false는 자동발사, true는 누르고있는 마우스를 떼면 발사. 활이나 스테프 등 충전식 무기를 만들때 사용합니다. | "fireOnRelease" : true |
-todo- |
"fireOnRelease" | true/false; false는 자동발사, true는 누르고있는 마우스를 떼면 발사. 활이나 스테프 등 충전식 무기를 만들때 사용합니다. | "fireOnRelease" : true |
-todo- |
1.2.2. 새로운 발사체(탄환) 만들기 - (선택)[편집]
보통은 \projectiles\guns 폴더에 있는 파일을 사용하지만 새로운 탄환이나 다른 게임에 나오는 탄환을 사용하고 싶습니다.
\projectiles\guns\bullets\bouncybullet 폴더에 가면 알 수 있듯이 4가지가 필요합니다.
- icon.png
- 탄환 이름.png
- 탄환 이름.frames
- 탄환 이름.projectile
-todo-
위의 방법과 일치합니다.2. 오브젝트(가구)를 직접 만들어보자[편집]
이 문서의 내용 중 전체 또는 일부는 2023-12-05 02:07:05에 나무위키
스타바운드/모딩/새로 만들기 문서에서 가져왔습니다.