« September 2004 | Main | November 2004 »

October 28, 2004

바람에게 부탁해 - Forte Escape

Forte Escape


바람에게 부탁해 - Forte Escape



듣기
| 듣기 - 최근 음악들

좋다. ~ >_<

 DJMAX를 하다가 만만한 하드라서 몇번 도전했드만 음악이 좋아서 이거,
환타지 게임 배경음악으로도 완벽하다! 더불어 노래를 부른 miya님의 목소리도 최고!

링크:
djmax 수록곡 정보: http://smakiri.nalove.org/djmax.htm
forte escape님의 밀림 페이지: http://chl1052.millim.com/?xc=2004&tid=chl1052 - 여러가지 다른 음악을 들을 수 있다.
목소리의 주인공 miya님의 싸이홈피: http://cyworld.nate.com/miya1892 현재 작업하시는 밴드의 데모곡을 들을수 있다.

3차원 임의 형상 제작기

물질변화기가 있었다. 하브가 유난히 극적인 포즈를 취하면서 화면을 누르자 새 미디어 그림문자가 나타났다. 하얀색 동그라미 속에 녹색의 얇은 부채꼴이 나타났다. 부채꼴이 점점 더 커지면서 음악이 흘러나왔다. 잠시 기다려야 할 떄 나오던 음악이었다.
...
"우리 공급회선이 싸구려니까 그렇지. 1초에 몇 그램밖에는 안 온단 말야. 딱한 노릇이지."
...
하브는 랙티브를 잠시 멈추고 부엌으로 어슬렁거리며 걸어와서 문이 활짝 열리는 모양의 미디어 그림문자를 눌렀다. 물질 변화기에서 쉬익 하는 소리가 크게 들렸다.
"진공이 빠지는 소리야.":
소리가 멈추고 문이 펑하고 열렸다. 물질 변환기 안에는 깔끔하게 접힌 넬의 새 침대 매트가 들어 있었다.

"다이아몬드 시대 by 닐 스티븐슨"

 현존가능한 기술은 3차원데이터를 가지고 한가지 물질을 이용해서 (석고같은) 3d모양의 딱딱한 물체를 주조가능하다. 방금 뉴스를 통해 우리나라에서도 개발했다고 했다. 위 텍스트는 '다이아몬드 시대'라는 책에 나오는 물질변환기를 설명한 내용이다. 물질변환기라는것은 전기를 가정에서 공급받듯이 물질회선에서 원자나 분자를 공급받아서 그 물질을 이용하여 네트웍이나 미리 정의된 3d데이터(세부 물질데이터가 포함된)를 이용하여 3차원 물질을 제조 하는 기계다. 이에 대한 아이디어는 이미 '라마와의 랑데뷰'에서 본 기억이 난다. 그 이전에도 이미 이런 상상을 한 사람들이 있었을 것이다. 어떻게 구현하면 될까? 3d오브젝트데이터와 구체적인 물질에 대한 상세한 정보. 분자와 원자단위의 구성에 대한 지루하고 긴 수식이 될거 같다. 그것을 이용하여 원자혹은 분자 저장고에서 해당 물체의 부분에 맞는 원자와 분자를 공급받아 실시간으로 결합해야겠다. 가능할까...? 컵이나, 그릇, 빵, 약같은 거의 단일원자로 이루어진 물체들은 수십년안에 가능할 지도 모르겠다. 복잡한 물건들은 어떻게 될까...?

 예를들어, pda, 전자기기부터 시작하여 피자-_ - , 좀더 오버를 하면 식물, 동물, 개, 고양이, 사람! 사람이라고 해도 어차피 물질로 이루어진 개체가 아닌가. 이는 텔레포트하고도 관련이 있겠다. 텔레포트 소스에서 3d스캐닝을 하고 물질검색을 한후 원하는 위치로 데이터를 전송하여 다시 인체조직을 생성. 그러면 원래 있던 사람은 죽여야 하는건가. 아니면 사람을 원자단위로 분해하여(이것이 죽이는것이 되는걸까) 회선을 통해 전송한후 재구성. 가능할까?

 좀 먼훗날의 이야기긴 하겠지만, 내가 늙어죽기전에 상당한 진척을 보일것이 틀림없다.

 tv에서 '3차원 임의 형상 제작기'에 대한 뉴스를 접하고 낙서를 해보았다.

October 26, 2004

인터뷰, about 수능

수능성적표

#1

 시험을 보고 집에 오는길에 극동방송-_ -에서 나왔다는 사람이 인터뷰를 요청하였다. 집에 가는길이 무료하던 참이라 흔쾌히 승락했다.

인터뷰어 Q: (녹음기를 켠다) 수능 언제 보시는지 알고 계세요?
나 A: (0.5초만에) 모름니다!

Q: 주변의 친구나 친척이나 동생분중에 수능 보시는분 계세요?
A: (0.35초만에) 없습니다!

Q: -_ -; 학생이시죠?
A: (0.01초만에) 네

Q: 수능 언제 보셨나요?
A: ....... 으음.... 언제냐면... 그러니까..... 8년전입니다!

Q: -_-;; 아 그때도 수능봤나요? .. 수능 보셨을때 특별히 기억나는 특이사항이 없나요?
A: 처음으로 수학 30점을 넘어서 기뻤습니다. (표정이 조금 이상해져서 첨언) 그때 수학 만점이 40점이었습니다.-_ -;

Q: 곧 시험을 치르는 수능볼 학생들에게 조언해주고 싶으신게 있으시다면?
A: (0.75초만에) 국영수를 중싱므로 끝까지 최선을 다하라고 말해주고 싶습니다.

인터뷰어: -_-감사합니다...([REW]버튼을 누른다. -_ -;)

수능을 볼 후배들에게 도움이 되는 정보를 준거 같아서 집에 오는 길은 뿌듯했다.

#2

DJMAX 참 재밌다. 현재 레벨6-7정도까지 클리어 가능! 그런데 매번 할때마다 스스로 레벨업이 되어가는걸 느끼니 참 뿌듯하다. 그런데 하면 할수록 느끼지면 가끔 내가 그 노트들을 어떻게 클리어 했는지 의문스럽다. -_ -;

그런데 이 게임이 영등위(영상물등급위원회) 판정 결과 18세 이용가로 났단다. -_ - 당최. 아니 리듬게임인데?-_ -; 영등위 등급위원들 이거 심의할때 리듬타다 오르가즘 느낀거야? 그런거야? 음 이거 흥미진진한데...?

October 23, 2004

본성과 양육, 인도기행

본성과 양육 by 매트 리들리

 몇일전 비교적 큰 서점에 끌려갔다가, 매트 리들리의 새책을 발견하고 기쁨 마음에 샀다. 이 사람의 책을 접하게된 건 지극히 자극적인(?) 내용의 제목 "게놈"이었다. 읽고서 참 글 잘쓴다는 생각이 들어 그가 쓴 다른 책도 모두 보게 되었다. "이타적 유전자" (사실 원제는 the origins of virtue 이다.) , "붉은 여왕". 사실 "붉은 여왕"의 경우는, 반쯤 읽었다가 회사 근처 atm기계에 두고 나왔는데 한시간쯤 있다 갔더니 사라져버려서 완독한건 아니다. 마치 스타크래프트 배틀 체스트를 산후 회사에서 분실한 후, 스타배틀넷이 하고 싶어도 도저히 다시 구입할 염두가 안나는 것처럼, 역시 다시 구입해서 읽을 마음이 전혀 들지 않았다.

 게놈이나 작가의 다른 책을 보면 상당히 팝콘 과학 서적이다. 읽기 쉽고 대중적으로 썼다. 이 책 역시 마찬 가지라고 본다. 다 읽으면 간단한 책리뷰를 쓸지도 모르겠다.

인도기행 by 법정

 이전에는 관심을 갖지 않았던 주제. 요즘은 여행과 관련된 책들에 눈이 많이 가게 된다. 그후 요즘 자주 드는 생각은, 어떻게 하면 자유롭게 여행하며 입에 풀칠하고 살까.-_ -; 아무튼, 나라는 인간은 지극히 과학적이고 물리적이여서 (과학과 물리에 뛰어나다는 소리가 아니라) 정신적이고 뜬구름 잡는 철학적인 주제에 약하고 그런 내용의 책을 읽는 것도 지극히 싫어한다. 심하면 책을 읽다가 화가 나기도 해서 책을 영원히 봉인하기도 한다. 이 인도기행을 처음 본건 상당히 오래 되었다. 하지만, 아무래도 스님이 쓰신 글이라 기행기지만 형이상학적이고 철학적으로 쓰여진 글이라 생각해서 사지 않고 있다가, 이날 서점에서 조금 들쳐보니 생각보다 기행에 충실해 보여서 샀다. -하지만 책을 읽다가 좀 화났다.- -_ -;

 이 책을 읽어보니, 인도에서 내가 가보지 않은 불교와 관련된 지역을 안가본것에 대해 후회를 했다. 처음 설법을 했던 사르나트와 근처인 바라나시 정도외에 왜 안가봤을까, 답은 귀찮아서 지만, 최근 '실크로드 현장법사의 인도여행'과 이 책을 보니 그곳에 안가본걸 100번 후회한다. 담에는 꼭 가야지.

