Workflow - kuimoani/defold GitHub Wiki

Workflow

์ด ๋งค๋‰ด์–ผ์€ Defold์—์„œ ์–ด๋–ป๊ฒŒ ์—์…‹์„ ๋‹ค๋ฃจ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ๊ฐ•๋ ฅํ•œ ๋ฆฌํŽ™ํ† ๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊พธ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ํ˜‘์—… ๋ฐฉ๋ฒ• ๋ฐ ์™ธ๋ถ€ ์—๋””ํ„ฐ๋‚˜ ๊ธฐ๋ณธ Git ๋„๊ตฌ๊ฐ™์€ ๊ณ ๊ธ‰ ์ฃผ์ œ๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

Assets

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

Git์€ ์ฃผ๋กœ ์†Œ์Šค์ฝ”๋“œ๋‚˜ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ ์ด๋“ค ํŒŒ์ผ์€ ๋งค์šฐ ์ ์€ ์šฉ๋Ÿ‰์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฒ„์ „ ๊ฐ„์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋งŒ ์ €์žฅ๋˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค์˜ ๊ด‘๋ฒ”์œ„ํ•œ ๋ณ€๊ฒฝ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋น„๊ต์  ์ ์€ ๋น„์šฉ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด๋ฏธ์ง€๋‚˜ ์‚ฌ์šด๋“œ ๊ฐ™์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ Git์˜ ์ €์žฅ๋ฐฉ์‹์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฒดํฌ์ธํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ƒˆ ๋ฒ„์ „์€ ๊ฑฐ์˜ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์ข… ํ”„๋กœ์ ํŠธ ์—์…‹(JPEG, PNG ์ด๋ฏธ์ง€๋‚˜ OGG๊ฐ™์€ ์‚ฌ์šด๋“œ ํŒŒ์ผ ๋“ฑ๋“ฑ)์—๋Š” ์ค‘์š”ํ•œ ์ด์Šˆ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ž‘์—…์ค‘์ธ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ(PSD๋‚˜ Protools ํ”„๋กœ์ ํŠธ ๋“ฑ๋“ฑ)์—” ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค ํ”„๋กœ์ ํŠธ๋‚˜ ํŒŒ์ผ์˜ ํƒ€์ž…์€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์—์…‹๋ณด๋‹ค ๊ณ ํ•ด์ƒ๋„๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฏ€๋กœ ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Git์— ๋Œ€๊ทœ๋ชจ ์ž‘์—…ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ณ  ๋Œ€์‹  ๋ฐฑ์—…์„ ์œ ์ง€ํ•˜๊ณ  ๋ณ„๋„์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํฐ ์Šค์ผ€์ผ์˜ ์—์…‹ ํŒŒ์ผ ์ƒ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ์„œ ์ตœ์ข… ํŒŒ์ผ๋งŒ Defold ํ”„๋กœ์ ํŠธ ๊ณ„์ธต ํด๋”๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

Refactoring

๋ฆฌํŽ™ํ† ๋ง์€ ์„ค๊ณ„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ด๋ฏธ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋‚˜ ์—์…‹์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๋ญ”๊ฐ€๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์˜ฎ๊ฒจ์•ผ ํ•  ์ผ์ด ์ข…์ข… ๋ฐœ์ƒํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค:

  • ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์ด๋‚˜ ๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ๊ณ„์ธต๊ตฌ์กฐ์—์„œ ๋ณด๋‹ค ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋‚˜ ์—์…‹ํŒŒ์ผ์„ ์ด๋™์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ƒˆ ์ฝ”๋“œ๋‚˜ ์—์…‹์ด ์‚ญ์ œ๋œ ๊ธฐ์กด ๊ฒƒ๋“ค์„ ๋Œ€์ฒดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

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

๋ฆฌํŽ™ํ† ๋ง ์ž‘์—… ๋™์•ˆ์—๋Š” Defold๋Š” ์ž๋™์ ์œผ๋กœ ์ฐธ์กฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์—๋””ํ„ฐ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋Œ€์‹  ์œ ์šฉํ•œ ์—๋Ÿฌ์‹ ํ˜ธ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Tilemap ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ณ ๋‚˜์„œ ๋‹ค์‹œ ์ด ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋ฉด, ๊ฒŒ์ž„ ์‹คํ–‰์‹œ Defold ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์—๋””ํ„ฐ๋Š” ํ”„๋กœ์ ํŠธ๋ทฐ, ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ ๋˜๋Š” ์ปฌ๋ ‰์…˜ ๊ณ„์ธต์—์„œ ๋ชจ๋“  ๊ด€๋ จ๋œ ์—๋Ÿฌ๋ฅผ ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œํ•˜๋ฏ€๋กœ ํ•ด๋‹น ๋ฌธ์ œ์˜ ์œ„์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š”๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Error propagation

