게임이란 이랴이랴 게임개발

게임이란 예술의 한 형태로,
플레이어라고 불리는 참가자가 목표달성을 위해서 게임 토큰을 통해 자원관리를 위한 의사결정을 하는 것

- Greg Costikyan

http://fungry.egloos.com/602815

Project WT 일곱번째 Project WT

(주: 이번 블로깅은 아쉽게도 사진이 없습니다)

한동안 프로젝트를 쉬었습니다.
머리 한구석에는 늘 진행형이지만 먹고사는게 바쁘고 아이디어도 쉽게 나오지 않아서죠.

모처럼 국가별 특징을 주제로 했는데 실제로 플레이를 해보니 국가별 메리트가 없더군요.
말하자면 워크래프트1와 같은 느낌이랄까.. (인간과 오크가 생김새만 다른)

한편으로는 부르마블의 한바퀴도는 느낌이 좀 단순해서 (물론 단순해서 좋은 점이 있습니다)
어떻게든 지도의 맛, 국가가 위치한 지형정보를 살려보고 싶었습니다.

그래서 고민하던중에 다른 보드게임 제작자의 아이디어에 영감을 받아 연구를 해서 새로운 룰을 추가했습니다.
(아이디어를 공유하면 좋은 점이로군요. 나쁜 점은 뭘까요? ㅎㅎ)

바로 운송수단의 부활입니다.
프로젝트초기에 운송비라는 개념을 도입해서 제약을 주고자 했었는데,
플레이어들이 할일이 많아지고 (그것도 노가다성으로) 게임진행을 별의미없이 방해하는 요소가 됐었습니다.
그래서 과감히 제거했었는데 운송수단을 다시 추가한 겁니다.

힌트를 드리자면 항로, 육로, 해로로 나누어 봤습니다.
창작성을 훼손할까봐 다른 보드게임에 대해서는 가급적 알려고 하지 않았습니다만 그렇지 않더군요.
생각지도 않게 많은 도움이 되었습니다. 반성하고 공부를 많이 해야할것 같습니다.

운송수단은 게임진행을 방해하지 않으면서도 재미없게 단순한 현 플레이에 다양성과 깊이를 더할 수 있도록 좀더 연구를 할 예정입니다.
아직은 아이디어 단계지만 통역/언어 개념도 넣어볼까하는 욕심이 있습니다. (이건 필요하다고 생가되면 나중에)

잘되서 전략성이 배가되면 좋겠군요.
다음엔 플레이사진과 함께 돌아오길 바라며...


듣기중심의 중국어, 프랑스어 공부 쭈뼛쭈뼛 딴나라말

영어를 좀 공부하다 보니까 외국어를 배울때 듣기를 중점적으로 하는게 꽤나 효과적이라는걸 깨달았습니다.
요즘은 mp3가 보통이니 출퇴근길을 비롯한 짜투리시간을 활용하기도 쉽지요.
그래서 제가 고른 책들입니다.

우선 프랑스어
 















[프랑스어 첫걸음]을 우선 공부했었습니다.
프랑스어에 대한 기본지식이 전무했으나 회화와 문법이 한권안에 다 들어있어서 좋았습니다.
출판사 사이트에서 무료 동영상강의도 해줍니다. (가입필요)

이걸로 어느정도 프랑스어에 익숙해져서 다음단계로 나아가려는데 두둥!
서점에는 첫걸음, 초짜, 기초.. 뭐 그런책들만 잔뜩입니다.
그래도 잘 찾아보니 듣기를 잘 하면서 내용도 약간더 어려운 나머지 두책을 찾았습니다.
두권을 동시에 공부하니 시너지 효과가 크더군요.

세권 모두 mp3가 들어있습니다.
듣기를 하면서 좋은점은 단어를 따로 100번씩 공책에 쓰면서 안외워도 잘 외워진다는 것과,
실제로 발음을 확인할 수 있어서 회화에 대한 준비도 된다는 겁니다.
프랑스어는 뒷쪽 알파벳을 안읽는 경우가 많아 발음을 정확히 알아두는것이 중요합니다.

[초급프랑스어]는 이후에 [중급프랑스어] 테크를 탈 예정이고,
[귀가열리면 ..]은 이달에 다음단계의 신간이 나올 예정이라고 하네요.


다음은 중국어.















사실 전 중국어공부는 고등학교때부터 해왔습니다.
중간에 쉬긴 했는데 나름 내공이 있지요.
하지만 회화를 따로 한적이 없어서 말도 잘 못하고 단어도 역시 잘 기억나지 않습니다.
그래서 이번에 회화를 기초부터 다시 제대로 공부하자는 생각으로 교재를 골랐습니다.