ps 시험을 봤다. 오랫만에 볼펜으로 상당히 많은량의 필기를 했더니 손이 저려온다. -_ -;

October 21, 2004

Halo, 헤일로: cleared!

halo logo

halo - 무리, 발광체 주위에 동그렇게 나는 빛의 띠.

광륜(光輪) ·헤일로라고도 한다. 태양 주위에 나타나는 것을 햇무리, 달 주위에 나타나는 것을 달무리라고 하는데, 이 무리는 빛이 구름의 얼음 조각을 통과할 때 회절하여 나타나는 현상이므로 엷은 권층운이 끼어 있을 때 나타난다. 무리의 지름은 보통 지상에서 쳐다보았을 때 시각(視角)이 약 22 °이며, 내부는 외부보다 약간 어둡게 보인다.

무리의 빛깔은 넓을 때는 희게 보이지만 짙을 때는 안쪽은 붉은색, 바깥쪽은 노란색을 띤다. 매우 드물게는 시각이 46 °가 되는 무리도 나타나는데, 이것은 빛이 통과하는 얼음조각의 면이 직각으로 되어 있을 때 나타난다. 또한, 태양이나 달이 지평선에서 40 ° 이상 떠올라와 있을 때에는 동그란 무리가 나타나지만, 그 이하의 고도에 떠 있을 때에는 약간 타원형이 된다. 이 현상후에는 대개 비가 내리므로, 비의 전조(前兆)로 민간에 알려져 있다.

 게임 헤일로[halo]에서의 헤일로는, 뜻 그대로가 아니라 일반 SF나 실제 과학사에서 발견되는 새로운 물체를 기존의 비슷한 물체의 이름을 차용하여 나타내는데 쓰인 용어다. 헤일로에서 '헤일로'는 동그란 도너츠 모양의 거대한 인위적으로 꾸며진 행성을 나타낸다. 이러한 SF적인 배경시나리오는 처음 게임내 히어로 '마스터 치프'가 이 '헤일로 시스템'에 처음 발디뎠을때 하늘을 볼때 느껴지는 일종의 경외감을 자아내게 만든다. O 형의 헤일로 구조체안에서 하늘을 바라보면, 저 멀리 지평선이 펼쳐지고 조금더 가면 그 지평선이 무지개처럼, 하늘위로 반대편 지평선과 이어져있다. 너무나 멋진 배경 시나리오다. SF 소설 '라마와의 랑데뷰'를 읽었을때의 기분이랄까.

 그렇게 훌륭한 배경뒤로 일반적인 FPS 게임의 시나리오대로 게임은 흘러간다. 싱글 게임 시나리오는 약간 뻔한 구성은 있지만 (전형적인 영웅물 SF 시나리오) 나름대로 깔끔한 한편의 SF영화와 같이 이루어져있다. 게임을 클리어한 다음의 느낌역시 그렇다. 그런데 이 게임을 플레이하기 너무 예전부터 이 게임에 대한 극찬을 들어서일까, 그리고 출시후 거의 1년반후에 플레이를 한이유도 있겠지만 기대보다는 그저 그랬다. 그래도 상당한 수준급의 게임임은 분명하다. 플레이 시간은 거의 12시간 정도.

 게임내의 특이할만한 시스템은, 일단 [노멀]난이도에서는 누구나 쉽게 클리어할만한 난이도다. 주인공의 실드가 워낙 훌륭하기 때문에, 게임 플레이중 떨어져 죽은것-_ -을 제외하면 거의 죽지않았다. 게임 시스템적인 면에서는 5가지 탈것을 탈수 있었던게 괜찮았고, 특히 밴쉬라는 비행기체로 상대방 밴쉬를 추격하는건 괜찮았는데 게임내에서 겨우 두번 격추할 수 있었다. (이쪽으로 약간 긴 추격신이 있었다면 괜찮았을꺼라고 생각한다.) 게임내에 주어지는 정보가 충분하고 미로를 헤메지 않도록 디자인했기 때문에 [대부분 길은 일직선통로였다. 못가는곳은 아예 문을 막았다.] 별로 미로를 헤메지도 않고 아주 적절한 난이도였다.

 곧 헤일로 2가 나온다는데, 얼마나 더 시스템이 업그레이드 되었을지 사뭇 기대된다. (사실 2라고는 하지만 헤일로가 파괴되었기 때문에 헤일로라고 제목은 붙이겠지만 헤일로는 등장하지 않을것 이라고 본다.-_ -)

게임평: 이만하면 할만하네!

ps 헤일로[게임내의] 멋있게 나온 부분이 몇군데 있었는데, 스크린샷을 찍어두지 못한게 아쉽다 공식사이트에는 멋있게 나온 스크린샷이 없다. -_ -;

링크: 공식 헤일로 사이트

October 15, 2004

리눅스 설치중.

 대략, 2년만인가. 컴파일러와 플랫폼 테스트, 그리고 장난감으로 가지고 놀기위해 오랫만에 리눅스를 설치하기로 결심하고 항상 리눅스와 동거하는 신옹에게 추천을 부탁했다. 일단 나의 requirements는 리눅스, BSD, SOLARIS 중 요즘에 잘나가는 것들, 가지고 놀기 좋은 것들, 뭔가 재밌게 있는 것들.

 그 결과, 다음 두가지를 추천 받았다.

1) 레드햇 칼데라페도라 2 
2) 젠투

 일단 cinsk 형이 워낙 뼛속까지-_ - 리눅스유저라 당연히 리눅스만 추천받았다. 레드햇 칼데라페도라 2는 흔히 쓰이고 깔기 쉽고 사용하기 쉬운 것. 젠투는... os를 뼛속부터 하나씩 소스를 받아 컴파일해서 설치하는 방식. 심지어 최초에 임시 컴파일러를 다운로드 받아서, 컴파일러를 컴파일하고 기본 프로그램 실행을 위한 라이브러리들을 컴파일하고 시스템을 컴파일하고 커널을 컴파일을하고 개별 프로그램을 따로따로 소스를 받아서 컴파일해 설치한다. -_ -;

 귀차니즘으로 그냥 칼데라를 깔려 했으나, 뭔가 이름이 마음에 들고 컴파일을 한다니 괜찮을듯 생각했다. 그리고 뭐 까는데 시간은 오래걸리겠지만, 요즘 세상에 다 편리하게 원터치로 컴파일해주겠지라고 안이하게 생각하였다.

 그러나.

 아 쌍쌍바. -_ -; 먼저 파티션 나누는걸 직접 커맨드라인으로 하는 것까지는 좋다. 그런데 그후의 모든 작업을 직접 하나씩 커맨드라인입력으로 설치해야 하는 것 이었다. ... 일절의 튜토리얼은 인스톨 중에 나오지 않았다. 말 그대로 몇가지 프로그램만 제공해주고 쉘만 하나 띄워준 것이다. 아니 요즘 세상이 어느 세상인데, -_ -처음에 세팅할꺼 다 해주면 알아서 쉘스크립트로 쭉.... 설치해줘야 하는것 아닌가!!

 아무튼 일단 거의 설치가 완료되어 간다.

- Gentoo 설치 메뉴얼
- KLDP

gentoo linux
http://www.gentoo.org/

ps 칼데라는 뭘까요 -_ -전혀 무의식적으로 칼데라라고 2번이나 썼군요. -_ -; 왜 칼데라라고 알고 있는거지 옛날에 칼데라라는 배포판이 있었던가...?

October 12, 2004

차세대 C++ 표준 - C++0x

 'Generic Programming and the STL'의 저자 겸 C++ 표준 위원회 라이브러리 워킹 그룹 의장인  Matt Austern 의 홈페이지에 가보면, 차세대 C++표준인 C++0x에 추가가 고려될 library wishlist가 있다.

  threads library와 socket library 를 Bjarne Stroustrup가 제안한게 흥미롭다.

 작업이 열심히 진행되고 있는거 같은데 언제 쯤 나올지는, 한가지 확실한건 microsoft의 c++에 적용이 되려면 표준이 나온후 3년은 지나야 할것이라는 점이다. -_ -;

 Bjarne Stroustrup 의 홈페이지에 가보면 이 양반이 앞으로 C++이 가야할길 을 몇가지 밝혀놓은 것이 있다. 창조자가 생각하는 앞으로 C++이 가야할 방향은,

  • no major changes to the language itself
    : 언어 자체에 큰 변화를 주지 않는다.
  • major extensions to the standard library
    : 표준 라이브러리에 중요하고 큰 확장을 추가한다.
  • make c++ a better language for system programming and library building
    : 시스템 프로그래밍, 라이브러리 개발에 좋게 만든다.
  • make c++ easier to teach and learn
    : 배우기 쉽게 만든다.

 뭐 이정도다. 이 양반은 2005년이나 2008년쯤에 나올것 이라고 밝혔다. 다음 C++0x에 추가될 언어자체의 기능은 typedef template, typeof() 정도 인거 같다.