์—๋Ÿฌ์ค‘์— ์ผ๋ถ€๋Š” ๋‹น์‹ ์ด ์—์…‹์„ ์—ด์–ด ์ˆ˜์ •ํ–ˆ์„ ๋•Œ Defold๊ฐ€ ์ฆ‰์‹œ ์—๋Ÿฌํ•ญ๋ชฉ์„ ํ‘œ์‹œ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋ทฐ์˜ ์—๋Ÿฌ๋งˆํฌ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‹คํ–‰๋ ๋•Œ์—๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์™ธ๋ถ€ ์—๋””ํ„ฐ(OS X์˜ Finder๋‚˜ Windows์˜ Explorer๋‚˜ Shell๊ฐ™์€)๋กœ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ด๋™์‹œํ‚จ๋‹ค๋ฉด ์ž๋™ ๋ฆฌํŽ™ํ† ๋ง ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Defold ์—๋””ํ„ฐ ์™ธ๋ถ€์—์„œ ํŒŒ์ผ ์ž‘์—…์„ ํ•œ๋‹ค๋ฉด ์—์…‹๊ณผ ์—ฐ๊ฒฐ๋œ ์ฐธ์กฐ๊ฐ€ ๊นจ์งˆ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์— ์ฃผ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Collaboration

Defold๋Š” ๊ฐ•๋ ฅํ•œ ํ˜‘์—…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒ€์˜ ๋ฉค๋ฒ„๋“ค์€ ๊ฐ™์€ ์ปจํ…์ธ ๋ฅผ ๊ฑฐ์˜ ๋งˆ์ฐฐ ์—†์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Defold๋Š” ๋ถ„์‚ฐ ํ˜‘์—… ๋„๊ตฌ์ธ Git์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Git์€ ๊ด‘๋ฒ”์œ„ํ•œ ์ž‘์—…ํ๋ฆ„๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Defold๋Š” ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ณ ๋„ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ฉด (File > Open Project ๋ฉ”๋‰ด ์„ ํƒ), Defold๋Š” ์ด ํ”„๋กœ์ ํŠธ์˜ ์ƒˆ๋กœ์šด local branch๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค.

New branch

New branch๋ฅผ ํด๋ฆญํ•˜์—ฌ branch์˜ ์ด๋ฆ„์„ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋ฉด Defold๋Š” ํ”„๋กœ์ ํŠธ ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š”๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์˜ ์™„์ „ํ•œ ๋ณต์ œํ’ˆ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ branch๋Š” ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์›ํ•˜๋Š” ๋งŒํผ ๋งŽ์ด ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ƒˆ ๊ฒƒ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ ๊ฒƒ์„ ์‚ญ์ œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๋ฉด, ์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์€ ํ˜„์žฌ branch ์•ˆ์— ์ €์žฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ด branch๋ฅผ ์„œ๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ(repository)์— ๋™๊ธฐํ™”(Synchronize)ํ•  ๋•Œ๊นŒ์ง€ ์•„๋ฌด๋„ ๊ทธ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Synchronizing

ํ”„๋กœ์ ํŠธ ๋ธŒ๋žœ์น˜๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์€ ์„œ๋ฒ„์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜(master branch)์™€ ๋˜‘๊ฐ™์ด ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์€ ๋ฌด์—‡์ด๋“ ์ง€ ๋‹น์‹ ์˜ ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์˜ค๋ฉฐ(pull) ๋‹น์‹ ์˜ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜์ •๋œ ๊ฒƒ์ด ๋ฌด์—‡์ด๋“ ์ง€ ์„œ๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค(push).

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ํŒ€๊ณผ ๊ณต์œ ํ•˜๋Š” ๋‹น์‹ ์˜ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ๋ช‡๋ช‡ ์ž‘์—…์„ ๋ง‰ ๋๋ƒˆ๋‹ค๋ฉด, File > Synchronize ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•˜๊ณ  ์œ ์šฉํ•œ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Commit changes