당연히 1,2,3 권이 난이도가 다릅니다.
3권에 [회화]라는 말이 붙은건 [회화]가 빠진 버전이 개정판입니다.
개정판에는 CD가 붙어있고 (사이트에서 다운로드 가능합니다) 3권이 아직 개정판이 안나왔습니다.
K문고에 물어보니 재고가 많아서 더 팔릴때까지 3권은 개정판을 기다려야 할듯하네요.
내용을 보니 개정판과 기존것은 차이가 거의 없었습니다.

책의 특징은 챕터당 순서대로 공부하면 좋고, 대신 한국어로 해석해주는 부분이 좀 약하다는 겁니다.
쌩기초분들이 본다면 약간 어려울수도 있겠네요.
저는 회화쪽, 특히 듣기에 집중할 목적으로 구입한거라서 잘 맞았습니다.



제가 말씀드린 책들은 소개 목적으로 얘기하는거고,
서점에 직접 가셔서 내용을 훑어본뒤에 자기에게 맞겠다 싶다면 구입해보시기 바랍니다.
외국어공부는 방법이 참 많지만 자기에게 맞아서 어느정도 선까지 쭈욱 할수있는게 젤 중요하더라고요.

스케일폼 4.0 을 위한, 액션스크립트 3.0 을 시작하는 책 이랴이랴 게임개발
















스케일폼(scaleform) 4.0 부터는 드디어 액션스크립트 3.0 를 쓸수 있습니다.
as 3.0 을 공부하기에 적당한 시기가 온 것 같군요.
그래서 구입한 세권입니다.

as 3.0 은 구조가 깔끔하게 정리되었다고 해서 살짝 기대했었는데 [... 시작가이드]책을 절반정도 읽은 이시점에서 그렇다고 말씀드릴수 있겠습니다.
저는 게임프로그래머이면서 액션스크립트도 어느정도 가능한 케이스입니다.
그런면에서 [... 시작가이드]책은 프로그래머스러운 익숙한 내용/구성이었습니다.

나머지 두권은 실전테크닉을 알아보기 위한 목적으로 구입했습니다.
[아담...]책이 좀더 테크닉적이고,
[디자이너를 위한...]책은 내용이 쉬워보이는데 쉬운만큼 기초부분을 더욱 탄탄히 해줄거라고 생각해서 구입했습니다.

서점에 가면 신간들이라 책이 많으니 한번 훑어보고 자기에게 맞는 책을 사서 읽어보고 공부하면 도움이 될거라 생각합니다.
as 2.0 을 다뤄보신 분이라면 더욱더 쉽게 읽을 수 있겠군요.



p.s.
읽어보니 [아담...]책은 하드코어 프로그래머가 아닌 분들을 대상으로 한듯하군요. 그리고 as 2.0 과도 비교를 많이 하네요.
다른 분야의 분들이 어떤식으로 접근하는지, 또한 다른 차원의 테크닉을 엿볼 수 있었습니다.

STL을 맛보자. vector, list, map C++ 공방/공부방

stl 을 아주조금 공부하셨거나 공부하시려는 분들을 위한 맛보기 포스팅입니다.
공부를 했는데 실제로 코드를 짜려니 어떻게 쓰는지 도통 모르겠다, 하시면 이 포스팅이 도움이 되겠지요.

일단 코드를 보시죠.

#include "stdafx.h"
#include <stdio.h>
#include <vector>
#include <list>
#include <map>
#include <algorithm>

int _tmain(int argc, _TCHAR* argv[])
{
    {
        std::vector<int> a;

        for( int i = 0; i < 100; i++ )
            a.push_back(i);

        printf("a:%d\n", a[4]);
    }
    {
        std::list<int> b;

        for( int i = 0; i < 100; i++ )
            b.push_back(i);

        b.insert(find(b.begin(), b.end(), 1), 101);
        b.remove(1); // 이행을 주석처리하면?


        std::list<int>::iterator bi = b.begin();
        int ba[3];
        ba[0] = (*bi);
        bi++;
        ba[1] = (*bi);
        bi++;
        ba[2] = (*bi);
        bi++;
        printf("b0:%d, b1:%d, b2:%d\n", ba[0], ba[1], ba[2]);
    }
    {
        //typedef std::map<int, char*> charList;
        //typedef charList::iterator  charIter;

        std::map<int, char*> c;
        char* x = c[1]; // 0, null 을 반환
        c[4] = "First";
        printf("x:%s, c0:%s\n", x, c[1]);

        c[1] = "Second"; // map->first 값으로 정렬
        typedef std::map<int, char*>::iterator MI;
        int i = 0;
        for( MI ci = c.begin(); ci != c.end(); ci++, i++ )
        {
            printf("c%d: c[%d] = %s\n", i, ci->first, ci->second);
        }

        const char* m = "Third";
        //c.insert( c.begin(), std::make_pair(2, "Third") );
        //c.insert( charList::value_type( 2, "Third" ) );
        c.insert( std::map<int, char*>::value_type( 2, "Third" ) );


        typedef std::map<int, char*>::iterator MI;
        i = 0;
        for( MI ci = c.begin(); ci != c.end(); ci++, i++ )
        {
            printf("c%d: c[%d] = %s\n", i, ci->first, ci->second);
        }
    }


    return 0;
}


