비쥬얼 노벨 엔진 개발중인데..힘드네요...

anonDev의 이미지

코미케에 출품 예정인 게임을 위해서 엔진을 개발중인데.. 생각보다 훨씬 어렵네요 ^^;
현재 C#으로 SlimDX를 사용해서 개발중입니다.
스크립트는 Lua를 사용하고 있고요. 전체적인 UI프레임워크등은 어느 정도 형태가 갖추어졌는데,
텍스트 출력이 이렇게 어려울줄은 몰랐습니다...

DirectX 기본 텍스트 출력으로는 비쥬얼 노벨에서 필요로 하는 다양한 효과들이나, 일본어 ruby (후리가나) 등의 출력은 곤란하기에 Freetype을 사용하여 직접 텍스트 렌더러를 만들고 있습니다...

glyph를 얻어오는데서부터 길이 계산해서 자동 줄 변환까지, 그리고 간단한 tag 들까지 지원하는건 그다지 어렵지 않게 구현했는데 ruby 다는게 또 빡세네요...

한국어 텍스트 출력만 해도 골치아픈데 일본어 텍스트 출력이라니...
다 이렇게 배워가는거겠죠? ^^;

항상 느끼는거지만, 텍스트 렌더링이나 처리는 진짜 어려운것 같아요.
제가 regex 같은 좋은 도구들을 쓰지 못하기 때문일수도 있겠지만요 ^^;
알고리즘도 복잡하고, 버그도 쉽게 생기는것 같고...

이응준의 이미지

4-5년전에 DX로 대화창 만들다가 애먹은 적이 있었는데 지금도 큰 차이는 없나보네요...

근데 ruby는 뭐하는건가요?

unsouled의 이미지

'후리가나' 라고 하면 보통 어려운 한자어 위에 읽기 쉽도록(혹은 표기와 발음이 다른 경우) 히라가나/가타가나 등을 이용해 병기해 두는 문자를 말합니다.
이걸 루비 문자라고도 하는 것 같더군요.

저도 좀 궁금해져서 뒤져보니 이런 게 나오네요.

http://ko.wikipedia.org/wiki/%EB%A3%A8%EB%B9%84_%EB%AC%B8%EC%9E%90

http://www.w3.org/TR/ruby/

kasworld의 이미지

비주얼 노블 엔진이라고 하니
http://www.renpy.org/wiki/renpy/Home_Page
파이썬으로 만들어진 오픈소스 비주얼 노불 엔진인 renpy가 생각이 났습니다.

사용 언어가 달라 이용은 어렵겠지만 혹시 참고하시면 도움이 될지도 모르겠네요.

NK의 이미지

그래도 데스크탑쪽은 나은 편입니다.
프리타입이라도 이것 저것 옵션 줘서 깔끔하게 렌더링이 가능하니까요.
임베디드쪽에서는... 속도 때문에 대부분을 포기해야 합니다. [OTL]
특히 프리타입은 실수 연산이 많아서 정말 눈물 나오지요.

텍스트 처리하실때 단순히 글리프 모양만 처리해야 하는게 아니라
자간이나 위치도 잘 맞추셔야 할겁니다.
특히 가변폭에서는 특정 글자들의 경우 자간이 달라지는 경우도 있어서(커닝이라 하죠)
이런 부분까지 제대로 하려면 신경써야 하는게 정말 많지요.
제대로 하다 보면 거의 준 워드프로세서 급 텍스트 렌더러가 완성됩니다...[;;;]

그리고 텍스트가 끝나면 화면 전환을 위한 이펙트 추가가 들어가야겠네요.
다양한 전환 효과를 지원하려면 이 부분도 머리 열심히 굴려야 합니다.

from nightknight