플레이어라고 불리는 참가자가 목표달성을 위해서 게임 토큰을 통해 자원관리를 위한 의사결정을 하는 것
- Greg Costikyan
http://fungry.egloos.com/602815
(주: 이번 블로깅은 아쉽게도 사진이 없습니다)
한동안 프로젝트를 쉬었습니다.
머리 한구석에는 늘 진행형이지만 먹고사는게 바쁘고 아이디어도 쉽게 나오지 않아서죠.
모처럼 국가별 특징을 주제로 했는데 실제로 플레이를 해보니 국가별 메리트가 없더군요.
말하자면 워크래프트1와 같은 느낌이랄까.. (인간과 오크가 생김새만 다른)
한편으로는 부르마블의 한바퀴도는 느낌이 좀 단순해서 (물론 단순해서 좋은 점이 있습니다)
어떻게든 지도의 맛, 국가가 위치한 지형정보를 살려보고 싶었습니다.
그래서 고민하던중에 다른 보드게임 제작자의 아이디어에 영감을 받아 연구를 해서 새로운 룰을 추가했습니다.
(아이디어를 공유하면 좋은 점이로군요. 나쁜 점은 뭘까요? ㅎㅎ)
바로 운송수단의 부활입니다.
프로젝트초기에 운송비라는 개념을 도입해서 제약을 주고자 했었는데,
플레이어들이 할일이 많아지고 (그것도 노가다성으로) 게임진행을 별의미없이 방해하는 요소가 됐었습니다.
그래서 과감히 제거했었는데 운송수단을 다시 추가한 겁니다.
힌트를 드리자면 항로, 육로, 해로로 나누어 봤습니다.
창작성을 훼손할까봐 다른 보드게임에 대해서는 가급적 알려고 하지 않았습니다만 그렇지 않더군요.
생각지도 않게 많은 도움이 되었습니다. 반성하고 공부를 많이 해야할것 같습니다.
운송수단은 게임진행을 방해하지 않으면서도 재미없게 단순한 현 플레이에 다양성과 깊이를 더할 수 있도록 좀더 연구를 할 예정입니다.
아직은 아이디어 단계지만 통역/언어 개념도 넣어볼까하는 욕심이 있습니다. (이건 필요하다고 생가되면 나중에)
잘되서 전략성이 배가되면 좋겠군요.
다음엔 플레이사진과 함께 돌아오길 바라며...









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나 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 이 네자리 입니다.

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 ![]() | ||
| 테마 | 태그 | 가든 | 보낸트랙백 | 보낸핑백 | 블로거뉴스 |
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월 | ||||||||||||||


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

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

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






최근 덧글