실행화면입니다.











vector 는 배열처럼 쓸수도 있습니다.

iterator 의 선언이 길어서 한눈에 안들어오는데, 익숙해집시다.
typedef 로 짧게 재정의 하면 좋겠죠.

map 은 key 값에 따라 자동으로 정렬되는 특징이 있습니다.
make_pair 와 value_type 에 차이에 대해서는 추후에 따로 포스팅할 예정입니다. (링크도 나중에 여기에 걸지요)

짧은 코드이니 실행해 보시고 조금씩 고쳐보기도 합시다.


sizeof 정리 C++ 공방/공부방

sizeof() 에 대한건 다들 알고 계시지요?
아마 C나 C++을 공부할때 빼놓지 않았다면 다들 알고 계실텐데요.
이왕 하는김에 이것저것 썰을 풀어놓겠습니다.

코드를 먼저 보시죠.

#include "stdafx.h"
#include <iostream>


using std::cout;
using std::endl;


typedef unsigned long       DWORD;
typedef int                        BOOL;
typedef unsigned char       BYTE;
typedef unsigned short      WORD;
typedef unsigned int          UINT;


int _tmain(int argc, _TCHAR* argv[])
{
    cout << "bool : " << sizeof(bool) << endl;  // bool : 1
    cout << "char : " << sizeof(char) << endl;  // char : 1 -> -127 ~ 128
    cout << "int : " << sizeof(int) << endl;  // int : 4
    cout << "long : " << sizeof(long) << endl;  // long : 4
    cout << "float : " << sizeof(float) << endl; // float : 4
    cout << "double : " << sizeof(double) << endl << endl; // double : 8


    // 윈도우의 추가 타입(정수형)
    cout << "BOOL : " << sizeof(BOOL) << endl;  // BOOL : 4
    cout << "BYTE : " << sizeof(BYTE) << endl;  // BYTE : 1byte -> 256 0xff 8bit 01010101
    cout << "WORD : " << sizeof(WORD) << endl;  // WORD : 2 -> 65,536 0xffff
    cout << "UINT : " << sizeof(UINT) << endl;  // UINT : 4
    cout << "DWORD : " << sizeof(DWORD) << endl << endl; // DWORD : 4 -> 42억(4,294,967,196) 0xffffffff
    // BYTE, WORD, DWORD 를 쓰자, BOOL 대신 bool 을 쓰자


    cout << "unsigned char : " << sizeof(unsigned char) << endl; // unsigned char : 1
    cout << "unsigned int : " << sizeof(unsigned int) << endl;  // unsigned int : 4
    cout << "unsigned long : " << sizeof(unsigned long) << endl; // unsigned long : 4


    //cout << "int64 : " << sizeof(__int64) << endl; // int64 : 8

    return 0;
}

윈도우에서나 현업에서는 원래 변수명을 typedef 를 써서 쓰기편한 타입명으로 대체하는 경우가 있습니다.
위에서는 DWORD 나 UINT 같은게 그런건데요.
나중에 첨 보더라도 당황하지 마시기 바랍니다. 익숙해지면 괜찮아요.

각 변수타입이 몇 bytes 인지 혹은 10진수로 환산하면 몇에서 몇까지인지 주석으로 달아놓았습니다.
주의할것은 각 환경에 따라 주석값과 일치할수도 아닐수도 있으니 실제로 코드를 실행해보시기 바랍니다.

1byte 는 8bit 이고 2의 8제곱 unsigned 라면 값의 범위는 0~255 이 됩니다.
int 와 unsigned int 가 어떻게 다른지는 공부하세요.
4bytes 는 unsigned 의 경우에 42억을 살짝 넘네요.

팁을 하나드리자면 캐릭터의 소지금을 unsigned int형으로 선언하고 쓴다면 42억이 조금 넘어갈때 값이 잘려서 이상하게 될수있습니다.
만약 게임기획상 소지금이 42억보다 커진다면 __int64 로 선언해야겠지요.
사실 이런건 기획자의 센스와 개발자들의 경험이 필요한 대목입니다.

마지막으로 0xffff 는 16진수 표기법인데 기억해두시기 바랍니다.
2진수로 바꾸면 1111 1111 1111 1111 이 되죠.
f 하나당 1 이 네자리 입니다.


[다시 돌아온] 2011년 내 이글루 결산

2011 내 이글루 결산

