vs2005와 vs2008을 동시에 지원하다보니..
설치후 devenv.exe를 실행시켜주는과정에서..
둘 중 하나가 설치되어있지 않으면 설치가 안되는 버그가 발견되어서..

급히 배포프로젝트를 nsis로 새로 만들어서 올렸습니다.
배포본만 다시 나가는거라 버전은 올리지 않았습니다.

레지스트리명을 바꿔서 테스트 해보니 정상작동하네요.

설치도 제대로 안되는걸 배포해서 죄송합니다;;;

ps. 덕분에 Download count가 0으로... orz;;

사용자 삽입 이미지
새버전이 배포되었습니다.
http://vutpp.googlecode.com 에서 받으시면 됩니다.

요즘 백수라 매일 집에서 놀다보니 VisualStudio를 실행시키기가 오히려 더 힘들어서 작업이 많이 늦어 졌습니다;;;
퇴직하면서 서류처리가 좀 많았고 요즘 취직관련해서 이리저리 알아보고 사람들 만나러 다니고 하느라 바쁜것도 있지만요;;
취직이 빨리 결정이 안되니 이래저래 스트레스군요;

우선 addin형태에서 패키지형태로 바뀌었습니다.
Addin형태는 VS버전별로 설치를 해야 해서 VisualStudio 2008지원이 추가 되면서 Program Files밑에 하나만 설치하도록 패키지 형태로 변경되었습니다.
근데 VC랑 연동하는 부분을 vs2005와 vs2008을 별도의 dll로 만들어서 리플렉션으로 연동을 해서 리프레쉬속도가 좀 느려졌습니다;;

그리고 툴바를 못찾는 분들이 많으셔서 VisualAssist처럼 메인 메뉴에 메뉴를 추가하였습니다.
사용자 삽입 이미지

그리고 위 메뉴에 있는 내용들을 keyboard shortcut을 설정할 수 있도록 추가하였습니다.
사용자 삽입 이미지

그리고 BindCode를 자꾸 바꾸게 되서(아마 0.4에서 또 바뀔듯;) 번거로우실거 같아서 배포본에 포함하였습니다. 설치폴더에 있는 BindCode들을 직접 프로젝트에 연결해서 사용하시면 편할실것 같습니다.
사용자 삽입 이미지

