[개발 일지 #1] ν…μŠ€νŠΈ μ–΄λ“œλ²€μ²˜ ν”„λ‘œμ νŠΈμ˜ μ‹œμž‘: 데이터 관리 μ‹œμŠ€ν…œ 섀계

데브 μΊ ν”„ κ²°κ³ΌλŠ” μ•„μ‰½κ²Œλ„ νƒˆλ½μ΄μ—ˆμ§€λ§Œ, 제 기획이 λ‚˜λΉ μ„œλΌκΈ°λ³΄λ‹€ μ‹¬μ‚¬μœ„μ›μ˜ μ·¨ν–₯μ΄λ‚˜ ν˜„μž¬ κ²Œμž„ μ‹œμž₯의 흐름과 쑰금 λ‹¬λžλ˜ 것이라 μƒκ°ν•˜λ©° κΈμ •μ μœΌλ‘œ λ°›μ•„λ“€μ΄κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.


μ–΄λŠ 정도 아쉬움은 λ‚¨μ§€λ§Œ, 이번 κΈ°νšμ— λŒ€ν•œ 애정이 μ›Œλ‚™ κΉŠκΈ°μ— 이번 κΈ°νšŒμ— 각 작고 μ œλŒ€λ‘œ κ°œλ°œν•΄ 보고자 μ΄λ ‡κ²Œ 개발 일지λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.


*μ €λŠ” κ²Œμž„ 기획자 μ§€λ§μƒμž…λ‹ˆλ‹€. μ•„νŠΈμ™€ ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰μ„ 포함해 슀슀둜 λΆ€μ‘±ν•˜λ‹€κ³  느끼고 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 일지λ₯Ό λ³΄μ‹œλ©΄μ„œ λΆ€μ‘±ν•˜κ±°λ‚˜ 보완이 ν•„μš”ν•œ 뢀뢄에 λŒ€ν•΄μ„œλŠ” μ–Έμ œλ“ μ§€ 가감 μ—†λŠ” ν”Όλ“œλ°±μ„ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.


μ•žμœΌλ‘œ 주기적으둜 개발 과정을 κΈ°λ‘ν•˜κ³  κ³΅μœ ν•˜λ©° μ„±μž₯ν•΄ λ‚˜κ°€λŠ” λͺ¨μŠ΅μ„ λ³΄μ—¬λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.


이 ν”„λ‘œμ νŠΈμ˜ κΈ°λ³Έ μž₯λ₯΄λŠ” ν…μŠ€νŠΈ μ–΄λ“œλ²€μ²˜μž…λ‹ˆλ‹€. ν”Œλ ˆμ΄μ–΄κ°€ λŒ€μ‚¬λ₯Ό μ„ νƒν•˜λ©΄ 그에 λ§žλŠ” ν”Όλ“œλ°±μ„ μ–»λŠ” ꡬ쑰λ₯Ό μ§€ν–₯ν•©λ‹ˆλ‹€.


ν…μŠ€νŠΈ μ–΄λ“œλ²€μ²˜ μž₯λ₯΄μ˜ νŠΉμ„±μƒ λ°©λŒ€ν•œ μ–‘μ˜ ν…μŠ€νŠΈλ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜λŠ” 것이 κ°€μž₯ μ€‘μš”ν•©λ‹ˆλ‹€.


이λ₯Ό μœ„ν•΄ 데이터 관리 μ‹œμŠ€ν…œμ„ μš°μ„ μ μœΌλ‘œ κ΅¬μΆ•ν•˜λ € ν•©λ‹ˆλ‹€.



관리 툴 : ꡬ글 μŠ€ν”„λ ˆλ“œμ‹œνŠΈ


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a6399951b738b8df527d65dc920134294e3aaa3660b48ffc4de3



선택 이유 : μ²˜μŒμ—λŠ” μ—‘μ…€ μ‚¬μš©μ„ κ³ λ €ν–ˆμœΌλ‚˜, μˆ˜μ •ν•  λ•Œλ§ˆλ‹€ 맀번 UTF-8 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μ €μž₯ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν΄λΌμš°λ“œ 기반으둜 접근성이 μ’‹κ³  버전 관리가 μš©μ΄ν•œ ꡬ글 μ‹œνŠΈλ₯Ό ν™œμš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•˜κ³ μž ν•©λ‹ˆλ‹€.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a6399952b1b6cc2d8684d81e94f0ff8e47340d4ba49caceb0cac


μ‹œνŠΈμ˜ ꡬ성은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.


*ν…μŠ€νŠΈ 자체λ₯Ό [Localization_Dialogue], [Localization_UI], [Localization_Record] 으둜 λ‚˜λˆ„μ–΄ 관리 ν•˜λŠ”κ²Œ μ œκ°€ μ‹λ³„ν•˜λŠ”κ²Œ νŽΈν•˜λ‹€λŠ” λŠλ‚Œμ΄ λ“€μ–΄μ„œ λ‹€μŒκ³Ό 같이 λ‚˜λˆ„μ—ˆμŠ΅λ‹ˆλ‹€ .


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a654ff51b70a3fd657afed471220e4209bd9a09b73177e41ea


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a6399957bfe752caf9543e62b567bdad529cb0ec79d7d2bfe129


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a654f251b5324fcdd27dd0bbbd8695b8421d3cb1ddc19aa0ea

*Record μ‹œνŠΈμ˜ λ‚΄μš©μ€ λ§žμΆ€λ²• μˆ˜μ •μ „μž…λ‹ˆλ‹€. μ§€κΈˆμ€ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.



λ¨Όμ € ν…μŠ€νŠΈ μžμ²΄λŠ” λ‹€μŒκ³Ό 같이 Localizationμ—μ„œΒ κ΄€λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€.Β 


dialogueμ—μ„ λŠ” λŒ€μ‚¬λ₯Ό UIμ—μ„œλŠ” uiλ₯Ό Recordμ—μ„œλŠ” 책에 μ νžˆλŠ” 기둝을 κ΄€λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€.Β 



μ΄λ ‡κ²Œ μ „λ°˜μ μΈ ν…μŠ€νŠΈμ˜ μž„μ‹œ 보관함 섀계λ₯Ό λλƒˆμŠ΅λ‹ˆλ‹€.


λ‹€μŒ λ³΄κ΄€λœ ν…μŠ€νŠΈλ₯Ό λ‹€μŒ ν…μŠ€νŠΈλ‘œ μ—°κ²°ν•΄μ£ΌλŠ”Β Nodesμ‹œνŠΈμž…λ‹ˆλ‹€.Β 


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce787fa1bd625314b5d207020df860bbe98c96cc2c371c8fa8b487ec1a113f467f9a1a654f35db4b90b3c34b67fc7cb47ef5c4a6d7f89230e37198b


λ…Έλ“œλŠ” λ‹€μŒκ°™μ΄ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.Β 


localiztion μ‹œνŠΈ 듀에 μžˆλŠ” textkeyλ₯Ό 각 λ…Έλ“œμ— ν• λ‹Ήν•΄ μ£ΌλŠ” κ³Όμ •μž…λ‹ˆλ‹€.
nodeId둜 λ…Έλ“œλ₯Ό ꡬ뢄 chapterId와 sessionIdλŠ” 폴더 경둜λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ μž₯μΉ˜μž…λ‹ˆλ‹€.
각 챕터와 씬 λ³„λ‘œ λŒ€μ‚¬λ₯Ό κ΅¬λΆ„ν•˜λŠ”κ²Œ κ΄€λ¦¬ν•˜κΈ° νŽΈν•˜λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.
speakerIdλŠ” 말 κ·ΈλŒ€λ‘œ λ§ν•˜λŠ” ν™”μž 이며 nodetype은 λ‚˜μ€‘μ— μ‚¬μš© ν•  μ‹œμŠ€ν…œμž„μœΌλ‘œ 일단은 Normal둜 ν‘œκΈ°ν•΄λ‘‘λ‹ˆλ‹€.
λ…Έλ“œλ₯Ό ν•˜λ‚˜μ˜ νλ¦„μœΌλ‘œ 보고 μ‹œμž‘λ˜λŠ” 지점에 이벀트λ₯Ό λ„£μ–΄μ„œ κ΄€λ¦¬ν•©λ‹ˆλ‹€
ν”Œλ ˆμ΄μ–΄κ°€ NPC λŒ€ν™” -> 이벀트 λ°œλ™ -> λŒ€ν™” ν™œμ„±ν™” μ΄λŸ°μ‹μ˜ ꡬ쑰λ₯Ό κ°™κ²Œ λ©λ‹ˆλ‹€.
eventTrigerλŠ” λŒ€μ‚¬ 쀑 λ˜λŠ” 끝날 λ•Œ μΌμ–΄λ‚˜λŠ” 이벀트λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
autoNextNodeIdλŠ” λ„˜μ–΄κ°ˆ λ‹€μŒ λ…Έλ“œλ₯Ό λ‚˜νƒ€λ‚΄μ€λ‹ˆλ‹€.
selectNodeIdλŠ” λ”°λ‘œ κ΄€λ¦¬ν•˜λŠ” 선택지 μ‹œνŠΈμ—μ„œ 각 선택지λ₯Ό λΆˆλŸ¬μ™€ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

a04424ad2c06782ab47e5a67ee91766dc28df1ecd7acc7c9bf13d2c158d5d121915615dace6808ddfc32db9fcccd



selectNodeId μ‹œνŠΈλŠ” λ‹€μŒκ³Ό 같은 ꡬ성을 λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.
selectGroupId둜 λ¬Άμ–΄μ„œ 각 choiceId의 선택지λ₯Ό 좜λ ₯ν•΄μ£ΌλŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.

ν”Œλ ˆμ΄μ–΄κ°€ 선택지λ₯Ό κ³ λ₯΄κ²Œ 되면 λ‹€μŒ λŒ€μ‚¬μ™€ 그에 λ°˜μ‘ν•˜λŠ” 기둝이 좜λ ₯ 되게 μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.

conditon 은 λ‚˜μ€‘μ— 쑰건에 λ§žλŠ” 선택지 좜λ ₯을 κ³ λ € ν•  수 μžˆλ„λ‘ 미리 μ‹œνŠΈλ₯Ό μž‘μ„±ν•΄ λ‘μ—ˆμŠ΅λ‹ˆλ‹€.
eventList μ‹œνŠΈλŠ” 말 κ·ΈλŒ€λ‘œ 이벀트 리슀트λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ‹œνŠΈμ΄κΈ° λ•Œλ¬Έμ— 이벀트 리슀트만 μ ν˜€μžˆμŠ΅λ‹ˆλ‹€.
이제 λ‹€μŒ μŠ€ν…μ€
1. ꡬ글 μ‹œνŠΈ api μ—°κ²°.2. api 데이터 jsonνŒŒμΌν™”.3. json파일 μžλ™ μŠ€ν¬λ¦½ν…Œμ΄λΈ” μ˜€λΈŒμ νŠΈν™” κ³Όμ •.
μ΄λ ‡κ²Œ 3κ°€μ§€ 과정이 λ‚¨μ•„μžˆμŠ΅λ‹ˆλ‹€.
μ˜€λŠ˜μ€ μ‹œκ°„μ΄ μ—†μ–΄μ„œ 이건 λ‹€μŒ 글에 μž‘μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€.