• 2008-01-21

    Get Precompiled Boost Library

    boost-consulting.PNG

    다들 아는 사실이겠지만, boost-consulting 에 가면 Visual Studio 용으로 컴파일된 바이너리를 다운 받을 수 있는 인스톨러를 제공한다. VS2005용으로 빌드된 라이브러리를 다 다운받을 경우 대략 1.8G 정도의 분량을 다운받아야 한다. 이 기회에 회사 프로젝트의 boost도 슬슬 업그레이드해야 겠다.

    참고 삼아서, 최신 Boost.Test 에서는 단 6줄 만으로 간단한 테스트 프로젝트를 만들 수 있다.

    
    #define BOOST_TEST_MAIN
    #include <boost/test/unit_test.hpp>
    BOOST_AUTO_TEST_CASE( test1 )
    {
    BOOST_CHECK( 2 == 1 );
    }
    
  • 2008-01-19

    Punk Buster

    http://www.evenbalance.com/art/pblogo.gif

    Punk Buster 퀘이크, 둠, 콜 오브 듀티, 배틀 필드, 그리고 크라이시스등 유수 FPS 게임들이 채택한 안티 해킹 툴이다. 국산 게임으로는 워락이 유일한 듯하다.

    국산 G모 프로그램과의 그렇게 현격한 차이가 있어 보이지 않지만, 몇 가지 독특한 기능들이 들어 있는 것 같다.

    • dedicated server 의 관리자는 PBBAN 이라는 사이트로 찌질이 목록을 내보내거나 받아올 수 있는 것 같다. XBOX Live 를 연상케하는 이런 시스템을, 국산 온라인 게임들이 채택하고 서로 공유한다면 꽤 유용할 법도 하다.
    • 사용자 클라이언트의 스크린샷을 캡처하거나, 키바인딩 정보를 서버로 전송시킬수 있다. 가만히 생각해보면 별거 아닌 기능이지만, 각종 불법적인 행위를 준비하고 있는 증거를 입수한다면 ban을 항의하는 사용자들에게 증거로 보여줄 수도 있을것 같다. 다만 이게 혹시나 프라이버시 침해로 이어지는건 아닌지 궁금해진다.
    • 욕설이나 험담 등으로 구성된 이름을 체크해주기도 한단다. 서버 프로그래머의 짐을 덜어주는 소소하지만 좋은 기능인 듯?

    PB의 핵심적인 특장점을 꼽아보라면, 다른 것보다는 아무래도 유연한 결제 방식이 아닐까 한다. 그것은 바로 년단위 갱신이 아니라 월단위로 고정액을 지불할 수 있다는 점인데, 게임의 흥망성쇠가 불분명한 소규모 게임 업체들에게 적합한 방식이 아닐까 한다. 이런 아름다운 모습은 국산 보안 업체들이 꼭 본받았으면 한다. 단점이라면 아무래도 영어라는 것 정도? (이게 생각보다 큰 짐으로 다가오지만;;;)

    ps. 워록 핵으로 검색해보고 대략 좌절했다.

  • 2008-01-19

    Cheat Engine

    cheatenginecokr.png

    이 씁쓸한 장면은 메모리 해킹 툴로 널리 알려진 Cheat Engine에 관해 구글링하다가 발견한 순간의 기록이다. 게임 개발자들에게는 아득하고 슬픈 현실이지만, 여기에는 각종 국산 온라인 게임들을 해킹하는 법, 핵을 사고 판다는 사람들로 북적이고 있었다. 한때 나와 내 동료들이 만들었던 게임의 이름이 올라와 있기에 더더욱 기분이 묘해지는 찰나에, 보다 정확한 정보를 얻기 위해서 회원 가입을 신청하려다가 미묘한 문구로 가득찬 이용 약관을 발견하고 그냥 포기해버렸다.

    역시 뚫고 뚤리는 해킹과 보안은 전문가에게 맡겨두고, 게임 자체에만 집중하는 편이 비용 대비 효율이 좋다는 것은 명백하다. 그러나, 비싸게 주고 산 보안 프로그램들을 bypassing 하려는 노력은 오늘도 계속되고 있다는 점을 간과해서는 안될 것이다. 역시나 어셈블리를 공부해야 하나...

  • 2008-01-14

    SVN path based auth

    svn + apache, 즉 mod_authz_svn 으로 권한 관리를 할 경우, 디자이너나 기획자에게 특정 폴더의 접근 권한을 열어 줘야 할 경우가 종종 있다.

    
    /
    /bin
    /src
    

    이 경우 @designer 들이 소스 코드를 못보게 하면서 그래픽 리소스 폴더에 대해서는 읽고 쓰기를 가능하게 해야 한다면, group.conf 를 어떻게 작성해야 할까?

    
    [/]
    * = rw
    [/src]
    @designer =
    @programmer = rw
    

    Browse Repository 를 하기 위해서는 최상위 경로에 읽기 권한이 있어야 한다는 점을 감안하면 이게 정답일 수 있지만, 소스 폴더가 여러 개일 경우라면 꽤 피곤한 일이 된다. 나도 처음에는 이렇게 밖에 안되는 줄 알고 포기하고 있었으나 오늘 진짜 답을 알게 되었다.

    
    [/bin]
    @designer = rw
    [/]
    @designer =
    @programmer = rw
    

    SVN의 인증 시스템은 선언한 순서대로 검색을 한다는 단순한 원칙에 기반하기 때문에, 예외 사항이 있다면 가장 먼저 선언해버리면 최상위 경로에 대한 권한에 대해서 걱정하지 않아도 된다는 점이다. 다만 Browse Repository 를 통해서 root 에서부터 찾아가는 것이 막혀있기 때문에, 처음 체크아웃을 할 때 정확한 URL을 가르쳐줘야 한다.

    이외에도 다중 프로젝트를 관리할 때 동일한 사용자가 서로 다른 그룹에 속할 경우 미묘한 오류가 생길 수 있다. 아래와 같이 팀별로 자신의 프로젝트만 접근할 수 있도록 하고 싶다고 가정하자.

    
    [groups]
    @admin = admin1
    @dev1 = admin1, user1, user2, ...
    @dev2 = admin1, user3, user4, ...
    [/]
    @admin = rw
    [project1:/]
    @dev1 = rw
    @dev2 =
    [project2:/]
    @dev1 =
    @dev2 = rw
    

    원래의 의도는 관리자는 모든 프로젝트에 접근할 수 있도록 하는 것이었는데, 실제로는 양쪽 모두 접근할수 없게 된다. 이 경우, 관리자를 팀에서 제외하면 사실 문제는 간단해진다 ;)

  • 2007-11-11

    KGC 2007 2nd Day

    see also KGC 2007 1st Day

    아침에 호적등본을 뗀답시고 꾸물럭거리다가 키노트를 놓쳐버렸다.

    Building Gamer communities in the West

    서구 게이머 커뮤니티 관리기법을 설명하는 줄 알고 갔는데, 알고보니 Outspark라는 퍼블리셔의 홍보 세션이었다. 우리 나라에서 사장당할 뻔한 Piesta 라는 MMO를 성공적으로(?) 퍼블리싱해냈고, 또 다른 건수를 찾아서 들어왔다고 봐도 무방할 정도. (수잔 언니 실망입니다.) 그래도 한 두 마디 정도는 건질 수 있었다.

    • 서구 게이머들은 GM과의 교류 자체를 즐기며, 상당히 중요시한다.
    • 서구 게이머들은 게임을 하면서 서핑에서부터 DVD 감상에 이르기까지, 멀티태스킹이 생활화되어 있으므로 윈도우 모드에서의 안정성을 강화해야 한다.
    • 미국 네트워크 특성상, 배포할 때 용량은 500M 이하로 가볍게 하는 것이 좋다.
    • GM들이 게임을 손쉽게 바꿔낼 수 있도록 지원해줘야 한다

    게임 소프트웨어 성능 및 품질 관리

    오늘의 베스트 세션. 강사가 정말 달변이었다. Visual Studio 2008의 성능 측정 관련 기능들에 대한 소개와 함께 재미있는 이야기를 많이 들었다.

    • Active Report 를 만든 회사에서 있었던 사실. 사내 모듈 재사용성을 높이기 위해서, 자신의 컴포넌트가 많이 사용될수록 스톡 옵션을 더 많이 부여하기로 하니, 웬걸 사람들이 다들 재사용될만한 컴포넌트만 찍어내고 있는게 아닌가. 고민을 하다가, 남의 컴포넌트를 많이 사용할수록 스톡 옵션을 부여하는 정책으로 바꾸었더니, 피드백이 강화되고 컴포넌트들이 더욱 빨리 안정화되었다고 한다.
    • XP의 경우 출시전 버그 1개를 수정하는 비용이 500만원이었는데, 출시후에는 개당 1억 정도(기간으로 따지면 7-10일 정도)의 비용이 든다고 한다.

    Xbox Live Arcade에 대해

    역시 어제의 세션과 중복된 내용이 많았다. 마이크로소프트 이러시면 곤란합니다.

    • 라이브 아케이드 게임의 경우 정품 전환율이 18-20% 정도.
    • 게임이 출시되면 보통 한 달 만에 35만번 정도의 다운로드가 발생한다.
    • 첫 두 달안에 35% 정도가 판매되기 때문에, 초기 판매량을 보면 총 수익을 산정해낼 수 잇다.
    • XNA로는 마켓플레이스에서 산 특정 프리미엄 아이템 구매 정보를 검색할 수 없다. 오직 XDK로만 가능하다.

    Massive 를 통한 효과적인 게임 내 광고 사업

    오늘도 어김없이 질문을 하고 선물을 받았다. 360용 위닝일레븐10. 캬하하!

    • 이제 한국에 들어올 준비를 하는 걸로 봐서, 아직 한국내 공식 파트너는 없는 모양이다. 단지 XBOX 360 만으로는 수입이 아쉬웠던 모양이다.
    • 매시브 광고는, 화면의 55%를 10초동안 누적해서 보여주면 1임프레션을 얻는다. 관련 디버깅 UI가 인상적었는데, 우리도 시간 카운트 및 임프레션 카운트를 보여주는 비슷한 넘을 구현해봐야겠다.
    • 70k의 정적 메모리, 15k의 힙 메모리 사용량을 자랑(?)한다. 그럭저럭 가벼운 모양이다.
    • 3-5일 정도만에 통합이 가능하고, 5-8일 정도만에 광고 배치를 완료할 수 있다고 한다. 3회의 QA를 거쳐서 최종 릴리즈가 되는데 이때 각각 3-5일 정도의 기간이 소모된다.
    • 역시나 사용자가 매시브 서버의 포트를 방화벽으로 막아버리면 대책이 없다고 한다. 결국 이 몫은 개발사가 손해를 봐야 된다는 이야기인데, 무턱대고 광고 only 의 비지니스 모델을 채택했다가는 큰 피해를 입을 수도 있을 것 같다. 왜냐하면 광고를 막는 방법이라고 어딘가에 포스팅이 되면 다들 그걸 사용해버리기 때문.
    • 더블 퓨전에 비해 뭐가 낫냐고 물어보니, 아무래도 오랜 서비스를 통한 높은 안정성이라는 이야기를 들었다. 흠. 임프레션 대비 높은 개발사 수익..이면 더 좋겠는데.

    see also KGC 2007 1st Day