자세한 변경사항은 아래와 같습니다.

  •  issue 10 : add support VisualStudio 2008
  •  issue 7 : fix compiler.PreprocessorDefinitions problem
  •  issue 8 : add support winunit
  •  issue 11 : VUTPP cannot find TEST in Solution Folder
  •  issue 13 : Add support shortcut-key
  • convert project to VSPackage
  • Improve ReparseCurrentFile(for Navigate and Update List) to use thread
  • Add MenuBar?
  • change bind codes
  • 안타깝게도 debug기능이 들어가지 않았습니다.
    원래는 debug기능까지 추가하고 배포하려고 했는데 버그 수정된것들도 있는데 배포가 너무 늦어지는 것 같아서 먼저 배포했습니다.

    debug기능이 WinUnit을 추가하면서 좀 문제가 생겼네요.
    WinUnit은 내부에서 Test를 관리하는 내용이 없고 밖에서 외부로 노출되어 있는 모든 함수를 실행하게끔 되어 있어서 아무래도 WinUnit만 따로 예외처리하는 형식으로 처리해야 할 것 같습니다.

    그 외에는 오른쪽버튼 눌러서 팝업창 띄우는것 정도의 내용이 남았네요.

    이정도로 해서 0.4를 배포하고..

    그 다음은 CruiseControl.net지원이라던가.
    아마 안될것 같지만 VisualStudio 2003지원을 좀 살펴본다던가 하게 될거 같네요.
    패키지로 만들면 VisualStudio 2003이 될 줄 알았는데.. 안되는군요;;
    VisualAssist쪽을 보면 VS에 런칭하는 부분이 아예 따로 되어 있는것 같기도 합니다.

    전체적으로 다운버그 같은 것들은 많이 수정되었습니다만.
    문제가 있거나 필요하신 기능이 있으면 댓글로 달아주시기 바랍니다.

    사용자 삽입 이미지






    휴우.
    다른거 안하고 풀스케줄로 3주걸렸네요.
    스케줄을 너무 잡아먹어버렸습니다.

    freetype으로 만들었고.
    기본 폰트 렌더링이랑 효과들 uniscribe를 사용한 줄바꿈, 커닝 처리하는데 1주일
    영역지정해서 속성주는데 0.5주일
    EDITBOX작업하고 IME정리 하는데 1.5주일

    효과는 bold, italic, stroke, shadow만 넣었네요.
    underline나 strokeout은 빈도도 없을것 같고 외각선같은거 처리하면 내용이 좀 애매해져서 빼버렸고..
    IME쪽 정리하면서 해외쪽 IME처리들도 일단 다 막아놨네요.

    시간을 좀 잡아먹은 부분들은 양쪽정렬하고
    텍스트 Copy&Paste등의 편집기능들 Control키 누르고 왔다갔다 하거나 영역선택, 컨트롤 누르거나 더블 클릭해서 마우스로 영역선택하는것등...이네요

    SIE에 대한 내용 참고 http://www.larosel.com/69

    기본 사양

    • 모듈 소스는 풀공개이며 라이센스의 제약은 없고, 서포트 라이센스도 제공하지 않는다.
    • 기본적인 피드백은 받겠지만 특정요청을 위해서 특수화된 코드를 넣지는 않는다.
    • 이미지 베이스 인터페이스를 지향한다.
    • DX전용이다. 하지만 렌더러는 인터페이스를 사용해서 접근하게 할 예정이라 별도의 opengl용의 렌더러 코드를 만들어서 부착시킬 수 있도록 한다.
    • font엔진은 freetype+uniscribe로 구현한다.
    • UNICODE를 사용하며 다국어 지원을 구현한다.
    • vs2005를 베이스로 하며 가능하면 옵션처리로 하위버전도 가능하게 한다. - 아마도 문제가 생기는 부분은 for each부분
    • 저장 형태는 텍스트 인터페이스를 제공하며 바이너리 형태로 사용할 수도 있겠지만 버전 호환 작업이 힘들 가능성이 높다.
    • 컨트롤 렌더링 앞 뒤에 유저 렌더러를 제공하며 기본 렌더링을 사용하지 않을 수 있다.

    제공 기능

    • 스킨 기능을 제공한다. - 텍스쳐 폴더를 바꿀 수 있는 형태이며 인터페이스 코드를 건드려야 하는 정도는 제공하지 않는다.
    • 컨트롤은 조합식 컨트롤로 사용
    • 기본적으로는 유저가 메세지를 직접 핸들링하려면 CUSTOM형태의 메세지만 사용할 수 있지만, 가능하면 유저 메세지와 기본메세지용 핸들러를 추가할 수 있도록 한다.
    • 핸들러에서 처리되지 않은 경우에 호출되는 기본 핸들러를 제공하며 설치한 C++용 핸들러에서 처리가 되지 않았다면 기본 핸들러에서 처리되므로 이부분에 스크립트언어를 연결할 수 있다.
    • UI 자체 편집기능을 제공한다.
    • 자체편집에서 이미지 매핑 기능을 제공한다.
    • 자체편집에서 이벤트 핸들링을 할 수 있다.
    • 템플릿 기능을 제공한다. 기본 컨트롤도 템플릿 기능으로 제공되며 유저용 폴더에 경로를 맞춰서 템플릿을 넣으면 기본 컨트롤 메뉴에 함께 나오도록 한다.
    • 스크롤은 zbuffer를 이용한 Pixel스크롤 형태를 제공한다.
    • 다국어 IME를 제공한다.
    • 로컬라이징을 위해 스트링은 별도의 테이블 형태로 데이터를 분리한다.
    • 유저용 옵션 헤더와 텍스트 설정파일을 제공한다.
    • 컨트롤에 툴팁을 넣을 수 있도록 한다.

    지원되는 컨트롤

    • 버튼, 체크버튼, 라디오버튼, 에디트박스, 리스트, 콤보박스, 트리, 프로그레스, 메뉴, 팝업메뉴, 윈도우, 스크롤윈도우, 스크롤바, 스태틱, 슬롯(아이템이나 스킬용의), 툴팁


    ...위에 내용 적힌거 다하려면 1년도 넘게 걸릴듯-ㅅ-;;

    '게임개발 > SUI' 카테고리의 다른 글

    SUI용 위키 개설  (0) 2006.10.26
    데스크탑용 모니위키를 쓸까.. 하다가 결국은 호스팅 계정에 모니위키를 설치했다.
    사실은 매뉴얼 용도는 아니고 초기 아이디어 정리용이라 웹상에 있는것보다는 데스크탑용이 더 나을것도 같았으나..
    머 어쨋건..;;

    일단 문서 작성은 전에 얘기한것처럼 아주...처~언~처~언~히~이~ 될 예정이고..
    내용이 정리되면 블로그쪽에 정리된 내용을 포스팅할 예정이므로
    방문객은 위키까지 직접 가서 보실 필요는 없으시므로 url은 공개하지 않겠다..;

    '게임개발 > SUI' 카테고리의 다른 글

    SUI 구현목표  (10) 2006.10.31
    새로운 UI모듈을 만들일 같은건 없을거라고 생각했는데( http://www.larosel.com/69 참고 )..

    왠지 슬슬 새 UI모듈을 만들고 싶어졌다.

    회사에서 사용하는걸 계속 리펙토링을 할까..도 생각해봤는데..
    베이스를 새로 만들고 싶어져서 기존 만들어 놨던것들을 다 뒤집기는 무리가 있다..;

    진행은 무척이나 천천히..;; 할 생각이고 하다가 귀찮아질 가능성이 높기 때문에 왠만큼 나와준다는 보장도 없다....;;

    먼가 구상문서를 적을곳이 필요한다.. 도메인을 티스토리에 연결시켜버려서 호스팅의 위키를 쓰기도 좀 머하고..
    전에 잘못깔아서 새로 깔아야 하는데 그것도 귀찮다.

    그렇다고 블로그에 적자니.. 먼가 문서화랑은 안맞고..

    흐음....
    시작도 안했는데 귀찮아 졌다..;;

    '게임개발 > 생각' 카테고리의 다른 글

    VisualStudio 스프링노트 Addin?  (4) 2008.02.26
    Visual Studio 2008 shell을 보니.  (3) 2008.01.17
    ONE OUTS 2권 중..  (4) 2006.10.21
    사실은  (4) 2006.10.21
    개인적인 욕심  (1) 2006.10.10

    처음작성 : 2006-06-27

    PNG항목 추가 : 2006-07-31

    글 다쓰고 마무리 하고 있었는데 노트북 다운되서 대략 orz

    다시 쓰쟈..-_-

    참고로 개인 블로그에 올리는 용도이므로 말은 편하게 하겠습니다..;;

    참고로 각 참고용 이미지는 풍류공작소(http://p.paran.com)..;; 1차 클베버전UI의 스샷이고, 홈페이지에도 많이 공개되어 있으므로, 개발중인 내용을 공개하는게 절대-_- 아니며, 편집기능 같은 경우는 찍을수 있는 사람이 내부 개발자 몇명-_- 밖에 없기는 하지만, 공개되도 별 상관없는 내용이고, 일부러 부분 스샷이 아니라 하단에 로고가 잘 들어가 있는 풀~ 스샷으로 넣었으니까.. 스샷 유출했다고 혼내지 마세요ㅠ.

    --------------------------


    지금 쓰고 있는 UI모듈을 만든게 2004 2월이니 꽤 오래되었다.

    처음 만들때는 새프로젝트를 시작한지 얼마 안됐었지만 기존 프로젝트도 유지보수를 같이 해야 하는 상황이었고, 한참 해외화다 머다 정신 없는 시절이었어서..

    작업시간은 퇴근후에 시간을 내어서 할 수 밖에 없었고, 기한은 두달정도라 시간에 쫒겨서 꽤 대충..;; 만들었다.


    그래도 몇년간 UI에 대해서 구상해왔던지라 구조적인 부분은 꽤 신경써서 만들어 놨었어서.. 현재까지도 편집의 편의를 위한 몇가지 기능과 lua연동, 이미지매핑을 추가 한것 말고는 별다른 수정없이 잘 쓰고 있다.

    꽤 오래쓰다 보니 여러가지 기능 추가나 리펙토링을 하고 싶은게 잔뜩이지만, 항상 다른 스케줄에 밀리는 관계로 아마 회사내에 있는 상태로는 힘들것 같다..;;

    혹시 다음에 회사를 옮기게 되면 한 3개월 정도 쉬면서 공개를 할 수 있도록 처음부터 새로 만들고 싶다..;;


    어쨋건 처음 게임용 GUI를 만들게 된다면 MFC DXUT UI를 참고하는게 꽤 도움이 된다..

    현재 모듈 만들때는 DXUT가 없었기 때문에 이쪽은 별로 참고를 안했고(사실 참고할것도 별로 없다..)

    MFC를 꽤 많이 참고를 했고... 기능적인 부분은 마비노기를 베꼈다..벤치마킹 했다


    해외게임까지 통틀어 놓고 봐도 마비노기의 인터페이스는 쵝오다 >_<)=b

    기능적인 부분을 빼고 보더라도 UI본연의 기능인 접근성과 0에 가까운 학습시간..은 경이로울 정도다..;

    하지만...;; 이건 개인의 취향일 뿐이고, 보통의 MMORPG를 개발한때는 좀 더 게임틱-_- UI를 원하므로 너무 마비노기에 집착하는건 좋지 않다..;; ( 난 너무 집착했다-_- )


    덕분에 프로그램으로 구현된 그래픽(실제로 마비노기가 이런방식을 사용하는지는 모른다)에 너무 집중했다-_-;;

    대부분의 내용을 프로그램으로 그리고 가끔 이미지가 필요한 부분에만 이미지를 넣는다..라고 컨셉을 잡았는데.. 그렇게....되기는 힘들다. _ _;;;

    사실 프로그램으로 그릴수 있는건 이미지로 대부분 커버가 되기 때문에 쓸데 없기도 하고..;;


    이미지코드노가다-_-;의 시간은 둘째치고(사실은 xml에서 폴리곤이나 line등의 데이터를 읽도록 했기 때문에 그다지 오래걸리지는 않았지만..)

    구조를 코드로 그리는 쪽으로 맞춰버린 덕에 지금도 고생하고 있다..;;

    이건 잡담이지만 UI용어를 위젯이라고 쓰기도 하고 컨트롤이라고 쓰기도 하고, 다른 용어를 쓰기도 하는데..현재 모듈은 컨트롤이라고 쓰고 있다.

    어쨋건 내가 생각하는 게임용 GUI를 만들 때 고려해야할 점은 다음과 같다.


    1.
    컨트롤의 구조가 Tree형태가 되도록 하쟈

    어플리케이션의 UI는 다이얼로그에 각 컨트롤들이 올라가는 형태지만...

    게임에서는 창안에 창이 들어가야하는 경우가 비일비재하게 발생한다..

    이부분은 사실 그렇게 안만들려면 안만들수도 있다-_-;

    사실 전에 전에 만들던 게임같은 경우도 그냥 윈도우는 루트바로 밑에 존재하고, 그 하위에 버튼이나 등등등이 들어가도록 사용했었다.

    막상 Tree형태가 필요한걸 생각하려고 하니 생각이 잘 안난다..;;

    현재는 구조상에 강제하는 부분은 없는데 Static밑에 Window가 들어간다거나..할 수 있는 형태다.

    우훔 장점은 창안에 세부창을 두고 각 창을 hide/visible시킨다던가 enable/disable시킨다던가 하는 그룹형태로 쓸 수 있다...;;

    탭기능 같은 경우도 편하다. 탭을 선택하면 각 탭에 연결된 창을 hide/visible시키면 된다.

    머 대충 그렇다-_-;;

    2. UI편집툴을 만들지 말고 자체 편집이 가능하도록 하쟈...

    처음에 상당히 고생한 부분인데 먼가 UI테스트를 하려고 보니 편집관련 UI가 필요해져서 닭이 먼저냐 닭알이 먼저냐의 상황이 되서 상당히 난감했었다-_-;;

    결국은 편집UI가 완성될때까지는 xml에서 직접 편집해줬었다..


    사실은 여기서 더 중요한건 UI툴이 있어야 한다-_-;

    UI툴을 만들지 않고 xml을 직접 편집하는 형태로 작업을 하는 경우도 있는데..

    그런형태의 작업에서는 좌표같은걸 맞춘다거나 이미지 매핑을 하는게 수치 바꿔보고 다시 로딩해보고.. 를 반복해야 하기때문에 (물론 포토샵에서 좌표를 가져오는 법도 있지만 번거롭긴 마찬가지다)..

    실제 작업시간이 상당히 많이 차이가 난다.


    그리고 그 기능이 별도의 툴이 아니라 자체 편집이 필요한 이유는 게임화면을 보면서 실제 작동을 바로 테스트 할 수 있다는 장점이 있다..;;


    처음 레이아웃 잡는건 툴에서 한다고 해도..

    조금 작업하다보면 게임화면을 보면서 작업을 해야하게 되기 때문에 게임내에서 바로 편집할 수 있도록 만들어 두면 작업효율이 몇배의 차이가 난다.

    현재의 UI는 게임중에 Control+Space Bar를 누르면 바로 편집모드로 전환되며(물론 개발용 빌드에서만 이다.. 배포용 빌드에는 막혀있다. )

    덕분에 경영진 앞에서 시연하다가도 먼가 UI위치가 이상하다고 하면 바로 편집모드로 들어가서 쓱 끌어다가 옮겨주는 센스를 발휘할 수 있다.(처음보면 다들 신기해한다-_-a)


    물론 경영진을 보여주기 위한건 아니고-_-;;

    게임 상황에서 보면서 편집하기 위한 용도이며 기획자나 디자이너의 의견을 바로 적용해서 보여줄 수 있다는건 상당한 이득이다..

    UI작업은 안그래도노가다성이 짙은데 작업시간마저 길다면 대략 재미없어지므로 가능한 작업시간을 단축시킬 수 있는 방법을 다각도로 연구하는게 좋다...;;


    3.
    이미지 매핑 기능을 넣쟈..

    자체 UI편집기능이 있다면 바로 이미지 매핑을 해서 게임화면에서 볼 수 있도록 하는게 좋다.


    꽤 오래전에 N모사의 L게임 2-_-에서 포토샵에서 이미지의 좌표를 보고 xml에 편집하도록 하는 알바-_-를 뽑는걸 보고 경악한적이 있다..


     
    2D
    스프라이트 툴을 만들어봤다면 이미지에서 적당한 영역을 체크해서 RECT를 뽑아오는 기능을 만드는게 별로 어렵지 않고 작업기간도 얼마 걸리지 않는 일인데...


    이걸 사람이 수동으로 하다니-_-;;;;;;

    어쨋건 UI작업의 30%정도는 좌표랑 크기 맞추기이고 50%정도는 이미지 세팅이기 때문에 마비노기나 라그나로크처럼 대부분의 UI를 같은 이미지 형태를 사용하는게 아니라면... 필수적인 기능이다..

    게다가 편집기능이 이미 존재하면 별로 어렵지도 않고, 비용대비 효과는 환상적이다..;


    4.
    프라퍼티를 제어하쟈

    똑같은 창이라고 해도 어떤창은 이동이 가능하고 어떤창은 폰트 크기가 다르다거나... 하는 식의 내용들이 많은데.. 자체 편집이 가능하다면 프라퍼티도 실시간으로 바꿀 수 있도록 하면 작동을 바로 확인할 수 있다..

    현재 사용하는 속성은 대략 20개가 약간 넘는데.. 컨트롤 이름부터 Text, align, 좌표, 크기, 폰트, 처음에 열려 있을것인가..등등등과 각 컨트롤의 고유속성이 있다.

    5. 이벤트 편집 기능을 만들쟈..

    이벤트란 머 예를 들면, 메뉴의 한 버튼의 Click(Excute)이벤트가 발생하면 Inventory창에 Toggle(Visible/Hide) 메세지를 던진다.. 라는 내용이다.

    타겟 컨트롤을 선택하고, 발생 이벤트를 선택하고 어떤 메세지를 던질지를 편집할 수 있게 하쟈


    그리고 UI자체내에서 가능한 내용(Visible, Check)은 바로 처리해준다..

    그리고 클라이언트와의 연동이 필요하다거나 한 경우를 위해 커스텀 메세지를 지원한다.


    현재의 모듈은 커스텀 메세지를 처리할 수 있는 C++콜백을 코드에서 수동으로 설정하거나, lua파일에 자동으로 연동되도록 되어 있다.


    6.
    다른 컨트롤을 포함하쟈.

    예를 들어 콤보박스라고 하면(게임에선 DropList만 있으면 된다-_-)

    현재 선택되어 있는 항목을 보여주는 Static과 선택창(List), 선택창을 여는 버튼(Button) 세개의 컨트롤로 구성 할 수 있다.

    현재 이게 콤보박스라는 하나의 클래스에서 다 처리를 하게끔 되어 있는데 대략 낭패다..;;

    현재는 분리가 안되있는 상태여서 쓸데없이 SubList가 열리는 이벤트라던가 하는 쓸데없는 이벤트와 메세지들이 생겨버렸다-_-;;

    Static List Button의 각 이미지를 따로 세팅해야 하는데 물론 콤보박스의 이미지 종류를 늘려서 각각 세팅하도록 할수도 있지만..

    이미 만들어져서 Focus처리나 이미지 처리, 속성처리, 이벤트처리까지 다 되는걸 만들어 놓고.. 따로 만들 필요는 없다..;

    ComboBox라는 컨트롤을 만들고 위 세개의 컨트롤을 하위로 가지고 있도록 하고, 셀렉트 관련 몇가지 인터페이스만 만들어주면 쉽게 끝난다-_-;


    7. Template
    기능을 만들쟈

    이건 워드같은데 있는 문서 템플릿 같은걸 말한다..

    일반 창이라고 하면, 적당한 크기에 윈도우용 크기가변 이미지가 세팅되어 있고, RightTop으로 Close버튼이 있고, 버튼에는 X모양의 이미지가 매핑되어 있고, Execute이벤트에 부모윈도우에 Invisible Message를 보내는 이벤트가 설치되어 있는...


    형태가 자주 쓰는 창이라고 하면 이 창을 템플릿으로 따로 저장하게 하쟈..

    어차피 저장기능은 있을거고 그게 전체 저장이 아니라 컨트롤 하나로 부터 하위로 저장을 하도록 하면 되니까 별로 어렵지는 않다.

    응용하면 쉽게 컨트롤의 Copy&Paste기능을 만들 수 있다.

    이 기능 하나로 지루한 작업을 꽤 줄여줄 수 있다..

    만약 이미지가 같다고 하면 이미지와 이벤트가 모두 설정되어 있는 템플릿을 추가하면 바로 새로운 창하나 뚝딱 완성이다.


    8. PixelScroll
    을 만들쟈..

    스크롤 기능을 각 리스트컨트롤이나 콤보박스에 넣고, 따로 스크롤바컨트롤 하나 만들어서 창에서 Draw할때 참고하도록 할 수도 있지만..

    PixelScroll이 되면 꽤 할 수 있는게 많다.

    각 컨트롤별로 기능따로 만들고 창에 스크롤바 하나 달때마다 고생할거 생각하면 PixelScroll을 만들어서 속편하게 쓰쟈


    9.
    다국어 IME는 미리 만들쟈..

    IME는 미리 만들어 놓는게 좋다. 그리고, 유니코드용으로 만들어서 UniScribe를 사용하도록 하는게 좋다.

    나중에 해외화할때는 다른것도 할거 많은데 IME까지 신경쓰려면 대략 정신이 멍해진다..

    UniScribe는 윈도우에서 제공해주는 텍스트 파서? 같은 형태인데. DX에서 Rect를 넣고 Text출력을 하면 줄바꿈 처리가 되는게 내부에서 UniScribe를 사용한다..(일반 어플리케이션에서도 사용한다..)

    IME는 기본 IME Candidate외에 따로 처리해줘야 하는 언어가 몇개 있는데...

    한국어, 중국어, 일본어, 태국어, 아랍어-_- 이다..

    아랍에 수출할일은 없겠지.. ( __);

    GPGStudy자료실을 뒤져보면 zupet님께서 한국어, 중국어, 일본어, 태국어.. Candidate처리까지 되는 소스를 올려놓으신게 있으니 그쪽을 참고하고.. 혹시나 모자른 내용은 MSDN-_-)=b

    IME는 예전에 다 처리해두었는데 블록 설정하고 Copy&Paste기능 따위를 넣다가 현재는 버그가 있는 상황이다ㅠ.


    10. 이미지 파일 포맷은 PNG를 사용하자.

    PNG파일은 무손실 압축 포맷이며, 압축률이 상당히 높은 편이다.

    UI의 경우 DXT포맷을 사용하면 이미지가 손상되어 TGA를 사용하는 경우가 많은데

    TGA에 비해서 PNG쪽이 훨씬 용량이 적다.

    게다가 TGA의 경우는 알파값을 알파채널에 따로 넣는 작업을 디자이너가 해줘야 하지만

    PNG의 경우 포토샵의 투명배경(격자로 되어있는..;;)의 투명값을 그대로 가져올 수 있다.

    레이어로 편집하고 있던 데이터를 그냥 세이브 해도 된다는 얘기다..;;

    TGA의 경우는 레이어를 머지해서 투명도 값을 따로 뽑아서 알파채널에 넣어줘야 해서 상당히 번거롭다..;

    디자이너가 편해지면 프로그래머도 편해진다는 점을 명심하자.

    ps. 그렇다고 UI외에도 다 png를 쓰지는 말쟈-_-;; 2d가 아닌 3d상황에서는 dxt가 단연 좋다


    -----------------


    물론 이외에도 다른 편의성 기능들이라던가 lua연동이라든가 만들면 좋은게 많겠지만.. 대략 이정도의 내용이면 지겨운 UI작업을 빠르고 쉽게 할 수 있으리라 생각된다.

    당부를 하는건 vb mfc등의 어플리케이션용 UI를 참고하는건 좋지만, 어플리케이션과 게임은 사용목적이 전혀 다르기 때문에 중요하게 생각해야 하는것이 다르므로, 어플리케이션UI에 집착하면 좋지 않다..;

    '자료 > 내자료' 카테고리의 다른 글

    SPE 길찾기용 지형구조 - V2  (1) 2007.02.22
    SPE V1 - 길찾기용 지형구조  (9) 2006.12.10
    MSB/LSB template  (0) 2006.05.18
    is_template  (0) 2006.05.10
    분절 모델의 접합부위 Normal값 수정  (0) 2006.02.23

    사실 공개 UI모듈들도 꽤 있지만 대부분 UI를 표현하는쪽으로 초점이 맞춰져 있는게 사실이고 (제대로 살펴보지도 않았지만)
    국내에서도 전체적인 개발기술들에 대해서 갖추고 있는거에 비해 모듈이나 엔진수준의 내용공개가 너무 안되어 있는것도 사실이고 (먹고 살기 바쁘고 보통은 회사에 종속되어 있어서..려나)
    특히 UI나 Effect쪽은 너무 자료가 없기도 하고 (이건 해외쪽도 별로 자료가 없지만)
    나름대로 UI쪽은 한가닥 한다고 생각하고 있고 (혼자만의 생각이지만)
    하는것들이 있어서 전부터 공개소스로 UI모듈을 개발해 보면 어떨까.. 하는 생각이 있었다. ( 진짜로 할일은 없겠지만 )

    생각해보면 실제로 진행을 한다라고 해도 참여할 개발자는 없을테니 (있어도 안받을지도)
    KLDP에 프로젝트를 만들기도 머하고 (그쪽에서 안받아줄지도-_-)
    만들어 논다고 우리나라 사람들한테 GPL같은걸 지켜라.. 하는 것도 무리고 (지키는 사람도 꽤 있긴 하지만)
    문서화나 주석을 달것도 아니고 요구사항을 반영해줄것도 아니고 질문에 답변을 할것도 아닌지라...
    귀찮아만 질거 같다.. 에헹~

    혹시 하게 되면 모듈명은 쑥UI...즉 SUI가 되려나.. 왠지 SUIGUI의 냄새가-_-;;

    ps. 생각해보니 그러려면 UI쪽에서 사용하는 xml라이브러리 기타등등부터 다 공개화를 해야 하나-ㅅ-;;;

    '게임개발 > 생각' 카테고리의 다른 글

    개인적인 욕심  (1) 2006.10.10
    TypeTraits  (0) 2006.05.10
    자꾸 IK가 하고 싶어진다-_-;  (0) 2005.12.12
    나쁜 아이디어를 위한 좋은 방법  (0) 2005.12.08
    툴과 매뉴얼  (0) 2005.11.22

    사실 여태까지 png를 어따가 쓰는건지 몰랐다-_-;
    그냥 파일포맷중 하나이겠거니... 했었는데..
    알고보니 무손실압축에 알파채널을 지원하는 포맷이었다.

    여태까지는 dxt포맷은 손실압축이라 퀄리티 저하가 되서 UI에 사용하지 못하고 tga파일을 사용하고 있었는데
    tga의 경우는 이미지 자체의 투명도(transperent background - 투명 배경, 일명 격자 배경-_-)을 사용하는게 아니라 alpha채널을 뽑아내는 방식이라
    디자이너가 마스크를 씌워서 투명도를 구워?내서 알파채널에 넣고 tga를 뽑는 번거로운 방식을 사용해야 했었는데
    png는 투명도를 그대로 뽑아낼 수 있어서 디자이너의 편의성이 상당히 올라간다.

    게다가, 512*512이미지가 tga는 1,025KB였는데 동일한 png이미지는(물론 tga의 알파채널을 다시 투명도로 바꾸는 법을 몰라서 대충-_- 투명도를 칠하고 테스트 했다.) 38KB밖에 안한다.
    오오오! 무려 1/27의 사이즈!!!
    투명도를 제대로 사용한다고 해도 1/10은 건질 수 있다는 얘기다 오호호
    물론 UI가 심플한 디자인이라 압축률이 높은 거 같기는 하지만.

    정확한 파일포맷스펙을 보지 않아서 어떨지는 모르겠는데
    로딩할때 압축푸느라 시간이 꽤 걸린다는 풍문-_-이 있다.
    복잡한 1024*1024짜리 이미지-_-a로 체감테스트-_-를 해봤는데 실제로 꽤 걸리는거 같다.
    현재의 심플한 디자인의 이미지로 테스트 해보니 별 차이가 느껴지지 않았다~ 잇힝~
    UI디자인은 보통 심플한 형태고, 실제 UI창이 뜨거나 할 때 좀 느리게 떠도 큰 상관없으므로
    png로 가는게 좋을 것 같다.

    속도상의 손해보다는 용량의 이득이 너무 크다-.ㅜ
    용량이 줄면 풀버전의 용량도 적어지고 패치파일의 용량도 적어지고 설치시간과 패치시간도 적어진다.
    풀버전과 패치파일의 용량이 적어지면 유저가 다운로드 받는 양이 적어진다는거고 CDN의 트래픽이 줄어들어 결국은 돈을 번다는 얘기다-_-;

    물론 dxt를 쓸 수 있는곳은 dxt를 써야 겠지만 dds를 사용하지 못하고 이미지가 복잡하지 않은 UI의 경우는 딱 제격이다.

    일찍 알았으면 좋았을걸 이라는 생각도 들지만 이제라도 알아서 다행이다. 아직 배포는 안됐으니까-_-;

    낼 디자이너분한테 얘기해서 이번버전부턴 png로 가야겠다~ 잇힝~

    PS1. 역시 클라이언트 프로그래머는 잡다한걸 많이 배워둬야 한다.
    PS2. 클라이언트 프로그래머는 디자이너와 친해두는게 좋다.

    '게임개발 > ' 카테고리의 다른 글

    vs 2005의 for each  (0) 2005.11.07
    VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
    Cubemap을 이용한 SkyBox  (4) 2005.07.11
    Increase, Decrease Macro  (0) 2005.07.08
    Two-Sided Polygons  (0) 2005.05.20

    + Recent posts