ํ”„๋กœ์ ํŠธ์—์„œ ๋ณ€๊ฒฝ,์ถ”๊ฐ€,์‚ญ์ œ๋œ ๋ชจ๋“  ํŒŒ์ผ๋“ค์€ ์ด ์ฐฝ์˜ ์ƒ๋‹จ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ์˜ ์•ž์—๋Š” ์ฃผ์„์ด ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค:

[M] ๋‹น์‹ ์˜ ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” ํŒŒ์ผ์ด ์ˆ˜์ •๋จ [A] ๋‹น์‹ ์˜ ๋ธŒ๋žœ์น˜๋กœ ํŒŒ์ผ์ด ์ถ”๊ฐ€๋จ [D] ๋‹น์‹ ์˜ ๋ธŒ๋žœ์น˜์—์„œ ํŒŒ์ผ์ด ์‚ญ์ œ๋จ

ํŒŒ์ผ์— ๋ฐ˜์˜๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๋ ค๋ฉด, ๊ฐ„๋‹จํžˆ commit-list์˜ ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ๋น„๊ต ์ฐฝ์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Compare changes

์ด ์ฐฝ์€ ํŒŒ์ผ์˜ ๋‘๊ฐ€์ง€ ๋ฒ„์ „์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. (์ˆ˜์ •๋œ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์™€ ์ถ”๊ฐ€/์‚ญ์ œ๋œ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ๊ฐ€ ๋‹ค๋ฆ„) ์™ผ์ชฝ์€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋™๊ธฐํ™” ๋œ ํ›„์— ์„œ๋ฒ„์—์„œ ๋ณด์—ฌ์ง€๋Š” ํŒŒ์ผ์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ ๋‹น์‹ ์˜ ๋กœ์ปฌ ๋ฒ„์ „์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ฐจ์ด์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ฐ•์กฐํ‘œ์‹œํ•˜์—ฌ ์‹ ์†ํ•˜๊ฒŒ ๋ฆฌ๋ทฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด์žฅ๋œ ํŒŒ์ผ ๋น„๊ต ํˆด์€ ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Defold๋Š” ๋ชจ๋“  ์ž‘์—… ํŒŒ์ผ(๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ, ์ปฌ๋ ‰์…˜, ์•„ํ‹€๋ผ์Šค ๋“ฑ๋“ฑ)์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” JSON ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ๊ฐ ํŒŒ์ผ์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์˜ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Compare Gameobject

Resolving conflicts

๋งŒ์•ฝ ๋‹น์‹ ์ด ํŒ€์œผ๋กœ ์ผํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋‹น์‹ ์ด ๋‹น์‹ ์˜ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์„œ๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋™๊ธฐํ™” ๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์„œ๋ฒ„๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ‘ธ์‰ฌํ•˜๊ธฐ ์ง์ „์— ๋ช‡๋ช‡ ๋‹ค๋ฅธ ํŒ€ ๋ฉค๋ฒ„ (ํ˜น์€ ๋‹ค๋ฅธ ์ด์œ ๋กœ ๋˜ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹น์‹ )๊ฐ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ‘ธ์‰ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ถฉ๋Œ์€ ์ž๋™์ ์œผ๋กœ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์„œ๋ฒ„์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๊ณผ ์™„์ „ํžˆ ๋˜‘๊ฐ™์€ ์œ„์น˜์˜ ํŒŒ์ผ์ด๋ผ๋ฉด, Defold๋Š” ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋„์›€์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

Resolve Conflict

๋‹น์‹ ์˜ ๋ฒ„์ „์„ ์œ ์ง€ํ•  ๊ฒƒ์ธ์ง€ ์„œ๋ฒ„์˜ ๋ฒ„์ „์„ ์œ ์ง€ํ•  ๊ฒƒ์ธ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถฉ๋Œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด, ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์ถฉ๋Œ์„ ๊ฐ•์กฐํ‘œ์‹œํ•œ ๋น„๊ต์ฐฝ์„ ๋„์›Œ ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ์—๋””ํ„ฐ๋Š” ์ถฉ๋Œํ•˜๋Š” ๋‘ ํŒŒ์ผ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๋„๋ก ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๋ณ„๋„์˜ ๋ณ‘ํ•ฉํˆด(merge tool)์„ ์‚ฌ์šฉํ•˜๊ณ  ์ปค๋งจ๋“œ๋ผ์ธ์—์„œ Git ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Compare conflicting files