그 내용은... [스크롤의 압박으로 more를 클릭하시기바랍니다.]

ps. 몰랐는데 ms의 무료 c++ 컴파일러가 존재하는군요. ide를 빼고 컴파일러와 라이브러리만 묶은 툴킷이 다운로드 가능하군요. 이름은 MS Visual C++ Toolkit 2003 물론 visual studio의 매력은 ide와 강력한 debugger인데, ide를 쓸수 없으니...-_ -; 즐!

ps. matt란 사람 참 존경할만하네요! 2004년에 그가 읽은 책 리스트를 보니... 절로 정신이 몽해지네요. 게다가 원서를! (농담.-_-)

추가1. vc++.net 2003에 추가된 기능을 찾아봤는데, ms가 이런 이쁜짓-_ -을 했을줄이야. 역시 .net 2002에는 partial template specialization 이 빠졌었는데 2003에 추가 되었군요 :)

#1 typedef template의 사용예

// 사용예1
template < class T1, class T2 > class X { /* */ };
template < class T > typedef X< T, int > X2;
Xi<double> d; // 이것은 X<double, int> 와 같다.

// 사용예2
template < class T, class U > class X { /* */ };
template < class T > typedef X<T, vector<T> > X3;
X3< int > v; // 이것은 X<int, vector<i>> 와 같다.

#2 typeof 는 어떠한 연산의 결과의 타입을 취하려고 만든 것이다. 거의 템플릿에서 리턴되는 값에 대한 타입을 generic하게 만들기 위한 것이다. 예를 들어 좋은 예가 매트릭스 곱셈인데 매트릭스 곱셈은 리턴되는 변수의 타입이 곱하는 두 변수의 타입과 같지 않다.

// 매트릭스 곱셈.
matrix_3x1 m1;
matrix_1x3 m2;
matrix_1x1 m = m1 * m2;

// 이런식인걸 템플릿화하면,
template < class M1, class M2 >
??? matrix_multiply( M1 m1, M2 m2 );

// 가 되는 리턴되는 타입이 불분명하다. 물론, 이경우 행렬이 다른 매트릭스를
// 같은 클래스내에서 동적 생성하면 되겠지만, 예를 설명하기 위함이다. -_ -;
// typeof 연산자를 쓴다면 다음과 같다.
template < class M1, class M2 >
typeof(m1*m2) matrix_multiply( M1 m1, M2 m2 )
{
    auto ret = m1 * m2; //
    return ret;
}

 하지만, 아직 구체적인 syntax 조차도 아직 정해지지 않았다. 이것은 C++1X-_ -;에나 가능할 지도 모른다. 그외 잡다한 표준라이브러리에 추가될만한 것들이 언급되어있다.

 그리고 그가 ACCU2000 컨퍼런스에서 발표한 프리젠테이션에 내가 이전 포스트에 잠깐 언급한 C의 표준을 C++이 따라가야 하는가? 와 관련된 이야기를 하였다. 현재의 공식 C++ 표준인 C++98은 C89에서 도입되었던 기능까지 도입되었는데, C99에서 그 이후에 C++에 추가된 기능중 일부가 추가되고 C++0x에서는 C89이후에 추가된 C의 표준이 들어가게되고 vice versa. 그가 직접 작성한 프리젠테이션 일부.


[ C/C++ 가계도-_ -]


[ C89 C99 C++98 표준끼리의 호환성-_ -]


[ 푸하하하ㅏ 차세대 C++과 C의 표준이 나올경우....-_ -; ]

 이걸 프리젠테이션했을때 정말 웃겼을거 같군요. :) 재밌는 양반입니다.

 내가 좋아하는 C++, template 앞으로도 계속 '진보'하는 모습을 지켜보는 것 만으로도 참 흥미롭습니다. 나이 좀 들기전에 내가 해야할 두가지 일. os 개발과 high-tech language 개발. 그리고 C++표준위원회에 참가하고 싶다. :)

참조문서: 비사마-_ -가 강연한 프리젠테이션 두가지.

23쪽 놀이.

Trackback shot to 류광님의 블로그.

사실 거의 시들해진 6개월이나 지난 뒷북입니다. -_ -;

류광님이 말하길:

  1. Grab the nearest book.
  2. Open the book to page 23.
  3. Find the fifth sentence.
  4. Post the text of the sentence in your journal along with these instructions.

  1. 가장 가까이 있는 책을 집으세요
  2. 23쪽을 펴세요.
  3. 다섯 번째 문장을 찾으세요.
  4. 이 지시사항들과 함께, 그 문장을 당신의 블로그에 올리세요.

---

 제가 집은 책의 구절은,

"The view transform was computed in the previous stage, and there it was also concatenated with the model transform for a certain model."

Real-time Rendering, 2nd Edition.

 요즘 학교 프로젝트 건으로 프로젝트를 3d로 만든다고 일단 책상 옆에 가져다 놓은 책입니디만, 거의 읽지 않았습니다. -_ -; 뭐 인생 별거 있나요.

ps 몇번 본적이 있었는데 안하다가 다수의 게임개발 서적을 번역하신 '류광'님의 블로그를 오늘 우연히 보다가 게시물이 있길래 걍 따라 해봅니다. 

C언어 표준, C90 - C99

- C 의 '진화'

 현재 까지도 일반적으로 C와 C++에서 쓰이는 C 표준은 C90 이다. 하지만 C표준은 현재 C99까지 나와있다. 표준에는 관심이 그다지 없다가, (사실 C++표준은 '게으른' VC++6때문에 관심이 많았다.) 간단하게 정리한곳이 있어서 살펴보았다.

 나에게 있어서 매우 자주 프로그래밍(C++)하다가도 짜증나는 것이 배열,변수의 초기화다. 비교적 진화가 최근까지도 활발하게 이뤄지고 있는 다른 스크립트나 랭귀지를 보자면 이 배열의 초기화가 매우 편하다. 하지만, C++혹은 C를 사용하고 있는 개발자라면 배열을 초기화할때마다 짜증난다. 특히 복잡한 구조체나 그 구조체의 배열을 초기화 한다면, 그 변수가 단 하나밖에 없다 할지라도 따로 함수를 만들지 않고선 배겨낼 수 없다. (혹은 노가다 초기화를 하던가!)

 C99에서는 이러한 초기화에 '진화'가 일어났다. 일단 초기화할때 이전에는 constant만 가능했지만 이것이 함수도 가능하게 변했다. (물론 C++에서는 이미 지원하는 기능이다.) 그리고 맘에 드는 기능은 이것!

struct S1 {
  int i;
  float f;
  int a[2];
};
struct S1 x = {
  .f=3.1,
  .i=2,
  .a[1]=9
};

 보면 알겠지만 초기활할때, 명시적으로 특정 변수를 지정하였다.

struct S2 {
  int x, y;
};
struct S2 a3[3] =
{
  [2].y=6, [2].x=5,
  [1].y=4, [1].x=3,
  [0].y=2, [0].x=1
};

이번엔, 이런식으로.

int a8[] = {[99]=149, [0]=50, 51};

 여기서 결과는 a8[99]=149 a8[0]=50 a8[1]=51 이다. 어떻게 보면 조잡한 스크립트 랭귀지 같아보이기도 하지만, 마음에 든다. 그 외 변수선언이 C++과 같이 코드 중간에 난입이 가능해졌다.

- C99의 지원

 아직 지원하는 컴파일러를 확인하지 못했다. 일단, vc7은 지원하지 않았다. 그러나 경험상, 최신버전의 GNU/C 는 지원할껄로 예상된다. 그런데 이미 C++과 C의 표준이 별개로 개발되는데, 만약 C++에서 지원하지 않는 기능(C99의 배열초기화)을 C에서 지원한다면 C++에서도 당연히 지원해야 하는걸까 아니면 지원하면 이상한것 일까...?

- 게으른 VC++6

 Microsft는 자사의 유일한 C++ 컴파일러 VC6에 무려 5번의 서비스팩(SP)을 배포했음에도 불구하고 대부분의 다른 C++컴파일러가 준수하는 C++표준을 지원하지 않았었다. (물론 거의 템플릿에 관련된 표준) 2002년 vs.net이 발표하면서 vc++.net=vc7은 기존에 지키지 않았던 몇가지 표준을 지켰다. 하지만, 당시 테스트 해본결과 partial template specialization은 지원하지 못했다. 지금은 어떻게 변했을려나...?

