Libraries - kuimoani/defold GitHub Wiki

Libraries

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์€ ํ”„๋กœ์ ํŠธ๊ฐ„ ์—์…‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”๋‰ด์–ผ์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ ์šฉ๋„๋กœ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์™„์„ฑ๋œ ํ”„๋กœ์ ํŠธ์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋กœ ์—์…‹์„ ๋ณต์‚ฌํ•˜๋ ค ํ•  ๊ฒฝ์šฐ. ์ด์ „ ๊ฒŒ์ž„์˜ ์†ํŽธ์„ ์ œ์ž‘ํ•  ๊ฒฝ์šฐ ์‰ฝ๊ฒŒ ์—์…‹์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•ด์„œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๊ฑฐ๋‚˜ ์ŠคํŽ˜์…œ๋ผ์ด์ง• ํ•  ๊ฒฝ์šฐ
  • ์ง์ ‘ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์™„์„ฑ๋œ ์˜ค๋ธŒ์ ํŠธ๋‚˜ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ. ์ด ๋ฐฉ๋ฒ•์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‚˜ ์‚ฌ์šด๋“œ ์—์…‹, ๊ทธ๋ž˜ํ”ฝ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ๊ณตํ†ต ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์„ ์ €์žฅํ•˜๋Š”๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Setting up library sharing

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต์œ ๋œ ์Šคํ”„๋ผ์ดํŠธ์™€ ํƒ€์ผ ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋‹น์‹ ์€ Defold ๋Œ€์‰ฌ๋ณด๋“œ(์ž์„ธํ•œ ๋‚ด์šฉ์€ Workflow ๋ฌธ์„œ ์ฐธ๊ณ )์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ๊ณต์œ ํ•˜๋ ค๋Š” ํด๋”๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์…‹ํŒ…์—์„œ "include_dirs" ํ”„๋กœํผํ‹ฐ์— ์ด ํด๋”๋“ค์˜ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๊ณต๋ฐฑ(space)๋กœ ์ด๋ฆ„์„ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Include dirs

Defold ์„œ๋ฒ„๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ณต์œ ๋˜๋Š” ํด๋”๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋Š”๊ฑธ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ Synchronize ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์—, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ„์น˜๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Library URL

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ‘œ์ค€ URL์„ ํ†ตํ•ด ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ๋Š” Dashboard์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” Library URL์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  URL์„ ๋ณต์‚ฌ๊ฑฐ๋‚˜ ์ ์–ด๋‘๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Library URL

Setting up library dependencies

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—‘์„ธ์Šค ํ•˜๋ ค๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Project settings์—์„œ "dependencies" ํ”„๋กœํผํ‹ฐ์— ์•„๊นŒ ๋ณต์‚ฌํ•œ URL์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์ข…์† ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ณต๋ฐฑ(space)์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Dependencies

์ด์ œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด Project > Fetch Libraries ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์—ด ํ•„์š” ์—†์ด ์ข…์†์„ฑ์ด ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ์— ์ด ์ž‘์—…์ด ์ˆ˜ํ–‰ ๋ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ ํ•˜๊ฑฐ๋‚˜ ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋™๊ธฐํ™” ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Fetch Libraries

์ด์ œ Project Explorer์— ๊ณต์œ ๋œ ํด๋”๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๊ณต์œ ๋œ ๋ชจ๋“ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ๋™๊ธฐํ™” ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Library setup done

Troubleshooting

Broken references

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต์œ ๋Š” ๊ณต์œ ๋œ ํด๋”์— ์œ„์น˜ํ•œ ํŒŒ์ผ๋“ค๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ณต์œ  ๊ณ„์ธต๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ์œ„์น˜์˜ ์—์…‹ ์ฐธ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ฐธ์กฐ ๊ฒฝ๋กœ๊ฐ€ ๊นจ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, "shared_sprites" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋”์—๋Š” ์•„ํ‹€๋ผ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„ํ‹€๋ผ์Šค์—๋Š” PNG ์ด๋ฏธ์ง€๋“ค์ด ๋ชจ์—ฌ์ ธ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ด ์ด๋ฏธ์ง€๋“ค์€ ๊ณต์œ ๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.

Bad references

Text Editor(๊ธฐ๋ณธ Atlas Editor ๋ง๊ณ )๋กœ ์•„ํ‹€๋ผ์Šค๋ฅผ ์—ด์–ด๋ณด๋ฉด ์ˆ˜์ง‘๋œ ์ด๋ฏธ์ง€๋“ค์˜ ๊ฒฝ๋กœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

images {
  image: "/cards_example/images/clubmaster.png"
}
images {
  image: "/cards_example/images/heartson.png"
}
images {
  image: "/cards_example/images/tree.png"
}
images {
  image: "/cards_example/images/pot.png"
}
images {
  image: "/cards_example/images/heart.png"
}

์ด์ œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•ด ์กŒ์Šต๋‹ˆ๋‹ค. ์•„ํ‹€๋ผ์Šค ํŒŒ์ผ์€ ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๋กœ PNG ์ด๋ฏธ์ง€๋“ค์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” "/cards_example/images" ํด๋” ๊ฒฝ๋กœ๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ shared folders ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” "/cards_example/images" ํด๋”๋ฅผ ๋กœ์ปฌ์— ์ƒ์„ฑํ•˜๊ณ  PNG ํŒŒ์ผ๋“ค์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Name collisions

"dependencies" Project setting ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์˜ URL์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฆ„ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” "include_dirs" Project setting์—์„œ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์ข…์† ํ”„๋กœ์ ํŠธ ๊ณต์œ  ํด๋”๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Defold๋Š” "dependencies" ๋ชฉ๋ก์— ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ URL ์ˆœ์„œ์—์„œ ๋™์ผํ•œ ์ด๋ฆ„ ์ค‘์— ๋งˆ์ง€๋ง‰ ๊ฒฝ๋กœ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ๋ฌด์‹œํ•จ์œผ๋กœ์„œ ์ด๋ฆ„ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด dependencies์— 3๊ฐœ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ URL์ด ์žˆ๋Š”๋ฐ ์ „๋ถ€ ํด๋”๋ช…์ด "items"๋ผ๋ฉด, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” "item" ํด๋”๋งŒ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.