External editors and tools(์™ธ๋ถ€ ํŽธ์ง‘๊ธฐ ๊ทธ๋ฆฌ๊ณ  ๋„๊ตฌ)

Defold๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋“œ๋กœ์ž‰ํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šด๋“œ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜, ๋ณธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋“ฑ์˜ ์—๋””ํŒ… ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์—์…‹๋“ค์€ Defold๊ฐ€ ์•„๋‹Œ ํŠน๋ณ„ํ•œ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ œ์ž‘ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Defold๋Š” ์„ ํ˜ธํ•˜๋Š” ์™ธ๋ถ€๋„๊ตฌ์— ๊ด€ํ•ด์„œ๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ์–ด๋–ค ์ด๋ฏธ์ง€ ํ”„๋กœ๊ทธ๋žจ์ด๋˜ PNG ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์–ด๋–ค ์‚ฌ์šด๋“œ ํ”„๋กœ๊ทธ๋žจ์ด๋˜ WAVํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ด๋–ค ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์ด๋˜ Spine JSON ํŒŒ์ผ์„ ์ถ”์ถœ(์ž์„ธํ•œ ๊ฒƒ์€ Spine ๋ฌธ์„œ ์ฐธ๊ณ ) ํ•  ์ˆ˜๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Defold๋Š” ํ”„๋กœ์ ํŠธ์˜ ์—์…‹๋“ค์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜๊ณ  ์ด์— ๋”ฐ๋ผ ์—๋””ํ„ฐ ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ๋Š” ๋ณ€๊ฒฝ ์ฆ‰์‹œ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š๊ณ  ์—๋””ํ„ฐ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณด๋ ค๋ฉด 1~2์ดˆ ์ •๋„๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์ž๋™์ ์ธ ์—์…‹ ์ถ”์ ์€ ํ•„์š”์— ๋”ฐ๋ผ ์ž‘์—… ํ๋ฆ„์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Shell scripts / batch files(์‰˜ ์Šคํฌ๋ฆฝํŠธ / ๋ฐฐ์น˜ ํŒŒ์ผ)

๋‹น์‹ ์€ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—์…‹๋“ค์„ ์ž๋™์ ์œผ๋กœ ๋ฆฌ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›๋ณธ ์ด๋ฏธ์ง€๊ฐ€ ๋„ˆ๋ฌด ๊ณ ํ•ด์ƒ๋„์ด๊ฑฐ๋‚˜ ์ „ํ˜€ ๋‹ค๋ฅธ ํฌ๋ฉง์˜ ํŒŒ์ผ์ด๋ผ๋ฉด ๋‹น์‹ ์€ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ฐฐ์น˜ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ํŒŒ์ผํฌ๋ฉง์„ ๋ณ€๊ฒฝํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๊ตฌ์กฐ์˜ ์ ๋‹นํ•œ ์œ„์น˜์— ๋ณต์‚ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Data generation(๋ฐ์ดํ„ฐ ์ƒ์„ฑ)

๋‹น์‹ ์€ ํŠน์ • ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน๋ณ„ํ•œ ๋ฐ์ดํ„ฐ(table ๊ตฌ์กฐ ๊ฐ™์€)๋ฅผ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ Lua ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Opening assets in the text editor(ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ์—์…‹ ์—ด๊ธฐ)

Defold๋Š” ํŽธ์ง‘ํ•˜๋ ค๋Š” ํ•ญ๋ชฉ์— ์ ํ•ฉํ•œ ์—๋””ํ„ฐ๋ฅผ ์ž๋™์ ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Defold ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ํŠน์ • ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ง์ ‘ ์—ฌ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์ƒํ™ฉ์—์„œ ์ด ๋ฐฉ์‹์€ ๊ฝค ์œ ์šฉํ•˜๋ฉฐ, ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ๋•Œ ๋„์›€๋˜๋Š” ํŒŒ์ผ ํ˜•์‹์„ ์ˆ™์ง€ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ํŒŒ์ผ์„ ์—ด๊ธฐ ์œ„ํ•ด, ํ”„๋กœ์ ํŠธ ๋ทฐ์˜ ํŒŒ์ผ์— ์˜ค๋ฅธ์ชฝ-ํด๋ฆญํ•˜๊ณ  Open With > Text Editor ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์„ธ์š”:

Open with Text Editor

Defold๋Š” ํŠน์ • ํŒŒ์ผ์— ๋Œ€ํ•ด ์—๋””ํ„ฐ๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํŒŒ์ผ์„ ํ…์ŠคํŠธ ์—๋””ํ„ฐ(Text Editor)๋กœ ์—ด์—ˆ๋‹ค๋ฉด, ๊ทธ ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ž๋™์ ์œผ๋กœ ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์—ด๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์— ๋Œ€ํ•ด ์„ ํƒ๋œ ์—๋””ํ„ฐ ์ •๋ณด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋ ค๋ฉด, ๊ทธ๋ƒฅ ํŒŒ์ผ์— ์˜ค๋ฅธ์ชฝ-ํด๋ฆญํ›„์— Open With > [Filetype Editor] ๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. [Filetype Editor]๋Š” ํŒŒ์ผ์˜ ์ข…๋ฅ˜์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์—๋””ํ„ฐ์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. (์˜ˆ: ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋ฅผ ์œ„ํ•œ ์”ฌ์—๋””ํ„ฐ(Scene Editor), ํƒ€์ผ์†Œ์Šค๋ฅผ ์œ„ํ•œ ํƒ€์ผ์†Œ์Šค์—๋””ํ„ฐ(Tile Source Editor) ๋“ฑ๋“ฑ)

ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์ถ”๊ฐ€์ ์ธ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํŒŒ์ผ๋‚ด์šฉ์ด ๊ผฌ์ธ๋‹ค๋ฉด ์ง€์ •๋œ ์—๋””ํ„ฐ์—์„œ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ์˜ค๋ธŒ์ ํŠธ ์ด๋ฆ„์˜ ๋์— ์Œ๋”ฐ์˜ดํ‘œํ•˜๋‚˜๋ฅผ ๋นผ๋จน์—ˆ๋‹ค๊ณ  ์นฉ์‹œ๋‹ค.

Missing Quote

ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์ด ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ์”ฌ์—๋””ํ„ฐ๋กœ ๋‹ค์‹œ ์—ด๋ ค๊ณ  ํ•˜๋ฉด, Defold๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒํ•˜๊ณ  ๋‹น์‹ ์€ ์ด ์—๋Ÿฌ๋ฅผ ์ง์ ‘ ๊ณ ์ณ์•ผ(์žฌํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ฑฐ๋‚˜) ํ•ฉ๋‹ˆ๋‹ค:

Missing Quote

Defold๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์œ ์šฉํ•œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ๋•Œ๋กœ๋Š” ์—๋Ÿฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์ธ ๋„์›€์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์ฐฝ(Changed Files pane)์˜ ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ๋™๊ธฐํ™” ์ดํ›„์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git

Defold๋Š” Git์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ๋“ค์˜ ๋ฒ„์ „ ์ถ”์ ์„ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—๋””ํ„ฐ์—์„œ ์ƒ์„ฑํ•œ ๊ฐ ๋ธŒ๋žœ์น˜๋Š” ์›๊ฒฉ ํ”„๋กœ์ ํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๋ณต์‚ฌ๋ณธ์ด๊ณ , ๋ณ„๋„์˜ ํด๋”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ๋ณต์‚ฌ๋œ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ๋ฅผ ๋™๊ธฐํ™”(Synchronize)ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:
    • ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹๋จ(commit)
    • ์—๋””ํ„ฐ๊ฐ€ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ค๊ณ (pull), ์ด๊ฒƒ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ณ‘ํ•ฉํ•จ(merge)
    • ๋ณ‘ํ•ฉ์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด(conflicts), ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ผ๋Š” ์ฐฝ์ด ๋œธ(resolve)
    • ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ „์†ก๋จ(push)

Git ๋ช…๋ น์ค„ ๋„๊ตฌ์—์„œ๋Š” ์—๋””ํ„ฐ์˜ ๋„์›€์—†์ด ์ˆ˜๋™์ ์œผ๋กœ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜๋ ค๋ฉด:

git log

๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ๋ถ€ํ„ฐ ์ฒดํฌ์•„์›ƒ์„ ํ•˜๋ ค๋ฉด:

git checkout <commit hash> <file path>

์›ํ•œ๋‹ค๋ฉด ์ง์ ‘ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ํŒ€ ๋ฉค๋ฒ„๊ฐ„์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž‘์—…๋ณ€๊ฒฝ ์ฆ‰์‹œ ๊ฐ€์ ธ์˜ค๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ช… ์ด์ƒ์˜ ์‹คํ—˜์ ์ธ ๋ธŒ๋žœ์น˜ ์ž‘์—…ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Git์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. Git์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ http://git-scm.com ์— ๋ฐฉ๋ฌธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Line endings and Windows(์ค„๋ฐ”๊ฟˆ๊ณผ ์œˆ๋„์šฐ)

๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘์ค‘์— Returnํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด, ๋ณด์ด์ง€ ์•Š๋Š” ๋ฌธ์ž ์‹œํ€€์Šค๊ฐ€ ์ค„์˜ ๋งจ๋์— ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์—์„œ๋Š” ์—ญ์‚ฌ์ ์ธ ์ด์œ ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์‹œํ€€์Šค๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์œผ๋กœ๋Š”...

Unix and Mac OS X

๋‹จ์ผ Line Feed ๋ฌธ์ž (LF, "\n", 0x0A ๋˜๋Š” ์‹ญ์ง„์ˆ˜์˜ 10)

Windows

Carriage Return ๋ฌธ์ž ๋‹ค์Œ์œผ๋กœ Line Feed ๋ฌธ์ž (CR+LF, "\r\n", 0x0D0A)

Mac OS 9 (and earlier)

๋‹จ์ผ Carriage Return ๋ฌธ์ž (CR, "\r", 0x0D ๋˜๋Š” ์‹ญ์ง„์ˆ˜์˜ 13)

์ค„๋ฐ”๊ฟˆ(line ending)์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด, https://ko.wikipedia.org/wiki/์ƒˆ์ค„_๋ฌธ์ž ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

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

ํ•œ ํŒ€์›์ด ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ณ„๋„์˜ ์™ธ๋ถ€ ํˆด๋กœ Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŽธ์ง‘ํ•˜์—ฌ ์œˆ๋„์šฐ์šฉ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ดํ›„์— ๊ทธ ํŒ€์›์€ Defold Lua ์—๋””ํ„ฐ๋กœ ๊ทธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์—ด์–ด๋ดค์ง€๋งŒ ๋ˆˆ์œผ๋กœ ๋ณด๊ธฐ์—” ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์—ฌ ์ฆ‰์‹œ ์„œ๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋™๊ธฐํ™” ์‹œํ‚ต๋‹ˆ๋‹ค.

ํ•œํŽธ, Mac OS X๋ฅผ ์‚ฌ์šฉ์ค‘์ธ ๋‹ค๋ฅธ ํŒ€์›์ด ๋™์ผํ•œ ํŒŒ์ผ์„ ์—ด์–ด ํŽธ์ง‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ๋‘ ํŒ€์›๊ฐ„์˜ ๋ณ€๊ฒฝ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋™์ผํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋งŒ Git์ด ์ž๋™์ ์œผ๋กœ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋ณ‘ํ•ฉํ•˜๋Š”๊ฒŒ ๋ณดํ†ต์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘๋ฒˆ์งธ ํŒ€์›์ด ๋™๊ธฐํ™” ์ž‘์—…ํ›„ Defold๊ฐ€ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ๋น„๊ต์ฐฝ์„ ๋„์›Œ๋ณด๋ฉด, ๋ชจ๋“  ์ค„๋งˆ๋‹ค ์ถฉ๋Œ์— ๋Œ€ํ•œ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ํ‘œ์‹œ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

Line endings conflict

๋‘ ํŒŒ์ผ์˜ ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ธ์ฝ”๋”ฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•œ์ชฝ์€ LF๋ฅผ ๊ฐœํ–‰๋ฌธ์ž๋กœ ์‚ฌ์šฉํ–ˆ๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ์€ CR+LF๋ฅผ ๊ฐœํ–‰๋ฌธ์ž๋กœ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์ค„๋งˆ๋‹ค ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์›๋“ค์ด ์™ธ๋ถ€ ํˆด๋“ค์„ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฐœํ–‰๋ฌธ์ž ์ถฉ๋Œ์€ ๋งค ๋ฒˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Line endings in Defold(๋””ํด๋“œ์˜ ๊ฐœํ–‰๋ฌธ์ž)

