• 2008-10-19

    Pareto Principle

    http://shop.advanceweb.com/images/products/2007/GI/GI_home_garden/05188_TroubleMakerMug_GI/05188_TroubleMMg_GI_med.jpg

    80:20의 법칙이라는 이름으로 더욱 잘 알려진 파레토의 법칙을 게임 개발에 적용한 가장 좋은 예는, "20%의 코드가 80%의 부하를 차지하므로 섣부른 최적화는 피하라"는 격언일 것이다. 그리고, 20%의 개발자가 80%의 업무를 처리한다는 일명 개미와 베짱이의 법칙도 유명하다. 그런데 라이프해커님의 최근 글에서 발견한 또다른 재미있는 예가 있는데,
    20%에 불과한 사람들이 회사의 80%의 트러블을 만들어내며 당신과 기타 사람들은  부득불 80%의 시간을 내서 그 문제들을 처리해야 한다.
    라는 내용이었다. 이 글을 보고 그저 고개를 끄덕일 수 없었던 이유는, 최근까지도 이런 문제들로 고생을 해봤기 때문이다. 다만 이번에 큰 조직으로 옮긴 후부터, 20%에 해당하는 개미 부류의 개발자들을 한 명씩 발견하게 되어 과거의 상처가 서서히 아물어가고 있지만, 이 불타는 분노는 최소 10년동안은 지워지지 않을 것 같다. 덕분에 조직의 암적인 존재들은 조기에 제거해야 한다는 좋은 교훈을 배웠다. 그리고, 그들을 보다 빨리 인식하기 위한 눈썰미를 키워야 한다는 다짐도.

    ps. 그렇다고 또 본인은 지금까지 한번도 트러블이 되어본 적이 없었다고 말하기도 뭣하다는게 조금 가슴 아프기도 하다.

  • 2008-10-11

    Google Translate

    갑자기 특정 폴더 트리안에 있는 모든 파일을 번역할 필요가 생겼다.

    회사에 정품 번역기가 있지만, 그냥 다중 파일 번역 기능도 자꾸 크래시가 되는 수준이라서, 결국 파이썬으로 여기 저기서 코드를 긁어붙여 돌려놓고 퇴근해버렸다. 구글 번역기는 POST가 아니라 GET 으로 문장을 받기 때문에, 200자 정도만 번역이 가능하다. (혹자는 500자 혹은 5000바이트라고도 하지만) 어쨌거나 단문 번역기인 셈이다. 고로 성능은 초당 1라인 정도이니 주말 내내 돌려도 될지 말지 의심스러운 상황이었다. (물론 멀티쓰레딩을 해볼까도 싶었으나 귀찮아서..)

    집에 와서 곰곰히 생각해보니 Visual Studio 에서 매크로를 써서 번역해버리면 되지 않을까 하는 생각이 문득 떠올랐다. 정규식 검색으로 번역할 문장을 찾아서 번역하는 걸 매크로에서 반복해버리면, 필요할 때마다 찾아볼 필요가 없으니 말이다.

    구글링해보니 운좋게도 GAPI.NET 이라는 구글 서비스의 .NET 래퍼(C#)가 존재했다. 희미한 기억을 되살려 VB.NET과 연동도 겨우 성공. 본격적으로 매크로를 만드는 일만 남은 셈이었으나... 매크로에서 외부 dll 참조 기능이 지원되지 않는 모양이었다. ( 그냥 ...\Microsoft Visual Studio 9\Common7\IDE\PublicAssemblies 에 복사하면 된다)

    자. 삽질은 계속된다.

  • 2008-08-17

    Apple App Store

    http://filmmakerone.com/blog/wp-content/uploads/2008/03/stevejobspresentation_2.jpg

    애플 앱 스토어(App Store)는 조만간 초대박이 날 거라는 드리밍님의 예측에 강력하게 동의한다. 지금껏 이만큼 소프트웨어 또는 게임 개발자들에게 유리한 플랫폼이 전무했기 때문이다. 하긴 다들 플랫폼을 구축하고 엔드 유저들이 컨텐트를 쌓아나가도록 하자는 이야기를 하지만, 잡스 횽아는 (보나다만 성공을 확신하지는 않았을테지만) 이걸 실제로 해냈다. 그것도 애플과 개발자 양자가 서로 윈윈할 수 있는 매력적인 비지니스 모델을 기반으로 해서.

    http://onten.net/images/blogs/xna_20.jpg

    반면 마이크로소프트의 XNA도 점점 접근성을 높여가고 있지만, 수많은 인디 게임 개발자들을 유혹할만한 어떤 지표($)도 보여준 적이 없다. (물론 자기들이 돈을 많이 벌었다는 이야기는 계속 나오고 있긴 하다.) 구글의 안드로이드에 대해서는 소식이 거의 들리지 않아서 생략.

    자. 그렇다면 애플이 수많은 공룡 통신 기업들 사이에서 점차 모바일 시장을 잠식해들어가고 있는 이 마당에, 한국 게임 개발자 및 게임 개발사는 무엇을 해야 할까? 사실 대박 뉴스가 퍼졌으니 세가를 비롯한 구미/일본의 라이센스 보유 기업들은 자사의 유명 게임을 아이폰으로 포팅해서 판매할 것이다. 단순한 아이디어로도 돈을 많이 벌었다는 소식을 들은 인디 게임 개발자들 역시 마찬가지. 즉 레드 오션의 조짐이 서서히 번지고 있다는 이야기인데...

    뭐 정답은 뻔하다. 오래된 회사들은 하루 빨리 과거의 명작들을 포팅하면 되고, 그렇지 않은 회사들은 오락실 게임들에서 아이디어를 추려내서 온라인으로 옮기는 대신, 아이폰으로 이사를 가면 되겠다. 다만 아이폰의 인터페이스에 걸맞게 게임을 적당히 변화시켜야 한다는 점은 모두 같으니, 어떻게 보면 이건 시간 싸움이 되지 않겠나 싶다.

    위 동영상처럼 화면을 기울여서 운전하는 수준의 게임은 이미 쌓여 있기 때문에, 레이싱은 좀 힘든 싸움이 되겠고.. 퍼즐류는 창작이 아니면 라이센스를 갖고 있으면 얼른 시작하면 될 듯. (그러나 비주얼드나 주마를 따라가려면 꽤 힘들꺼다) 슈팅은 터치 화면으로 총 쏘기가 힘들고, FPS는 조준이 힘들고...

    정답은 스포츠 또는 RPG. iBaldur's Gate 는 힘들겠지만 iWizardary 는 아무래도 될 거 같다!

  • 2008-08-16

    Stay Hungry, Stay Foolish

    http://boxcatstudio.files.wordpress.com/2009/07/stay_hungry.jpg

    좀 철이 지난 이야기이지만, 잡스 횽아의 스탠포드 연설문에서 단어들을 추출해서 태그 구름처럼 만들어주는 Wordle 이미지이다. 이 연설문이 너무 감동적이어서 PSP에 인코딩해서 듣고 다녔고, 서점에서 우연히 영어 공부용 책으로 나온 걸 찾아서 한참동안 읽기도 했다. 반쯤은 자기 자랑이지만 애플의 주가 총액이 구글을 넘어선 이 마당에 이 정도의 자랑 정도는 봐줄만 하다. 고화질 버전은 아이튠즈에서 다운받을 수 있다 :)

    [youtube=http://www.youtube.com/watch?v=UF8uR6Z6KLc&hl=ko&fs=1]

  • 2008-08-13

    DefaultKeyBinding.dict

    OSX 에서 윈도우와 같은 방향키, PgUp/Down 등의 키조합을 사용하려면 ~/Library/KeyBindings/DefaultKeyBinding.dict파일을 아래와 같이 만든 후, 키바인딩을 적용하려는 어플리케이션을 재시작하면 된다.

    {
        "$\Uf700" = "moveUpAndModifySelection:";
        "$\Uf701" = "moveDownAndModifySelection:";
        "$\Uf702" = "moveLeftAndModifySelection:";
        "$\Uf703" = "moveRightAndModifySelection:";
        "$\Uf729" = "moveToBeginningOfLineAndModifySelection:";
        "$\Uf72b" = "moveToEndOfLineAndModifySelection:";
        "^$\Uf702" = "moveWordBackwardAndModifySelection:";
        "^$\Uf703" = "moveWordRightAndModifySelection:";
        "^$\Uf729" = "moveToBeginningOfDocumentAndModifySelection:";
        "^$\Uf72b" = "moveToEndOfDocumentAndModifySelection:";
        "^\Uf702" = "moveWordLeft:";
        "^\Uf703" = "moveWordRight:";
        "^\Uf728" = "deleteWordForward:";
        "^\Uf729" = "moveToBeginningOfDocument:";
        "^\Uf72b" = "moveToEndOfDocument:";
        "\Uf729" = "moveToBeginningOfLine:";
        "\Uf72b" = "moveToEndOfLine:";
        "\Uf72c" = "pageUp:";
        "\Uf72d" = "pageDown:";
    }
    

    Ctrl+D 같은 손에 익은 키조합들을 적용하려면 아래의 문서들을 참고하기 바란다.