- 링크

ps. 스티븐 제이굴드의 진화이론에 대해 동의한다. 따라서 이 포스팅에서 '진화'라고 쓴 것은 전부 '진보'라는 의미로 쓰였으므로 '진보'라고 바꿔야 한다. 하지만, 사실 고전적으로 '진보'라는 단어와 '진화'라는 단어의 뉘앙스는 다르다. 하지만 비아너스트로스트럽가 쓴 책중에 'The Design and Evolution of C++'도 있지 않은가! 라고 헛소리를 지껄여 본다.

ps. 블로그폐인들을 위한 -_ -포탈.

"불페를 위한 골빈 블로그"

제작자: 골빈해커의 말죽거리 잔혹사

나에게 필요한 프로그램들.

* 절대필수요소

  • 토탈 커맨더 6.03a (Total Commander, 옛이름:Windows Commander)
    : 나에겐 항상 '쉘'이 필요하다. 이 것을 사용하기 전에는 'M-Dir'을 사용했다. 'M-Dir'은 93~4년부터 98년까지 사용하였고, 98을 넘어 99년까지 나에겐 여러가지 쉘을 사용하던 과도기 였다. (가령 Windows용 M 이라던가, Frigate 등) 그러다, 99년에 내가 만난 나에게 처음이자 마지막 '사부'로 생각되는 한 개발자분의 추천으로 '윈도우즈커맨더'를 사용하게 되었고 지금은 윈도우즈커맨더가 없으면 컴퓨터를 사용하지 못한다! -라고 생각될 정도로 윈도우즈커맨더는 나에게 키보드와 같은 존재다. 03년도 쯤에 이름에 대한 상표권문제로 '토탈커맨더'로 개명하였다.

    - 압축/해제 작업의 95% 담당.
    - FTP 클라이언트의 100% 담당.
    - 쉘기능 100% 담당.
    - 멀티리네임기능 등.
  • 미소녀 메신저. (MSN_Messenger)
    : 대부분 그렇겠지만, 어쩌다보니 미소녀 메신저는 나에게 필수불가결 요소가 되었다. 나의 첫 메신저는 많은 컴퓨터쟁이가 그러하듯이 icq였다. 거의 주변에서 처음 사용하였기 때문에 icq넘버가 7자리다! #7160332 그러나, 시간을 흐르고 흘러 모든 친구나, 아는 사람이나 미소녀 메신저를 써버리게 되어서, 지금은 미소녀메신저만 사용한다.
  • irfanViewer
    : 이미지 뷰어. 무수히 많은 포맷을 지원한다. 컨버팅도 당근 가능. 간단한 이미지 작업도 가능. (클립보드 저장, 이미지 사이즈 조절, 이미지 crop, 이미지 모자이크 기능 등). 가벼움. Freeware!
  • winamp
    : 아직도 음악은 winampv2로 듣는다. 누구 winampv2용 wma 플러긴 있으신분. -_ -;
     예전의 기억이 winamp가 v3 넘어가면서 지저분해지고 이전 플러긴 스킨 지원안했던거 같은데, (그래서 v2 에 남아 있었다.) 지금 v5 버전을 깔아보니, 거의 v2만큼 가볍게 쓸수 있게 바뀌었다. (스킨도 플러긴도 v2와 호환) 이제부터 v5를 써줘야지. .ogg와 .wma도 잘 지원한다 그런데 lite 버전을 깔아보니까 플러긴도 lite 하다. (ogg, wma도 미포함-_ -) full버전을 깔아야 ogg, wma 플러긴도 같이 깔 수 있다.
  • crimson editor
    : freeware. html syntax highlight 기능. 대부분의 html 문서 작업은 이 프로그램으로 한다. ftp로 문서 작업도 할수 있으니 대만족. 큰 단점은 프로그램이 약간 불안하다.
  • 빵집
    : 쓰고싶지는 않지만, 짜증나는 .alz 확장자 때문에 깔려있다. 뭐, 알집을 까는 것보다 100만배 낳다.
  • bestcrypt
    : 설명하기 곤란한 프로그램. 일종의 암호화 된 가상의 드라이브를 사용자에게 제공해 준다. 기존의 하드에 대용량의 벌크 데이타를 만들어서 그것을 다른 가상의 드라이브로 마운트 해준다. 중요하고 크리티컬한 데이터를 보관하는 사용한다. 가량 소스나, 개인 데이터.
  • pgpfreeware
    : wipe 기능과, 개별 파일의 암호화를 위해 사용한다. 가끔 중요한, 혹은 사생활이 담긴 데이터를 open되어 있는 인터넷으로 전송할 일이 있을때 이것으로 암호화해서 다른 사람에게 넘겨준다.
  • gsnotes, gs organizer
    : 깔끔한 treeview 메모장. 리치 에디트 컨트롤이 마음에 든다. 그대로 html코드로 export가능하지 못한 점이 아쉽다.
  • dknotes
    : 가장 좋다고 생각하는 포스트잇 프로그램. 인터페이스와 기능이 매우 사용자 친화적이다.
  • pineterm
    : telnet program, 이제 '이야기'를 사용할 일이 없기때문에 파인텀이면 모든지 ok.
  • netransport
    : ie에서 다운로드 받을때 사용.
  • D-Tools
    : 시디 이미지 마운트 프로그램. 나에게 꼭 필요하다...-_ -;

* 기타 프로그램
(앞으로 계속 프로그램을 설치할 필요가 있는 것들)

  • nthClock
    : 시계 & 알람 프로그램. 알람으로 프로그램을 실행 가능하다. mp3나 ogg등을 연주할 수 있다. *freeware*
  • winhex
    : hex editor
  • hlist
    : 한글 text 문서 뷰어. 조합형을 지원한다. 예전 bbs 형식의 갈무리 글을 포스트별로 쉽게 접근이 가능하다.
  • firefox
  • nateon
  • icq
  • pda util
    : pda사용을 위해 어쩔수 없이 항상 깔아야 한다.
  • F-Prot Antivirus


* 개발용 프로그램

  • vs.net 2003
    : vc6 만 사용하다가, 집에서는 .net을 깔았다. 생각보다는 편리하다. (버전업이 된건데 당연한건가...-_ -)
  • visual assist .net
    : 코딩을 도와주는 필수 유틸리티
  • subversion /w .net integration
    : 버전 관리 컨트롤 프로그램, 주위의 추천에 의해 cvs를 쓰다가 subversion을 사용해보고 있다.
  • 3ds max 5.1
  • photoshop 5
  • ms office

ps. 현재 os는 windows 2003 server 다. 깐지 1년반정도 되어 간다.
ps. 그냥 심심해서 정리해봤다.

October 09, 2004

그놈이 온다 PSP!

거부할 수 없는 그놈.

Sony PSP! (PlayStation Portable!)

거부할 수 없는 디자인 거부할 수 없는 기능!

 해외의 한 잡지에 따르면, 제조 단가가 50~60만원 정도가 될것이지만, 게임기가격 정책이 늘 그렇듯히 보급을 위해 초기 '보급판'이 199$(psp+32m스틱) 정도로 책정된다고 한다.  구동시간은 게임은 8시간, 음악 10시간, 영화는 2시간정도.

스펙:

【“PSP”商品仕様】
商品名携帯型ゲーム機 PSP™
本体色ブラック
모델명PSP-1000
사이즈約170 x 23 x 74mm (幅×高さ×奥行き) (最大突起含まず)
중량約270g(バッテリー含む)
CPUPSP CPU(動作周波数1~333MHz)
메인메모리32MB
内蔵DRAM4MB
스크린4.3インチ 16:9ワイドスクリーンTFT液晶
480x272ピクセル 1,677万色
最大200cd/ m²(輝度調整付)
サウンドステレオスピーカー内蔵
I/OIEEE 802.11b(Wi-Fi)準拠
USB2.0(Target)
메모리 스틱 PRO
IrDA
IR remote(SIRCS準拠)
主な端子“メモリースティック デュオ” スロット
USB端子
外部電源供給端子
本体電源入力端子
ヘッドホン/マイク端子
キー・スイッチ類方向キー上下左右
アナログパッド
△、○、×、□ボタン
L、Rボタン x 1
START、SELECT、HOME x 1
POWER/HOLDスイッチ x 1
ディスプレイ、サウンド、音量+/-ボタン x 1
ワイヤレスLANスイッチ(ON/OFF) x 1
OPENボタン(UMD) x 1
電源内蔵リチウムイオンバッテリー
外部ACアダプター
内蔵ドライブ再生専用“UMD”ドライブ
対応プロファイルPSP Game
UMD Audio
UMD Video
対応コーデックVideo: H.264 / AVC MP Level3
Audio: ATRAC3 plus、MP3
セキュリティ暗号化方式:128bit AES
著作権保護技術:マジックゲート
アクセスコントロールリージョン、パレンタルロック
ワイヤレス通信機能インフラストラクチャーモード
アドホックモード(最大16台同時接続)
本体同梱予定周辺機器ACアダプター
専用バッテリーパック
専用リモコン付きヘッドホン
ポーチ
【“UMD”仕様】
デザイン両面シースルー・シャッターレス
外形寸法約65x 4.2x 64mm (幅×高さ×奥行き)
質量約10g
ディスク径60mm Φ
最大容量片面2層 1.8GB
レーザー660nm(赤色)
暗号方式128bit AES
プロファイルPSP Game (full function)
UMD Audio (codec ATRAC3plus、PCM、<MPEG4 AVC>)
UMD Video (codec MPEG4 AVC、ATRAC3plus、字幕PNG)
※本仕様は2004年9月24日現在のものであり、予告なく変更することがあります。
※“PlayStation”および“UMD”は株式会社ソニー・コンピュータエンタテインメントの登録商標です。また、“PSP”は同社の商標です。
※「メモリースティック PRO デュオ」、「メモリースティック デュオ」、「マジックゲート」および“ATRAC3plus”はソニー株式会社の商標です。

 5월에 포스팅된 한 자료에 따르면, 메인메모리가 32메가라고 밝힌곳도 있었다. 이 자료는 아마도 더 옛날에 공개된 자료로 보인다. 그 자료에 따르면 크기/사이즈가 17 x 7.4 x 2.3cm and weighs 260g 이고 스크린은 4.3in 16:9 ratio, 480 x 272, 32-bit colour TFT LCD라고 한다.

금년 TGS 에서 발표한걸로 보이는 자료를 찾았다. 메인메모리 32메가 맞다!

아무튼 너무 기대되는 물건 앗흥 곧 나올거 같다. 앗흥-_ -;

ps NDS는 #"2개의 액정 화면(백라이트 장착, 해상도 256*192)과 CPU(ARM9/ARM7), 내장 마이크, 터치패널, 무선 LAN 기능 등으로 인해 관심이 집중되었던 가격은 미국이 149.99달러, 일본이 15,000엔으로 결정되었으며, 미국 발매일은 11월 21일, 일본 발매일은 이보다 조금 늦은 12월 2일로 확정되었다." 라더군요. 이것도 흐음... -_ -;

기본 자료 출처: http://www.gameshot.net/webzine/article_read.php?class=PS&svc_cd=NEWS&ac_seq=AC41625ac5d7baf&svc_name
참조: # http://www.theregister.co.uk/2004/05/12/sony_psp/
# http://ps2.ign.com/articles/430/430963p1.html
# http://www.playstation.jp/tgs2004/psp_spec.html

October 08, 2004

공짜로 메모리가 두배가 되다! 잇힝-_ -

(- ┏) 인생 뭐 있나

 2달간 집을 비웠었다. 내 메인 컴퓨터도 함께. 집에 돌아와보니 240기가 레이드는 날라갔고 ㅠㅠ (내 데이터들, 하지만 크리티컬한 데이터들은 모두 보존! 거의 벌크데이터만 날렸다) 그래픽카드의 팬은 고장나고 (처음에는 그래픽카드가 망가진줄알았다...-_ -) 흐음 그외는 멀쩡한듯 했다.

 그런데 자꾸 메모리가 부족한듯 하여 메모리를 살펴보니 256메가였다. "흐음 내가 256메가를 썼었던가...-_ -"라며 그런줄 알고 사용했다. 이상하긴 했지만 주어진 상황을 쉽게 받아들였다. (하드도 날라가지 않았던가! 하드날라갔을땐 패닉상태에 빠져 몇일간 "하하하" 웃으면서 게임을 하며 현실도피를 했었다. -_ -)

 그렇게 시간은 한달 반이 흘렀다.

그러다, 레이드하드 한개를 부팅해서 벌크데이터 넣는데 쓰려고 하다가 음, 메모리 슬롯에 메모리가 두개 꼽혀있는게 아닌가! 흐음? 설마 내가 128*2를 쓰고있었던가! 하고 놀라서 메모리를 하나를 뽑아봤다. 써있는 메세지 "256M blah blah blah" -_ -;

 

orz

  

 다른 메모리를 뽑아봤다. "256M blah blah blah" -_ -;

 

 

oTL (-_ -)

 

 


 그렇다, 사실은 메모리슬롯 하나도 망가졌던 것 이다-_ -; 작동하는 메모리 슬롯으로 두개를 꼽았다. 부팅을 했다. Check Memory......... 524,288 K Bytes.

 

 

○| ̄|_

 

 

 어이쿠 대박이여-_ -

 그럼 그렇지 512M 쓰다가, 256M를 쓰니까 그렇게 맨날 메모리가 부족하지-_ -; 메모리가 남아날리가 있나 -_ -; VS.Net 하나 띄우고 컴파일하느데 "가상메모리가 부족합니다"가 나오면 뭔가 이상함을 느껴야 하는게 아니었나!

 하지만 덕분에 메모리를 double 한 효과를 몇일은 보겠네 -_ - 몇일간은 컴퓨팅 환경이 아름다워질꺼야!-_ -;

최근에 엔조이한 미디어들 part II

패시브 미디어들>

버퍼플라이 이펙트 (Butterfly effect) http://www.butterflyeffectmovie.com/

: 감독판을 보았다. 전부터 여기저기서 재밌다는 소문을 많이 들었다. 영화를 끝까지 본 소감은? 재밌었다. 그런데 이상하게도 이러한 설정은 내가 과학이라는 것을 심도있게 배우지 않았었던 초등/중학교때의 기억에 이러한 설정을 자주 공상하곤 했다. 가령 내가 공룡시대로 타이머신을 타고 가서, 풀한포기 혹은 생물체 한마리를 죽인다면, 그 당시에는 아무일도 아닐지 몰라도 수억년이 지난 지금은 '인간'이라는 종이 생기지 않았을지도 모르고, 있었더라도 나는 세상에 존재하지 않았을 것이다. 가까운 시간의 예를 들자면 부모님이나 조부모님 증조부모님중 한분이라도 처음에 만나시게 된 이벤트의 한가지만 뒤틀려놔도 나는 존재하지 않는 것이기 때문이다. 어째서 내가 이런 공상을 어렸을때 하곤 했을까? 글을 쓰다가 생각났는데 이미 버터플라이 이벡트가 적용되었던 옛 흥행작이 존재한다. 바로 "백투더퓨쳐"-_ -; 그런데 내 기억이 흐미해서 그런지 저 영화를 보기전에도 저런 상상을 해본적이 있었던거 같다.

 웃긴 이야기지만, 한때 이론/천체 과학자가 꿈이었다. (컴퓨터와 조우하기 전까지..-_- )

인터렉티브 미디어들>

세이크리드 (Sacred) http://www.gamespot.com/pc/rpg/sacred/

: 디아블로 클론이라는 말에서 자유롭지 못하다. 하지만 조금 플레이해보니 상당히 스토리는 방대해보였다. 말을 탈 수 있는데, 버그인지 말을 타면 공격하는게 상당히 스트레스 받도록 클릭이 잘 되지 않았다. 안그래도 '매공격시 적을 클릭'해야 한다는 것에 요즘 게임도 이따위짓을 하나 라고 생각했는데. (클릭 노가다 싫어 하는 사람을 위해서라도 자동 공격이나 한번 클릭하면 계속 공격할 수 있게 최소한 옵션에라도 추가해줬어야 하는게 아닌가!-_ -) 아무튼 말타면 클릭이 그지-_ -같아져서 도대체 내가 이런 게임을 왜 플레이 하고 있는거지 란 의문이 들어서 그대로 게임을 포기하였다.

워해머 40k: DoW (Warhammer 40,000: Dawn of War) http://www.dawnofwargame.com/homepage.php

: 훌륭한 게임 '홈월드'를 창조한 'relic'의 새 RTS 작품. 그래픽 효과는 멋지다. 그런데 왠지 튜토리얼을 한번 해보고 나니까 더 하고 싶은마음이 사라졌다. 실제 워해머 보드게임을 플레이해본적이 있다. 오리지널 보드게임과는 그다지 관계가 있는 편은 아닌거 같다. 게임시스템은 새로 유닛을 만들기보다는 기존의 유닛을 업그레이드하는데 촛점이 맞춰져있다. 부대가 전멸하지 않으면 스스로 '정비'가 가능하다. 그리고 한 부대에 '영웅', '메딕' 이라던지 특수유닛을 포함시킬수 있다. 그런데 플레이해보니 비슷한 시기에 나온 Kohan II 와 시스템이 상당히 흡사한데에 놀랐다. 영웅을 부대에 Attach 한다는 개념도 똑같고..-_ -흐음.