Defold๋Š” ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. File > Preferencesโ€ฆ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์—ฌ ํ™˜๊ฒฝ์„ค์ •(preferences)์—์„œ ๊ณต๋ฐฑ๋ฌธ์ž(whitespace)๊ฐ€ ๋ณด์ด๊ฒŒ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Configure show whitespace

์ด ์…‹ํŒ…์€ ์—๋””ํ„ฐ์—์„œ LF, CR, Space, Tab๊ณผ ๊ฐ™์€ ๋ชจ๋“  ๊ณต๋ฐฑ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

Visible whitespace

๋˜ํ•œ File > Convert Line Delimiters To > โ€ฆ ๋ฉ”๋‰ด ์˜ต์…˜์„ ํ†ตํ•ด์„œ ํ˜„์žฌ ์—ด๋ฆฐ ํŒŒ์ผ์„ ์…‹ํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ์›ํ•˜๋Š” ๊ตฌ๋ถ„๊ธฐํ˜ธ(delimiter)์˜ ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Make Git deal with line endings properly(Git์ด ์ค„๋ฐ”๊ฟˆ์„ ์ž˜ ์ฒ˜๋ฆฌ๋„๋ก ๋งŒ๋“ค๊ธฐ)

Git์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ค„๋ฐ”๊ฟˆ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

$ git config --global core.autocrlf input
# OS X์—์„œ ์ค„๋ฐ”๊ฟˆ์„ ์ œ๋Œ€๋กœ ํ•˜๊ธฐ ์œ„ํ•ด Git ์„ค์ •ํ•˜๊ธฐ

์ „์—ญ Git ์„ค์ •์ธ core.autocrlf๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•œ ๊ฐœ ๊ฐ€์ง€๋Š”๋ฐ:

false

๊ธฐ๋ณธ๊ฐ’์ด๋ฉฐ Git์ด ํŒŒ์ผ์˜ ์ค„๋ฐ”๊ฟˆ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ LF, CR+LF ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ์ฒดํฌ์ธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Git์€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด ์…‹ํŒ…์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

true

Git์€ ๋ชจ๋“  ํ…์ŠคํŠธ ํŒŒ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ์—ฌ์งˆ ๋•Œ ๋ชจ๋“  LF ๊ฐœํ–‰๋ฌธ์ž๋ฅผ CR+LF๋กœ ๋ฐ”๊พธ๊ณ  ๋‹ค์‹œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ฒดํฌ์ธ ํ• ๋•Œ๋Š” LF๋กœ ๋˜๋Œ๋ ค ์ค๋‹ˆ๋‹ค. ์ด ์…‹ํŒ…์€ Windows ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

input

Git์€ ๋ชจ๋“  ํ…์ŠคํŠธ ํŒŒ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ฒดํฌ์ธ ํ•  ๋•Œ ๋ชจ๋“  CR+LF๋ฅผ LF ๊ฐœํ–‰๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉฐ ์ฒดํฌ์•„์›ƒํ• ๋•Œ๋Š” ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์…‹ํŒ…์€ Unix๋‚˜ OS X ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ".gitattributes" ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ Git์ด ์ค„๋ฐ”๊ฟˆ์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

# ์œ ์ €๊ฐ€ core.autocrlf ๋ฅผ ์…‹ํŒ…ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ๋™์ž‘ ์„ค์ •
* text=auto

# ์ฒดํฌ์•„์›ƒ์‹œ ํ•ญ์ƒ ํ…์ŠคํŠธํŒŒ์ผ์„ ์ •๊ทœํ™”ํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ์ค„๋ฐ”๊ฟˆ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ• ์ง€์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๊ธฐ
*.c text
*.h text
*.sh eol=lf
*.lua text
*.py text
*.script text
*.gui_script text
*.go text

# ์ˆ˜์ •๋˜๋ฉด ์•ˆ๋˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋“ค์„ ๋ช…์‹œํ•จ
*.png binary
*.jpg binary
*.apk binary
*.ipa binary
*.jar binary
*.zip binary
*.ogg binary

".gitattributes"์— ๊ด€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ http://git-scm.com/book/ko/v2/Git๋งž์ถค-Git-Attributes ๋ฅผ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