1년동안 작성한 술취한아저씨님의 결산내역입니다. 이글루에 포스팅하여 공유해보세요.
본문이 500px 이하인 스킨은 지원하지 않아 포스트가 잘려보일 수 있습니다.
결산기간 : 2011년 12월 26일~ 2012년 1월 9일

포스트[23]

 1 4 2 1 4 1 2 3 5  
 1월2월3월4월5월6월7월8월9월10월11월12월 

덧글[10]

 1 1 8  
 1월2월3월4월5월6월7월8월9월10월11월12월 

트랙백[1]

 1 0 0 0 0 0 0 0 0 0 0 0  
 1월2월3월4월5월6월7월8월9월10월11월12월 

핑백[8]

 0 0 0 0 0 8 0 0 0 0 0 0  
 1월2월3월4월5월6월7월8월9월10월11월12월 

내가 보낸 글 통계[8]

 0 0 0 0 8 0  
 테마태그가든보낸트랙백보낸핑백블로거뉴스 

포스트 수 비교

 (2010년 포스트 : 36개)
20102010  20112011
 3 1 1 4 3 2 1 1 1 1 4 2 1 6 2 6 3 8 5 3 1  
 1월2월3월4월5월6월7월8월9월10월11월12월 

명예의 전당

1년동안 작성한 글

200자 원고지 기준으로 140장 분량이며, 원고 두께는 약 1cm 입니다.
1년 동안의 글을 문고판 시리즈로 낸다면 1권까지 낼 수 있겠네요. 술취한아저씨님은 올 한해 이글루스에서 28,652번째로 게시물을 가장 많이 작성하셨네요.

자주 등록한 태그&대표글 TOP5

자주 등록한 태그가 없습니다.
내년에는 다양하고 재미있는 태그를 사용해 보세요.

자주 발행한 밸리&대표글 TOP5

자주 발행한 밸리가 없습니다.
내년에는 여러 밸리로 회원님의 글을 발행해 보세요.
(☞ 밸리 도움말 가기)

내 이글루 인기글

  1. 가장 많이 읽힌 글은 화씨온도(F) 쉽게 읽는... 입니다.
  2. 가장 대화가 활발했던 글은 덧글달기를 잠시 열어둡니다 입니다.
  3. (덧글6개, 트랙백0개, 핑백0개)

내 이글루 활동 TOP5

  1. 1위:Stuck (3회)
  2. 2위:cagetu (1회)
내 이글루결산

포스트 수는 11,12월에 사정이 있었던걸 감안하면 예년 수준이군요.
가장 많이 읽힌 글이 화씨온도에 대한 고찰(?)이라는게 의외였습니다.

개인적으로는 2012년은 틈틈히 [C++ 공방/공부방] 카테고리에 글을 많이 올리려고 합니다.
개인적으로 공부하면서 테스트한 코드들이 많은데 어쩌면 이런 하찮은(?)것들도 누군가에겐 나름 도움이 되겠지요.

블로깅이 즐겁긴 하지만 평소 컴터앞에 늘 앉아있는 직업이라 따로 별도의 시간을 내서 또 컴터앞에서 글을 쓰는게 부담스럽긴 합니다.
현재로선 기분전환용으로 블로깅을 하는 느낌이어서 아마 앞으로도 이런 추세는 계속되지 않을까 하네요.

주의) 요즘 외국어 공부가 너무 재미있어서 가뜩이나 적은 블로깅이 더 줄어들수도 있습니다.

프랑스어로 간단하게 자기소개 해봅니다 쭈뼛쭈뼛 딴나라말

Je m'appelle BJ.
Je suis coréen et j'habite à Sèoul, en Corée.
Je suis programmeur de jeux d'ordinateur.
Je parle coréen, anglais et japonais. J'étudie chinois et français.
J'aime le foot et le tennis.

저의 이름은 BJ 입니다.
한국사람(남자)이고 대한민국 서울에 삽니다..
직업은 컴퓨터게임 프로그래머입니다.
여러가지 외국어를 할 줄 알고 공부중입니다.
축구와 테니스를 좋아합니다.

책구입 111011 이랴이랴 게임개발














오랫만에 책들을 잔뜩 샀습니다.
그동안 영어공부관련 책들만 샀었는데요. (아 삼국지는 제외)
세권다 좋은 책들이라는 평가입니다. 일단 읽어봐야겠지만.
근데 언제읽는다...

덧글달기를 잠시 열어둡니다

관리를 하기싫어해서 덧글은 로그인한 분들만 허용하는데요.

개인적으로 활동하고 있는 사이트의 이벤트를 위해 잠시 덧글달기를 자유로 합니다.

적당히 코멘트 남겨주세요. 나중에 지울지도 모르지만 ㅎㅎ

1 2 3 4 5 6 7 8 9 10 다음