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

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

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

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

ps. 덕분에 Download count가 0으로... orz;;
  1. Favicon of http://myrodin.jaram.org BlogIcon 로딘 2008.03.13 15:08

    저도 VS2005만 깔려있는 상태인데...
    여전히 안 되는듯 하네요.

    마지막에 devenv.exe /setup 부분에서 한참 서있다가 넘어가는데...
    여튼 완료 후에 VS를 실행시켜보면 메뉴가 없어요...llorz

    뭔가 잘못한게 있는걸까요? ;ㅁ;

    • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 16:27 신고

      일단 NSIS로 패킹해서 exe로 재배포한거는 방금 테스트 해봤는데 별이상 없습니다.
      원래 문제는 설치시에 devenv.exe를 찾지 못해서 생기던 문제 였고 NSIS버전은 파일이 없으면 실행하지 않도록 하였기 때문에..
      설치가 되었는데 메뉴가 나오지 않는다는 건 이상하네요.

  2. Favicon of http://acrobat.egloos.com BlogIcon 승후 2008.03.13 18:22

    자빠진건 괜찮냐 ? ㅡ0ㅡ

    • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 18:23 신고

      아직 완치는 안됐지만 그럭저럭 괘얀아.
      근데 이걸 물어보는 시기가 좀 미묘하다-ㅅ-?

  3. 프리거 2008.03.13 19:15

    저만 안되는게 아니었군요 ㅡㅡ;;
    여러 컴퓨터에서 설치를 시험했지만... 메뉴가 안나오네요 ㅡㅡ;

    어떻게 실행하는건지도 모르겠구요 ㅡㅡ;;
    sample을 실행해도 걍 그대로 있네요.
    기본 메세지도 출력창에 안나오구요. 설치할때 현상은 로딘님과 같습니다.

    꼭 되게 해주세요 ㅡㅜ

    • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 19:08 신고

      안되시는 분이 또 있으시군요 orz
      VS어떤 버전들이 설치되어 있는지, 서비스팩은 설치되어 있는지, 안되는건 어떤 버전에서 안되는지 Help의 About창에 설치된 제품 목록에 VisualUnitTest++이 있는지를 적어주시면 도움이 될 듯 합니다;

  4. 프리거 2008.03.13 19:38

    헉!!!
    저는 VS2005를 사용하구 있구요. 설치하자 마자 업데이트를 했으니 서비스팩은 최신일겁니다.

    그리고 도움말->Microsoft Visual Studio 정보 를 열었더니
    패키지 로드 오류가 뜹니다.

    제 데탑, 노트북 전부 같은 증상이구요.

    참고로
    데탑: VC6.0 / VS2003 / VS2005
    노트북: VC6.0 / VS2005가 설치되어 있습니다

    실시간 답변~~ 감동입니다 ^^


    아! 그리고 질문이 하나 있습니다. sample중에 SampleUnitTest++.2005를 빌드했습니다. (당연히 UnitTest++이 있구요)
    그런데 빌드는 성공했는데 출력창에 정보가 안나옵니다.
    TDD에 해당되는 정보는 어떻게 보는건가요??

    • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 20:03 신고

      아.. 패키지 로드 오류가 뜨시는군요..
      제가 레지스트리를 먼가 삽질한게 있나봅니다.
      흐음.. 레지스트리쪽 문제면 저도 같은 증상이 생겨야 하는데.. 흐음.. 좀 살펴봐야겠네요.
      괜찮으시면 larosel@larosel.com으로 오류 스크린샷을 보내주시면 큰 도움이 될 것 같습니다.

      SampleUnitTest++프로젝트의 경우는 출력창으로 출력하게 하지 않고 VisualUnitTest쪽으로 결과를 받아오게 해서 보여주는거라 출력창에서는 보이지 않습니다.

      참고로 .net프레임웍 2.0이 필요합니다만... vs2005가 있으니 당연히 깔려 있겠지요;;

  5. 프리거 2008.03.13 20:24

    메일 드렸습니다 ^^