코헨2 (Kohan II) http://www.globalstarsoftware.com/kohan2/

: 꽤 예전에 코헨1을 독특한  시스템이라 플레이해본 적이있다. 아마도 RTS쪽에는 최초로 유닛단위가 아닌 부대단위 RTS가 아니었나 싶은데, (아닐 확률 다분) 전투하는 모습이 꽤 훌륭했다. (지금 찾아보니까 2001년작이라서 당연히 최초는 아닌거 같다-_ -)

Beyond Divinity http://www.beyond-divinity.com/

: 훌륭하다고 소문났던 Divine Divinity 의 외전격. 그런데 원작을 플레이해보지 않아서 게임에 몰입할 수 없었다. 시대에 맞지 않는 "원근감과 거리가 있는" 지도는 대체 뭐란 말인가-_ -;

XIII http://www.xiii-thegame.com/uk/virtualtour/

: NOLF 와 비교당하는 게임. 나름대로 잘 만든거 같다. 카툰렌더링. 007 제임스본드를 연상시키는 여러 액션. 게임스팟 평점은 6.4로 대단히 점수를 주지 않았따. -_ -;

삼국지 X

: 일본에서 발매된지 두어달 된거 같다. (귀찮아서 정확한 정보 찾기가...-_ -) 드디어 돌아온 삼국지 10. 아직 한글판은 나오지 않았다. 조금 플레이해 봤다. 삼국지1부터 시작해 (사실 2부터 시작했고 2를 한다음에 1을 플레이했다.) 어느덧 10까지 나와 우려먹는다. 우려먹는 기분은 들지만 그래도 해보지 않을 수 없는 게임. 한글판은 10월 말에 발매예정. 허나 게임 가격은 전통적인 비스코와 고에이의 가격결정을 생각해볼때 5~10만원 사이일듯-_ -; 삼국지 IX가 초회판이 8만원이었던가. -_ -;

 게임플레이는 역시 군주 플레이를 하거나 개인 캐릭터 플레이를 하게 된다. 내정, 전투, 계략, 일기토, 언쟁등과 관련된 "특기" 시스템이 있다. 이번 삼국지10의 가장 특이할만한 점은 이제 문관도 일기토-_ -가 가능하다는 점이다. 서로 말빨로 싸움을 한다. -_ -; 좀 독특한 시스템인데 처음에 적응이 안됐다. 이것이 사용되는 예는 말을 워낙 잘하면 싸우지 않고도 어려움을 헤쳐나갈 수 있는 요소가 조금 포함된것 과. 재야장수를 등용할때, 가끔 이 재야장수를 말빨로 승복시켜야 우리편 휘하로 들어오게 된다. -_ -; 어쨌거나 한글판 나온다면 일주일은 이놈에게 바쳐야 할 것 같다.
- 일본쪽리뷰+사진

보너스 미디어>

실크로드: 로마로 가는 길 Ep.04 현장법사의 인도여행
: 실크로드를 기억하는가? 아마도 80년대 작품인거 같은데 일본 NHK와 CCTV(?)라는 곳에서 공동제작하였다. 수십편정도가 되는데 국내에서 해설을 더빙하여 방송해준 적이 있다. (그러니 내 어렸을적 이 프로를 꾀 꾸준히 시청했다는 기억이 있다.) 우연히 네트워크를 떠돌다가 발견한 이 자료. 옛날 tv 프로라는데서 한번 감동하고 인도를 갔다온 후라 한번 더 감동하였다. 바라나시(베나레스)가 나오는데 20년전인데도 모습은 거의 비슷했다.

보너스 뉴스>

오늘 예비군훈련이 8시까지 가는거였는데, 7시40분에 일어났다.

-_ -;

October 05, 2004

3D Game Engine Quickview!

 학교 프로젝트를 하기위해 오랫만에 여러 3d engine을 둘러보았다. 사실 서둘러서 다이렉트X api로 폴리곤 몇개 찍고 카메라 돌리고 게임 틀을 잡는 곳까지 코딩을 하다가, -_ - 이왕 만드는거 일단 크로스 플랫폼 3d engine을 이용해서 편하게 포팅 하자라는 생각이 들었다. 그래서 여러 엔진들을 찾게 되었다.

 그중 쓸만한 예전부터 봐두었던 두가지 엔진에 기타 다른 엔진 여러가지를 살펴보았으나, 네불러오우거가 워낙 다른 엔진에 비해 뛰어나서 다른 공개 엔진은 스킵하기로 하였다. 상용으로 쓰이고 있는 엔진 3가지까지 더해서 간단한 코드까지 더해서 간략한 코멘트를 블로그에 남기기로 하였다.

  • 언리얼 엔진 (Unreal Engine)
  • 퀘이크 엔진 (Quake Engine)
  • 하프라이프 엔진 (Half-life Engine, leaked)
  • 네불러 디바이스 (Nebula Device)
  • 오우거 (OGRE)

이렇게 5개다. 코드 때문에 글이 길어져서 자세히 보기를 클릭!


ps 정말 뛰어난 공개 3D 엔진이 있으시면, 커멘트로 추천해주세요!
ps2 hr tag를 부활시켜 보았다.


- Unreal Engine http://udn.epicgames.com/ 

현재 가장 최고의 엔진으로 추앙받는 언리얼 엔진. 엔진계의 또다른 산 퀘이크엔진이 c기반인데 반해 언리얼은 c++ 기반이다. 그리고 핵심 엔진을 제외한 여러가지 부분들이 언리얼스크립트로 쓰여졌다. 리니지2 개발 비화중 하나가 퀘이크 엔진을 샀다가 졸라 지저분해서 쓰레기통에 가져다 버리고 언리얼 엔진을 다시 구입하였다는 이야기가 있다. Tim Sweeney가 핵심 개발자다. 엔진 가격이 무척 비싸다.  일부의 헤더 파일과 언리얼 스크립트는 공개되어 있다.


