[include(틀:상위 문서, top1=스타바운드/모딩)] [목차] == 아이템을 직접 만들어보자 == 바닐라 파일을 가지고 노는 것도 좋지만, 새로운 물건을 만들어보고 싶습니다. 단, 여기부터는 하나의 파일이 아닌, 여러 파일을 수정, 생성해야되며 각 파일들의 관계도 고려 해야되기 때문에 많은 시간과 노력이 필요합니다. 예를들어 새로운 요리를 만들고 싶다면 * 요리 아이템의 이름과 효과를 결정하는 .consumable 파일이 필요합니다. * 요리의 모양을 나타내는 16X16 크기의 .png 이미지가 필요합니다. * 해당요리의 레시피와 제작 가능한 범주를 정의하는 .recipe 파일이 필요합니다. 각 파일들은 저장해야 할 경로가 다르며, 파일 내에서도 입력 가능한 변수가 다릅니다. 처음 아이템을 새로 만들어 볼 때는 아예 새로 시작하기 보다는 바닐라 파일을 복사하거나 따라하는 것도 좋은 방법입니다. 따라하기의 쉬운 예로 하나 만들어 봅시다. === 새로운 음식을 만들어보자 === [[Portal(게임)|포탈(게임)]]에 등장하는 케이크를 만들어봅시다. ==== .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" 해당 아이템의 효과 입니다. 종류는 [[스타바운드/모딩/stats/effects|항목 참고]] * "blockingEffects" 는 해당 아이템의 사용을 제한하는 것입니다. 만약 하단의 "wellfed"를 지운다면 캐릭터가 빵만은 원없이 먹을 수 있겠죠. * "learnBlueprintsOnPickup" 는 해당요리 재작시 해금할 수 있는 요리들 입니다. 텍스트 편집기를 실행하여 위의 파일을 복사해 옵니다. 케이크의 이름은... 실제로 모티프가 된 [[케이크(Portal)#s-3|Black forest cake]]으로 하겠습니다. 옆에 간단히 팁을 달겠습니다. ||{ "itemName" : "Black forest cake", "rarity" : "Rare", [* 가능한 값으로는"Common" "uncommon" "Rare" "Legendary" 이 있습니다. 굳이 바꿀 필요는 없습니다.] "price" : 100000, [* 아이템의 가격입니다. 아웃포스트에서 이 값의 10% 가격에 팔 수 있습니다. 제작 레시피와는 무관합니다.] "inventoryIcon" : "Black forest cake.png",[* 위에 언급했듯이 해당 아이템이 끌어와 쓰는 이미지 입니다. 이미지 파일은 같은 폴더 내에 있어야 합니다.] "description" : "The cake is a lie!", [* 아이템의 설명입니다. 한글로 써도 됩니다.] "shortdescription" : "Black forest cake", [* "itemName" 과 일치하게 하는게 좋습니다.] "handPosition" : [0, 6], [* 아이템의 이미지가 적용되는 좌표입니다.] "effects" : [ [ [* [[스타바운드/모딩/stats/effects|여기]]에서 원하는걸 가져옵니다.] { "effect" : "foodheal720", "duration" : 300 }, { "effect" : "glow", "duration" : 300 }, { "effect" : "regenerationfast", "duration" : 300 }, { "effect" : "lowgrav", "duration" : 300 } ] ], "blockingEffects" : [ "wellfed" [* 그대로 둡시다.] ] [* "learnBlueprintsOnPickup" 는 삭제했습니다. '''어느 스트링을 지울 시 위 열의 , 를 지우는걸 잊지 마세요.'''] } || * 음식의 효과 아이템의 효과("effect")는 \stats\effects 폴더에 있는것을 이용합니다. [[스타바운드/모딩/stats/effects|항목 참고]] 자신의 모드 폴더에서 items 폴더 안에 generic 폴더를 만들고 확장자를 .consumable 로 하여 저장합니다. ==== .png 이미지 가져오기 or 만들기 ==== 기존에 있는 이미지를 가져와서 "inventoryIcon" 에 맞게 이름을 바꿉니다. 새로운 이미지를 만들어 사용해도 됩니다. 이미지 편집 프로그램 * [[http://www.getpaint.net/index.html|Paint.NET]] * [[http://www.humanbalance.net/gale/us/|Graphics Gale]] ==== .recipe 파일 만들기 ==== 아이템을 만들더라도 레시피가 없다면 스타바운드 내에서 재작이 불가능 합니다. 빵의 레시피 파일을 봐 봅시다. 다음은 \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 파일로 저장합니다. === 새로운 무기를 만들어보자 (원거리) === 좀 더 어려운걸 만들어봅시다. ==== .gun 파일 만들기 ==== 로켓런처를 예시로 봅시다. 다음은 \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[* 에너지 소모량이 0이 됩니다.] || ||<:>"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" ||한 손 무기인지, 양 손 무기인지를 설정합니다. [br]원한다면 샷건을 두 개 장비할 수도 있습니다 ||"twoHanded" : true || ||<:>"walkWhileFiring" ||true/false; 마우스를 누르고있을 때 걸을 수 있는지를 설정합니다. ||"walkWhileFiring" : false || ||<:>"muzzleEffect" ||총구의 이펙트를 추가합니다. ||<|3> "muzzleEffect" : { "fireSound" : [ { "file" : "/sfx/gun/..." } ], "animation" : "/animations/muzzleflash/..." }|| ||<:>"fireSound"||발사음을 설정합니다. "muzzleEffect"의 하위 값입니다. [br]/sfx/gun 폴더 내부의 값을 사용합니다.|| ||<:>"animation"|| 총구 화염의 종류를 설정합니다. "muzzleEffect"의 하위 값입니다. [br]/animations/muzzleflash 폴더 내부의 파일을 사용합니다.|| * 발사체 관련 ||<:>값||<:>설명||<:>예시|| ||<:>"projectileCount" ||한 번에 발사되는 발사체의 개수를 설정합니다. 1이면 생략해도 됩니다. ||"projectileCount" : 3 || ||<:>"projectileType" ||발사체의 종류를 설정합니다. [br]보통 \projectiles\guns 폴더에 있는 파일을 사용합니다.||"projectileType" : "standardbullet" || ||<:>"projectile"||발사체에 속성을 부여합니다. [* 아래에서 보면 알겠지만 하위 값들이 \projectiles\guns 폴더에 있는 파일의 내용과 중복될 수 있습니다. 중복이 될 시 .gun 파일의 내용으로 덮어씌워집니다.]||<|8> "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"||대미지의 종류를 설정합니다. [br].projectile 파일에 설정되어 있으므로 보통은 생략합니다.|| ||<:>"statusEffects"||추가 대미지 효과를 설정합니다. [br].projectile 파일에 설정되어 있으므로 보통은 생략합니다.|| ||<:><-3>-todo-|| * 활 제작 시 추가 ||<:>"fireOnRelease" ||true/false; false는 자동발사, true는 누르고있는 마우스를 떼면 발사. [br]활이나 스테프 등 충전식 무기를 만들때 사용합니다.||"fireOnRelease" : true || ||<:><-4>-todo-|| * 스테프 제작 시 추가 ||<:>"fireOnRelease" ||true/false; false는 자동발사, true는 누르고있는 마우스를 떼면 발사. [br]활이나 스테프 등 충전식 무기를 만들때 사용합니다.||"fireOnRelease" : true || ||<:><-4>-todo-|| ==== 새로운 발사체(탄환) 만들기 - (선택) ==== 보통은 \projectiles\guns 폴더에 있는 파일을 사용하지만 새로운 탄환이나 다른 게임에 나오는 탄환을 사용하고 싶습니다. \projectiles\guns\bullets\bouncybullet 폴더에 가면 알 수 있듯이 4가지가 필요합니다. * icon.png * 탄환 이름.png * 탄환 이름.frames * 탄환 이름.projectile -todo- ==== .recipe 파일 만들기 ==== [[스타바운드/모딩/새로 만들기#s-1.1.3|위의 방법과 일치합니다.]] == 오브젝트(가구)를 직접 만들어보자 == [[분류:스타바운드]]