사용자 삽입 이미지
새버전이 배포되었습니다.
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에 런칭하는 부분이 아예 따로 되어 있는것 같기도 합니다.

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

    1. Favicon of http://somma.egloos.com BlogIcon somma 2008.03.13 09:55

      WinUnit 으로 유닛 테스트라는걸 처음으로 해보고 있습니다.
      GUI 가 없이 출력창으로만 메세지 확인하는게 좀 불편했는데 .. 정말 정말 잘 쓰겠습니다.
      복 받으실 거에요. &^^

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 10:00 신고

        별말씀을요~
        잘 사용하시고 피드백 잘해주세요 ㅎㅎ

    2. Favicon of http://rein.upnl.org BlogIcon rein 2008.03.13 10:32

      VS2005만 있는 시스템에선 인스톨이 안되는 것 같습니다;;; 흑흑

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 10:36 신고

        아... 아예 인스톨이 안되나요?
        인스톨할때 devenv.exe /setup를 실행해주는 부분이 있기는 한데 못하면 안해도 되게끔 설정해놔서 문제 없을거라고 생각했는데..
        테스트 해볼 방법이 없군요. orz

    3. Favicon of http://rein.upnl.org BlogIcon rein 2008.03.13 11:05

      꼼수로 일단 설치했습니다. 새 메뉴 맘에 드네요 :)

      일단 꼼수는,
      msiexec /i VUTPP.0.3.msi DEVENV_EXE_2008="c:\bin\a.bat"
      로 VS 2008 실행을 배치 파일 실행으로 피해나가는 짓을 했습니다;

      a.bat은 exit 0 한줄만 들어가있는 더미 배치 파일들입니다. 혹시 2005만 쓰시는 분 중에 오류로 고생하시는 분 있으면 써보셔도 좋을 겁니다;;

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2008.03.13 11:37 신고

        으음.. 아무리 찾아봐도 방법이 없네요.
        인스톨러를 딴거로 바꿔야겠습니다;;

    4. 김대정 2008.03.26 11:16

      디버그 기능이라고 하며, [Run Selected]버튼을 눌렀을 경우에 F5를 누른것처럼 Test함수의 내부를 트레이스를 할 수 있게 한다는 말씀인가요?

    사용자 삽입 이미지






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

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

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

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

      이제 부터 중국산 찐쌀을 먹기로 한거야?..그런거야?

    GUI, SUI

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

    기본 사양

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

    제공 기능

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

    지원되는 컨트롤

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


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

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

    SUI 구현목표  (10) 2006.10.31
    SUI용 위키 개설  (0) 2006.10.26
    1. hey 2006.10.31 09:46

      우와, 기대하고 있습니다. !_! CUSTUM -> CUSTOM

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2006.10.31 11:05 신고

        앗! 전 왜 맨날 이걸 헛갈릴까요 ㅠㅠ
        수정하였습니다^^;
        실제로 작업할 시간은 거의 없기때문에 진행이 될지는 장담이 안되는..;;

    2. 레이옷 2006.10.31 10:59

      역시나 쑥갓군은 뼛속까지 툴 프로그래머!

    3. Favicon of http://dcple.com BlogIcon chadr 2006.10.31 14:05

      앗..저하고 비슷한걸 만드시는군요..
      저도 위에 나열하신 기능들은 거의전부 구현 하고.. 픽셀단위 스크롤과 자체 폰트 렌더러.. 그리고 스킨 제작툴 정도가 남았는데 구현할려니 참으로 귀찮아서 몇달째 방치해두고 있습니다;;

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2006.10.31 16:13 신고

        네 dcgui도 관심있게 보고 있습니다^^
        하지만 http://www.larosel.com/69
        를 보시면 아시겠지만 작업하시는 내용이 저하고는 방향성이 조금 다르신것 같네요^^
        저는 UI툴을 만드는게 목표가 아니라 게임내에서 돌아가는 상태의 UI를 편집하는게 제일 큰 목표라서요^^

    4. Favicon of http://dcple.com BlogIcon chadr 2006.10.31 16:25

      음.. 그럼 궁금한게 있습니다. 그렇다면 초기 ui스크립트는 우선 손으로 간단하게 구성을 한 다음에 게임내 ui 출력상태에서 나머지 편집과정을 거치는건가요? 아니면 처음부터 간단한 편집기능을 제공하여 zero상태부터 컨트롤의 추가 삭제 편집등이 가능하도록 하시는건가요? 즉.. 기본적인 ui 에디터를 직접 구현하여 에디터 활성상태일때 게임내의 ui 자원을 편집하도록 하는건가요? 왠지 쑥갓님의 방향이 더 좋으신것 같아서 저도 따라해보고 싶군요 ㅎㅎ

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2006.10.31 17:14 신고

        zero상태에서 가능합니다.
        유저이벤트핸들러를 제외한 나머지는 모두 자체편집이 가능합니다.
        그리고 editmode를 켜게 되면 편집가능하며 편집용 핸들러외의 유저가 추가한 핸들러는 실행시키지 않습니다.
        버튼누르는 이미지가 잘 매핑되었나 확인한더던가 하는 경우에 닫기 버튼을 눌러서 창이 닫힌다거나 하면 편집이 불편하기 때문입니다.

    5. freeyang 2007.04.11 06:37

      멋진 계획 잡으셨네요.
      자주 방문해서 UI에 대해서 배우고 가겠습니다.

    6. 촬스 2010.05.11 15:32

      uniscribe... 아랍어 때문에 해봤는데요..
      힘들더군요..-_-;;

      특히 역방향 글자랑 정방향 섞어서 쓸때.. 특수문자중 괄호같은거.. 처리가..쿨럭..

      흐음.. 문자열을 통째로 처리한다면 모를까... 캐쉬해야 되기때문에..
      그건 힘들고.. 워드단위로 나눠서 하긴해는데 위와 같은 괄호 문제..
      두둥!!커헉..

      눈물을 머금고 야근.. -ㅅ-
      참고로 컴플렉스 언어는 손안대는게 상책이라는 판단이..

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

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

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

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

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

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

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

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

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

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

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

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

      SUI....GUI.... suigui 네.. -_-+

    2. Favicon of https://www.larosel.com BlogIcon 쑥갓 2006.10.23 10:37 신고

      이름이 좀 별로지-_-?;

    GUI

    처음작성 : 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
    게임을 위한 GUI모듈  (4) 2006.07.31
    MSB/LSB template  (0) 2006.05.18
    is_template  (0) 2006.05.10
    분절 모델의 접합부위 Normal값 수정  (0) 2006.02.23
    1. freeyang 2007.06.22 16:35

      쑥갓재배기님 안녕하세요. 무척 오랜만에 글을 남깁니다.
      PixelScroll이 무엇인지 궁금합니다.
      채팅리스트 같은건 툴에서 지원해서 사용하는데 조금만 모양이 달라도 스크롤바는 나올때마다 일일이 코딩해서 사용하고 있습니다.
      실력이 부족해서 코딩으로 일일이 만들다보니 UI변경될때 마다 너무 힘이 들어서 PixelScroll이 먼지 무척 궁금합니다.

      • Favicon of https://www.larosel.com BlogIcon 쑥갓 2007.06.23 20:01 신고

        픽셀스크롤은 말그대로 픽셀단위로 스크롤한다는 내용입니다.
        예를들어 리스트 같은 경우 한줄 단위로 보통 한줄단위로 스크롤되게 만드는데 그렇게 만들면 리스트에서밖에 쓰지 못하게 되죠.
        그래서 그 리스트 위에 픽섹단위로 스크롤 되는 컨트롤을 하나 더 두어서 리스트를 그 안에 넣는다는 말입니다.

    2. UI디자이너 2008.04.22 09:31

      좀 지난 글이지만 잘 보고갑니다^^ PNG크 ㅠㅠ;

    3. Favicon of http://blog.naver.com/masque BlogIcon 날자고도 2008.05.05 01:27

      글 잘보았습니다. ^^

      PNG의 경우, 무손실압축에 압축률도 높은 편이지만,
      단점이 저장하고 불러오는 속도가 너무 늦다는 단점이 있습니다.
      특히, 크기가 크고, 량이 많을수록 빈번하게 툴을 사용하면,
      이것도 무시못할정도 이더군요.

      TGA도 PNG처럼 알파채널을 저장하는것으로 알고 있습니다.
      포토샵의 버그로, 플러그인을 정삭적인것으로 넣어주면 됩니다.

      DDS는 무손실저장이 있습니다.
      UI사용시 무손실이 필수죠..

    GUI

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

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

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

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

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

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

    사실 여태까지 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
    파일포맷 png  (0) 2005.09.07
    Cubemap을 이용한 SkyBox  (4) 2005.07.11
    Increase, Decrease Macro  (0) 2005.07.08
    Two-Sided Polygons  (0) 2005.05.20

    + Recent posts