void UGameEngine::Init()
{
 guard(UGameEngine::Init);
 check(sizeof(*this)==GetClass()->GetPropertiesSize());

 // Call base.
 UEngine::Init();

 // Init variables.
 GLevel = NULL;

 // Delete temporary files in cache.
 appCleanFileCache();

 // If not a dedicated server.
 if( GIsClient )
 { 
  // Init client.
  UClass* ClientClass = StaticLoadClass( UClient::StaticClass(), NULL, TEXT("ini:Engine.Engine.ViewportManager"), NULL, LOAD_NoFail, NULL );
  Client = ConstructObject<UClient>( ClientClass );
  Client->Init( this );
...
...
...
 // Create the InteractionMaster

  UClass* IMClass = StaticLoadClass(UInteractionMaster::StaticClass(), NULL, TEXT("engine.InteractionMaster"), NULL, LOAD_NoFail, NULL);
  Client->InteractionMaster = ConstructObject<UInteractionMaster>(IMClass);

  // Setup callback to the client

  Client->InteractionMaster->Client = Client;

  // Display Copyright Notice

  Client->InteractionMaster->DisplayCopyright();


  // Create the Console

  UInteraction *Console = Client->InteractionMaster->eventAddInteraction(TEXT("ini:Engine.Engine.Console"),NULL);
  if (Console)
   Client->InteractionMaster->Console = Console;

  // Add code to Create the Menu System here    


  // Create viewport.
  UViewport* Viewport = Client->NewViewport( NAME_None );
...
...
...


- Quake Engine http://www.idsoftware.com/business/techdownloads/  

 존카멕. 다른 말이 필요한가. 둠을 거쳐 퀘이크1이 나왔을때 퀘이크1은 정말 놀라웠다. 한 시대의 한계를 뛰어넘었던 게임이라고 생각한다. 발매되자마자 플레이했었는데 정말 당시 감동했던 기억이 어렴풋히 난다. 퀘이크 엔진은 1, 2, 3를 거쳐 2004년 놀라운 그래픽으로 우리에게 나온 둠3에 까지 발전하였다. 엔진의 성능의 놀라움을 뒤로한채 일단 공개된 퀘이크3의 소스를 보자면 일반 c 코드여서 코드 분석이 까다롭다. 존카멕이야 소스를 다 잘 알겠지만! 퀘이크 엔진에서 나온 게임은 꽤 많으며, 파생된 엔진도 많다.



void G_UpdateCvars( void )
{
 int   i;
 cvarTable_t *cv;

 for ( i = 0, cv = gameCvarTable ; i < gameCvarTableSize ; i++, cv++ ) {
  if ( cv->vmCvar ) {
   trap_Cvar_Update( cv->vmCvar );

   if ( cv->modificationCount != cv->vmCvar->modificationCount ) {
    cv->modificationCount = cv->vmCvar->modificationCount;

    if ( cv->trackChange ) {
     trap_SendServerCommand( -1, va("print \"Server: %s changed to %s\n\"",
      cv->cvarName, cv->vmCvar->string ) );
    }
   }
  }
 }
}
...
...
...
void G_InitGame( int levelTime, int randomSeed, int restart )
{
 int     i;

 G_Printf ("------- Game Initialization -------\n");
 G_Printf ("gamename: %s\n", GAMEVERSION);
 G_Printf ("gamedate: %s\n", __DATE__);

 srand( randomSeed );

 G_RegisterCvars();

 G_ProcessIPBans();

 G_InitMemory();

 // set some level globals
 memset( &level, 0, sizeof( level ) );
 level.time = levelTime;
 level.startTime = levelTime;

 level.snd_fry = G_SoundIndex("sound/player/fry.wav"); // FIXME standing in lava / slime

 if ( g_gametype.integer != GT_SINGLE_PLAYER && g_log.string[0] ) {
  if ( g_logSync.integer ) {
   trap_FS_FOpenFile( g_log.string, &level.logFile, FS_APPEND_SYNC );
  } else {
   trap_FS_FOpenFile( g_log.string, &level.logFile, FS_APPEND );
  }
  if ( !level.logFile ) {
   G_Printf( "WARNING: Couldn't open logfile: %s\n", g_log.string );
  } else {
   char serverinfo[MAX_INFO_STRING];

   trap_GetServerinfo( serverinfo, sizeof( serverinfo ) );

   G_LogPrintf("------------------------------------------------------------\n" );
   G_LogPrintf("InitGame: %s\n", serverinfo );
  }
 } else {
  G_Printf( "Not logging to disk.\n" );
 }
G_InitWorldSession()


- Halflife 2 Engine http://www.planethalflife.com/half-life2/

 2003년 E3에서 너무나 우리를 놀라게 했던 하이프라이프 2 엔진, 그러나 음모론(개발연기를 위한 자해, 미국이 스스로 911을 일으켰다는것과 문맥이 통하는 음모론!) 을 받았던 소스코드 유출사건 후 거의 1년가량 발매일이 연기되었다. 그렇긴 하지만, 2003년 E3에서 보여준 엔진의 뛰어남은 거의 죽음이었다. 하프라이프 엔진의 기원은 퀘이크 소스에서 왔다. 엔진의 일부는 퀘이크 소스 그대로 남아있고, 새로 추가한 부분은 클래스로 되어 있다. 물리엔진은 havoc에서 만든 'karma'라는 엔진을 사용한다.



void CGameMovement::_ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMove )
{
 mv = pMove;
 player = pPlayer;
 Assert( mv );
 Assert( player );

 // bisect time interval for very long commands
 if (gpGlobals->frametime > 0.05f )
 {
  float savet = gpGlobals->frametime;
  
  float t = gpGlobals->frametime * 0.5f;

  gpGlobals->frametime = t;
  
  _ProcessMovement( player, mv );

  // NOTE:  Only fire impulse on first time through
  mv->m_nImpulseCommand = 0;

  // Make sure frametime is valid
  gpGlobals->frametime = t;

  _ProcessMovement( player, mv );

  // Reset frametime so other functionas after this aren't hosed
  gpGlobals->frametime = savet;

  return;
 }

 mv->m_flMaxSpeed = sv_maxspeed.GetFloat();

 // Run the command.
 PlayerMove();

 FinishMove();
}


- Nebula 2 http://nebuladevice.cubik.org/

99년쯤 개발되기 시작한 공개 엔진의 선두주자. C++로 작성된 엔진이며, tcl/tk, lua, python, java 스크립트를 지원하고 Directx9, OpenGL을 고를수 있으며, 윈도우즈, 리눅스 맥os까지 지원한다. 가장 매력적인 점은 소스포지의 공개 프로젝트라는 점! 그리고 아마도 공개 엔진중에서 가장 성능이 뛰어난거 같다.


//------------------------------------------------------------------------------
/**
    Update the d3d projection matrix from the new camera settings.
*/
void
nD3D9Server::SetCamera(const nCamera2& cam)
{
    nGfxServer2::SetCamera(cam);

    if (this->d3d9Device)
    {
        matrix44 projRH;

        D3DXMatrixPerspectiveFovRH(
            (D3DXMATRIX*) &projRH,
            n_deg2rad(cam.GetAngleOfView()),
            cam.GetAspectRatio(),
            cam.GetNearPlane(),
            cam.GetFarPlane());

        // set projection matrices
        this->SetTransform(PROJECTION, projRH);
    }
}

//------------------------------------------------------------------------------
/**
    Start rendering the scene.
*/
bool
nD3D9Server::BeginScene()
{
    HRESULT hr;
    if (nGfxServer2::BeginScene())
    {
        n_assert(this->d3d9Device);
        this->inBeginScene = false;

        // check if d3d device is in a valid state
        if (!this->TestResetDevice())
        {
            // device could not be restored at this time
            return false;
        }

        // tell d3d that a new frame is about to start
        hr = this->d3d9Device->BeginScene();
        if (FAILED(hr))
        {
            n_printf("nD3D9Server: BeginScene() on d3d device failed!\n");
            return false;
        }

        this->inBeginScene = true;
        return true;
    }
    return false;
}


- Ogre (O-O Graphics Rendering Engine) http://www.ogre3d.org/ 

소개하는 엔진중 가장 최근부터 시작된 엔진. c++, opengl, directx, windows, linux, macos 지원한다. 이 엔진의 가장 큰 매력은 소스가 쉽고 무척이나 깔끔하다. 소스를 작성한지 얼마 안되었기 때문에 소스에 군더더기가 거의 없다.



 void D3D9RenderSystem::shutdown()
 {
  RenderSystem::shutdown();
  SAFE_DELETE( mDriverList );
  mActiveD3DDriver = NULL;
  LogManager::getSingleton().logMessage("D3D9 : Shutting down cleanly.");
 }
 //---------------------------------------------------------------------
 RenderWindow* D3D9RenderSystem::createRenderWindow( const String &name, unsigned int width, unsigned int height, unsigned int colourDepth,
  bool fullScreen, int left, int top, bool depthBuffer, RenderWindow* parentWindowHandle)
 {
  static bool firstWindow = true;
  
  OgreGuard( "D3D9RenderSystem::createRenderWindow" );

  String msg;

  // Make sure we don't already have a render target of the
  // sam name as the one supplied
  if( mRenderTargets.find( name ) != mRenderTargets.end() )
  {
   msg = "A render target of the same name '" + name + "' already "
    "exists.  You cannot create a new window with this name.";
   Except( Exception::ERR_INTERNAL_ERROR, msg, "D3D9RenderSystem::createRenderWindow" );
  }

  RenderWindow* win = new D3D9RenderWindow();
  if (!fullScreen && mExternalHandle)
  {
   D3D9RenderWindow *pWin32Window = (D3D9RenderWindow *)win;
    pWin32Window->SetExternalWindowHandle(mExternalHandle);
  }

  win->create( name, width, height, colourDepth, fullScreen,
    left, top, depthBuffer, &mhInstance, mActiveD3DDriver,
    parentWindowHandle, mFSAAType, mFSAAQuality, mVSync );

  attachRenderTarget( *win );
...
...
...
    //-----------------------------------------------------------------------
    void Entity::updateAnimation(void)
    {
        // We only do these tasks if they have not already been done for
        // this frame
        Root& root = Root::getSingleton();
        unsigned long currentFrameNumber = root.getCurrentFrameNumber();
        if (mFrameAnimationLastUpdated != currentFrameNumber)
        {
            cacheBoneMatrices();

            // Software blend?
            bool hwSkinning = isHardwareSkinningEnabled();
            if (!hwSkinning ||
                root._getCurrentSceneManager()->getShadowTechnique() == SHADOWTYPE_STENCIL_ADDITIVE ||
                root._getCurrentSceneManager()->getShadowTechnique() == SHADOWTYPE_STENCIL_MODULATIVE)
            {
                // Ok, we need to do a software blend
                // Blend normals in s/w only if we're not using h/w skinning,
                // since shadows only require positions
                bool blendNormals = !hwSkinning;
                // Firstly, check out working vertex buffers
                if (mSharedBlendedVertexData)
                {
                    // Blend shared geometry
                    // NB we suppress hardware upload while doing blend if we're
                    // hardware skinned, because the only reason for doing this
                    // is for shadow, which need only be uploaded then
                    mTempBlendedBuffer.checkoutTempCopies(true, blendNormals);
                    mTempBlendedBuffer.bindTempCopies(mSharedBlendedVertexData,
                        mHardwareSkinning);
                    Mesh::softwareVertexBlend(mMesh->sharedVertexData,
                        mSharedBlendedVertexData, mBoneMatrices, blendNormals);
                }
                SubEntityList::iterator i, iend;
                iend = mSubEntityList.end();
                for (i = mSubEntityList.begin(); i != iend; ++i)
                {
                    // Blend dedicated geometry
                    SubEntity* se = *i;
                    if (se->isVisible() && se->mBlendedVertexData)
                    {
                        se->mTempBlendedBuffer.checkoutTempCopies(true, blendNormals);
                        se->mTempBlendedBuffer.bindTempCopies(se->mBlendedVertexData,
                            mHardwareSkinning);
                        Mesh::softwareVertexBlend(se->mSubMesh->vertexData,
                            se->mBlendedVertexData, mBoneMatrices, blendNormals);
                    }

                }

            }

            // Trigger update of bounding box if necessary
            if (!mChildObjectList.empty())
                mParentNode->needUpdate();
            mFrameAnimationLastUpdated = currentFrameNumber;
        }



결국 나는 Ogre 을 선택하였다. (사실 2지 선다 선택이다!)

October 04, 2004

담배 - tobacco

 여행 막바지, 나를 제외한 모든 일행이 하루에서 몇번씩 그들만의 스모킹 타임을 가졌었다. 그 짧은 스모킹 타임에 나는 전혀 할것이 없었다. 그러기를 수차례, 결국 나도 심심해서 스모킹 타임에 참여했다. [참고로 난 담배에 대해 버진은 아니지만, 그때까지 피운 담배 개피수가 5개도 되지 않았다.] 그런데 몇번 피워보니 이 몹쓸놈이 나에게 이주일정도에 걸쳐 흡연에 대한 강한 충동을 심어주었다. 그리고 한국에 와서 여행중 인연이 닿은 사람들과 술마시다가 강한 충동을 느끼고 (다른 사람이 흡연을 하길래, 좀 많이 취한 상태였다-_ -) 다시 피웠다 어찌나 달콤했던지. -_ -; 그리고 또 한 2주정도 흡연의 충동이 왔다.

 개인적으로는 흡연자들을 보면, 짜증날때가 있다. 왜 그런 멋진 포즈와 표정으로 피워서 나를 유혹하는 것인가. 혼자 있을때 떡 담배 하나 물고 멍하니 창밖이나 하늘을 보면 멋있다는 생각이 드는건 나만의 착각인가! (담배연기는 그래도 정말 싫다!) 물론 담배피는 행위가 해당 인물에 대한 호감의 덜함이나 더함을 불러일으키지는 않는다. 단지 살아가다보면 손이 뻘쭘-_ -할때가 가끔 있는데 그럴때마다 흡연자들은 그 손에 담배를 쥐고 비흡연자들은 뻘쭘하게 그대로 있다는 것.

중독, 나는 중독에 빠지기 쉽다는 사실을 그 누구보다도 잘 알고 있다. 마지막으로 흡연한지 2주가 넘도록 참았다. 마지막 흡연후 3주쯤 된 지금 이제 흡연의 충동은 거의 일어나지 않는다. 중독은 무섭다.

 게임중독은 아직도 못 고쳤다. 카페인중독은 귀차니즘으로 쉽게 고쳤는데. -┏

ps 결론은 태어나서 지금까지 핀 담배개피수가 15개쯤.

October 03, 2004

최근에 엔조이한 미디어들 part I

패시브 미디어들>

슈렉 2 (Shrek 2) http://www.shrek2.co.kr/
: 왜들 그렇게 슈렉 고양이의 사진을 귀여워했는지 알겠다. 정말 귀여웠다. 깨물어먹고주고 싶을만큼. 그리고 장님쥐새끼들 너무 귀엽다! 슈렉과 그 마누라는 역시나 그 전처럼 마음에 들지 않았다. 아동용 캐릭터라 그런가, 너무 말많고. 그리고 당나귀자식은 볶아서 당나귀부침을 만들어 먹을정도로 영화내내 시끄럽게 떠들었다. -_ -; far far away 왕국이라는 이름도 쫌 웃겼다. 마지막에 대형빵-_ -(이넘 이름이?) 이 물속에 들어가는 장면은 왜이렇게 마음이 아프던지.-_ -; 장화신은고양이 월페이퍼 다운로드 받으려고 했는데 참 받기 힘들었다. 다운로드 받으려는 프로그램 설치하라고 하지 않나! 겨우 겨우 검색하고 등등 지랄잘 해서 5링크 이상 따라가서 겨우 받았다. -_ -; 다른 분들을 위해 원클릭 다운로드!


참조link: http://blog.naver.com/zechnith.do?Redirect=Log&logNo=40006029244
영화음악: Livin' La Vida Loca / Eddie Murphy & Antonio Banderas

이노센스 (Innocence) http://www.innocence-movie.co.kr/
: 공각기동대2, 오시이 마모루의 9년간 공백을 깨고 만든 애니메이션. 일단 그래픽은 죽을정도로 아름답다. 영화 내용은 상당히 난해하다. 대사를 생각하다가 씬을 놓치는 경우가 발생하는 애니메이션. 10월 8일 개봉. 극장에서 한번 봐야겠다. 이넘 한정판 dvd가 탐이 좀 나긴 하던데..;

반 헬싱 (Van Helsing, 2004) http://www.vanhelsing.co.kr/
: 늑대인간과 뱀/파이어의 싸움. 영상은 봐 줄만하다. 환타지물이 이정도 퀄리티만 나와준다면 만족. 알아둬야할 점은, 반 헬싱의 소설 '드라큐라'에 나오는 가장 인물이고, 반 헬싱역을 X-Men의 울버린이 맡았다는 점.

아는여자 http://www.iknowgirl.co.kr/
: 이나영 주연. 끝 영화설명은 다했다. 여러 흥미요소를 가진 재밌는 영화. 게다가 이나영까지 나오니! 오버 조금 하면 2004년 최고의 영화-_ -;;; 듣기로는 네멋, 아일랜드의 작가가 이 시나리오작가라던데.

여친소 (Windstruck, 2004) http://www.yeochinso.com/
: 재미 없다. 끝-_ -; 그러고 보니 영화가 재미없을뿐만 아니라, 영화의 두 주연도 요즘 상당히 재미 못보고 있다. 그래도 전지현은 이쁘다.

아이, 로봇 (I, Robot, 2004) http://movie.naver.com/search/movie.php?code=C8420
: 팝콘 SF 무비. 정말 스토리의 두께가 1mm. 2035년 로보트가 보편적으로 이용되는 사회. 어떻게 아이작 이시모프의 원작이 망가졌는지 원작을 읽어보고 싶은 느낌이 강하게 든다. (스타쉽트루퍼스도 원작과 영화는 너무나 동떨어졌다.) 뭐 그래도 액션영화라고 생각한다면 좋은 평점을 기대할 수 도 있다.

포스팅 예고: 다음은 인터렉티브 미디어들

ps 저녁에 선물로 파리바게트 케잌 4조각을 받았는데......... 후우...... 도저히 참을수없는 맛이군요. 나도 모르게 신음 소리를 낼정도로 맛있었음;

사랑니.

Trackbacked to 으...! from xecode.com

사랑니 그후.

 어제 실밥을 뽑고, (2가닥. 보통은 사랑니를 뽑아도 꼬메지 않지만, 옆으로 누워서 잇몸의 상처부위가 클경우 꼬메는 걸로 생각된다.) 완전히 사랑니의 고통으로부터 자유로워졌다. 하지만, 쌍쌍바같은 사랑니덕에 어금니 윗부분이 썩었다. -_ -;

 사랑니를 뽑은 부분의 뼈와 신경세포들이 완전히 치유되면 그 후에 치료해야 한단다. -_ -;

 한가지 다행인점은 내가 사랑니 발치로 인한 고통을 거의 안느꼈다는 것이다. 운이 없으면 발치시에도 마취효과가 미미하여 고통스럽고 뽑은후에도 약 2주간 아플 수 있다는 것이었다. 이걸 감안한다면 난 행운아?-_ -; 뽑을때하나도 안아팠고 (물론 기분은 가히 좋진않다. -_ -) 그후에도 페인킬러를 졀묘한 타이밍에 제대로 복용하였는지 거의 고통을 느끼진 않았다.

 아무튼 닝겔 호로관 계산기같은 십색볼펜 사랑니를 잘 뽑아서 다행으로 생각한다.


== 갖 도려낸 심장이 팔딱팔딱 뛰듯히 생상한 증거자료 ==

DSC00383.JPG
[ 이넘이 오른쪽 아래에서 나를 집중 공략했던-_ - 사랑니다. 제대로 누워서 앞을 향해 절을 하고 있다. 그리고 앞에 나있던 모든 이를 밀었다. 그리고 덤으로 어금니에게 싱싱하게 썩을 기회도 마련해주었다. 저렇게 흉악범 사랑니기 떄문에 뽑는데 10분 정도 걸렸다. 윗니도 누워있었는데 밖