29ed8168f5dc3f8650bbd58b3680726e7ae2



평범한 대화문으로만 구성된 그래프 노드 에디터입니다.


각 정점을 드래그하여 간선을 만들어 다음 대사 지문으로 연결시켜 줄 수 있습니다.




29ed8268e2db3e8650bbd58b3682776d00f181f9



지문 그래프 생성이 완료되었다면,

데이터 복구를 위해 저장과 로드를 해봅니다.


그래프의 직렬화 데이터는 다음과 같은 형태로 저장이 됩니다.


{

"nodes":[

{

"type":"dialogue",

"id":"9dfeff6bcb6249439025b6532381bc2d",

"name":"Smith",

"text":{

"id":"8aaf4ae5fa9e4e6a84403b2e74d9dca2",

"data":"Hi! how are you?"

},

"pos_x":345,

"pos_y":103,

"entry":{

"id":"338ae489a1174cc291bf85ac321b7f78",

"pos_x":353,

"pos_y":163

},

"exit":{

"id":"ec305494b687482fb3b701529d49b2b0",

"pos_x":457,

"pos_y":163

}

},

{

"type":"dialogue",

"id":"a6ebec34a944486d87e41948e5033680",

"name":"James",

"text":{

"id":"084f9b6c06ca4e21a87c96dcef870f77",

"data":"Hello~"

},

"pos_x":135,

"pos_y":167,

"entry":{

"id":"2d38a9d5ee1241e08ab09770ad3fbfca",

"pos_x":143,

"pos_y":227

},

"exit":{

"id":"a14d463c77da406e949b96a2a371dad6",

"pos_x":247,

"pos_y":227

}

},

{

"type":"dialogue",

"id":"a65e94cf71e948c7a7cf636135bbd8e4",

"name":"James",

"text":{

"id":"0d7fa6f086874512850389a53d44a79b",

"data":"Fine, thanks!"

},

"pos_x":543,

"pos_y":73,

"entry":{

"id":"eb1f78c03b544ca9b95f024e0d2f3b64",

"pos_x":551,

"pos_y":133

},

"exit":{

"id":"ad6d6998bc484629a30a2d6c91927991",

"pos_x":655,

"pos_y":133

}

},

{

"type":"dialogue",

"id":"c9e78976f6434da493d2277cd0e929f4",

"name":"Smith",

"text":{

"id":"c09e5ee1d0384864a7cb8af7f97ab398",

"data":"See ya!"

},

"pos_x":733,

"pos_y":54,

"entry":{

"id":"cd4c6810ed7f4427a6e18cb40c1df6c2",

"pos_x":741,

"pos_y":114

},

"exit":{

"id":"e86127814ca84d2897ad4b3475505ec3",

"pos_x":845,

"pos_y":114

}

}

],

"edges":[

{

"from":"a14d463c77da406e949b96a2a371dad6",

"to":"338ae489a1174cc291bf85ac321b7f78"

},

{

"from":"ec305494b687482fb3b701529d49b2b0",

"to":"eb1f78c03b544ca9b95f024e0d2f3b64"

},

{

"from":"ad6d6998bc484629a30a2d6c91927991",

"to":"cd4c6810ed7f4427a6e18cb40c1df6c2"

}

]

}{"from":"ad6d6998bc484629a30a2d6c91927991","to":"cd4c6810ed7f4427a6e18cb40c1df6c2"}]}




https://docs.godotengine.org/en/stable/tutorials/i18n/internationalizing_games.html

Internationalizing gamesIntroduction: While indie or niche games usually do not need localization, games targeting a more massive market often require localization. Godot offers many tools to make this process more straig...docs.godotengine.org



다음으로, 고도엔진의 로컬라이징 기능과 통합시키기 위해서는 적절한 csv파일로 변환이 가능해야 할 것 같습니다.

CSV 추출 버튼을 눌러 저장한 파일은 다음과 같습니다.



keys,kr,en

8aaf4ae5fa9e4e6a84403b2e74d9dca2,Hi! how are you?,

084f9b6c06ca4e21a87c96dcef870f77,Hello~,

0d7fa6f086874512850389a53d44a79b,Fine, thanks!,

c09e5ee1d0384864a7cb8af7f97ab398,See ya!,




최종적으로, 게임에서 사용될 데이터는 적절한 형태로 해석이 가능한 JSON 포맷이어야 할 것 같습니다.

JSON 추출 버튼을 눌러 저장한 파일은 다음과 같습니다.



{

"9dfeff6bcb6249439025b6532381bc2d":{

"type":"dialogue",

"name":"Smith",

"text":"8aaf4ae5fa9e4e6a84403b2e74d9dca2"

},

"a6ebec34a944486d87e41948e5033680":{

"type":"dialogue",

"name":"James",

"text":"084f9b6c06ca4e21a87c96dcef870f77"

},

"a65e94cf71e948c7a7cf636135bbd8e4":{

"type":"dialogue",

"name":"James",

"text":"0d7fa6f086874512850389a53d44a79b"

},

"c9e78976f6434da493d2277cd0e929f4":{

"type":"dialogue",

"name":"Smith",

"text":"c09e5ee1d0384864a7cb8af7f97ab398"

}

}




마지막으로, 고도엔진에서 적절히 스크립트를 짜서 불러온 데이터를 해석해 주면,

완벽하게 자동화되고 독립적인 방식으로 다이얼로그 관리가 가능해 보입니다..

각 분기 관리나 추가적인 연출에 대한 메타 데이터 등은 현재 만들어 놓은 틀에서 살을 조금씩 붙여 가며 완성이 가능해 보입니다.