mpl::is_vector

자료/내자료 2009/02/17 19:51
template<typename T>
struct is_vector_impl
{
enum { value = false };
};

template<typename T>
struct is_vector_impl< std::vector<T> >
{
enum { value = true };
};

template<typename T>
struct is_vector
{
enum { value = is_vector_impl< boost::remove_volatile< boost::remove_const< boost::remove_reference<T>::type >::type >::type >::value };
};

BOOST_STATIC_ASSERT( (is_vector<int>::value == false) );
BOOST_STATIC_ASSERT( (is_vector< std::vector<int> >::value == true) );
BOOST_STATIC_ASSERT( (is_vector< const std::vector<int> >::value == true) );
BOOST_STATIC_ASSERT( (is_vector< std::vector<int>& >::value == true) );
BOOST_STATIC_ASSERT( (is_vector< const std::vector<int>& >::value == true) );

레이옷 블로그에 댓글 달고 있다가 자꾸 글자들을 먹어버려서 여기에 포스팅-_-;
크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > 내자료' 카테고리의 다른 글

mpl::is_vector  (2) 2009/02/17
SPE 길찾기용 지형구조 - V2  (1) 2007/02/22
SPE V1 - 길찾기용 지형구조  (9) 2006/12/10
게임을 위한 GUI모듈  (4) 2006/07/31
MSB/LSB template  (0) 2006/05/18
is_template  (0) 2006/05/10
Posted by 쑥갓
TAG MPL
http://www.codeproject.com/gdi/fontfile.asp

이거 못찾았으면 무식하게 폰트 파일 다 열어보는 코드를 만들뻔 했다-ㅅ-;
요새는 정말 구글신 없이는 못살겠다;

덤으로 fonts폴더 경로명 가져오기
 TCHAR szFontPath[_MAX_PATH];
 if( SHGetFolderPath( NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, szFontPath ) == E_FAIL )
  return false;
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 쑥갓
http://www.catch22.net/tuts/editor11.asp

Brand new tutorial series, covering the design and implementation of Neatpad - a text editor written using pure C/C++ Win32 techniques. The entire range of functionality is covered - text file loading, undo and redo, unicode, user-interface details and memory management techniques.

Uniscribe관련 내용이 설명되어 있다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 쑥갓
TAG Uniscribe

bugtrap bugfix

자료/Program 2007/04/10 21:55
저번에도 새버전을 한번 받았었는데 CrashExplorer에서 콜스택 추적이 안되길래 안썼었는데..
이번버전도 그러길래 보니까 버그가 있네요;;
#ifdef 하다가 실수한 부분이;;;;;

수정버전 빌드해서 올려놉니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > Program' 카테고리의 다른 글

bugtrap bugfix  (2) 2007/04/10
bugtrap 소스공개  (6) 2007/04/10
Microsoft® Visual Studio® 2005 Service Pack 1  (0) 2006/12/16
스칼렛 2.0 - dds와 알파채널을 지원 하는 이미지뷰어  (0) 2006/10/18
멋진 HeightMap툴  (0) 2006/10/11
Catch all bugs with BugTrap!  (3) 2006/08/03
Posted by 쑥갓
TAG BugTrap
Version: 1.2.2654.37769
Date: Mon, 9 Apr 2007 03:58:59 UTC

기존의 정책을 바꾸고 개발자님께서 소스를 공개하여 주셨다.
새버전 받으러 들어갔더니 소스까지 있더라
감사하다

웹사이트가 개발자 개인PC라 좀처럼 들어가기 힘든관계로(근 3일만에 들어갔다;;;)
다운로드 파일들은 첨부해둔다

크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > Program' 카테고리의 다른 글

bugtrap bugfix  (2) 2007/04/10
bugtrap 소스공개  (6) 2007/04/10
Microsoft® Visual Studio® 2005 Service Pack 1  (0) 2006/12/16
스칼렛 2.0 - dds와 알파채널을 지원 하는 이미지뷰어  (0) 2006/10/18
멋진 HeightMap툴  (0) 2006/10/11
Catch all bugs with BugTrap!  (3) 2006/08/03
Posted by 쑥갓
TAG BugTrap

http://www.codeproject.com/useritems/STL_string_util.asp

바로 쓸 수 있는 코드들이 꽤 많다.
stl과 템플릿에 아무리 익숙해져도 이런정도까지의 활용은 쉽지 않다.
아무래도 이런 정도의 내용이 되버리면 익숙한 api에 기대기 마련이다.
잘 봐두면 스트링쪽 레벨업이 될듯

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 쑥갓
http://msdn2.microsoft.com/ko-kr/library/f9t8842e(VS.80).aspx

크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > Article' 카테고리의 다른 글

Design and Implementation of a Win32 Text Editor  (0) 2007/06/12
Utilities for STL std::string  (1) 2007/03/27
/ENTRY(진입점 기호)  (2) 2007/03/01
Compiler Support for Type Traits  (0) 2007/02/13
Subversion(SVN)과 Mantis의 연동  (2) 2007/01/05
라그나로크2 클라이언트 분석  (2) 2006/12/31
Posted by 쑥갓
혹시 궁금해 하시는 분이 계실까봐 스샷 몇장올립니다.
자세한 내용은 일단 http://www.larosel.com/209 를 참고하세요..;

사용자 삽입 이미지

대략 이런 형태가 나왔습니다.

사용자 삽입 이미지
원래는 이런 형태죠;;

사용자 삽입 이미지
와이어 프레임은 이런 느낌입니다.

사용자 삽입 이미지
걸을수 있는 바닥면에 대한 데이터도 여전히 있습니다.

사용자 삽입 이미지
마을전경은 대략 이런느낌;;

점점 김성민씨의 Space Filling Volume와 모냥이 비슷해집니다..;;

일단은 버전2로 올라오면서 용량 최적화가 많이 됐습니다.
이전 구조에 공간데이터를 넣었으면 좌절할만한 용량이-_-;;

일단 기본설명은 버전1에서 설명했으니 생략하도록 하겠습니다..;

데이터가 같은 셀들을 묶어서 용량최적화를 했고..
공간의 데이터를 가지고 있을 수 있도록 내용을 추가했습니다.
알고리즘은 V1에서 높이만 뽑던걸 Pair로 뽑도록 변경한거라 별다른 내용은 없습니다.

렌더링 되고 있는 화면은 닫힌 공간(실제 공간을 차지하고 있는)을 렌더링 하고 있지만
실제 데이터는 열린 공간을 가지고 있습니다.
닫힌 공간으로는 충돌처리를 할수가 없게 되어 버리더군요;;
이유는 캐릭터가 점..; 이라면 닫힌공간에 부딪히나..를 검사하면 되지만
캐릭터가 세로부피가 있기 때문에(머 대략2m라고 치고) 이 공간에 내가 들어갈 수 있나..를 검사하도록 만들어야 합니다.
다리가 있다고 쳤을때 다리하고 지면이 1미터 간격밖에 안되는데 지나가 버리면 이상하겠죠;;

거창하게 공간데이터 이긴 하지만 실제 사용은 높이만 가지고 있던 내용이랑 큰차이가 없어서 3D상의 공간 충돌뿐만이 아니라 공간상의 길찾기도 내용만 약간 수정해서 그대로 넣어도 사용하는데 지장은 없습니다. 속도적인 부분도 가만할수 있을정도일듯 싶습니다.

잠수나 날아다니거나 하는경우는 사실 1인칭형으로 이동이 될거기 때문에 3D길찾기가 필요한 경우는 없겠지만 혹시나 수중전투-_-같은 경우는 필요하겠죠..; 혹시 몹이 하늘을 날아다니거나..하는 경우도 써먹을수도 있을거고..;;

그리고 걸을수 있는 데이터...의 경우에는 공간데이터와는 따로 가지고 있습니다.
공간데이터쪽에 플래그 같은걸 넣어도 되지만 길찾기 할 때 속도를 높이려고 그냥 중복해서 가지고 있습니다.;;

전과 달라진 내용은 지면데이터 쪽에도 지면에 대한 공간으로 가지고 있습니다.
혹시 캐릭터나 몬스터 이동시 높이에 대한 부피체크(위에서 설명한)가 들어갈 일이 있을까봐 같이 넣었습니다. ( 사실은 따로 만들기 귀찮아서;; )

머 그외에는 버전1에 비해 특별한 내용은 없군요..;

사용자 삽입 이미지

용량을 궁금해 하실까봐 용량을 캡쳐했습니다.
dat파일이 실제 서버에서 사용하는 파일입니다.

메모리 구조와 파일구조가 거의 비슷해서 실제 셀데이터 올릴때 vector에 공간차지하는거 약간 1~2메가 정도 말고는 실제 메모리에 올라가는 용량 그대로입니다.

4020*4020 1미터 단위 4개..와 2040*2040 1미터 단위 2개..맵이 185메가 정도군요..;
원래는 좀 더되야 하는데 내부에서 중복셀을 줄이기 위해 16분할로 데이터를 가지고 있습니다.
용량의 대부분이 셀데이터와 실제 지형을 연결시켜주는 인덱스 데이터이기 때문에
중복셀이 많으면 4바이트를 쓰고 적으면 1, 2바이트를 사용하기 때문에 분할하는것과 안하는것이 차이가 꽤 납니다. ( 많게는 2배까지 )

사실 실제 서버는 존서버 방식이라 한서버에 몇개의 존만 올라가서 그냥 써도 상관은 없지만 나중에 테스트 서버같은데는 모든존을 다 올려버리게 될거 같아서 가능한 다이어트를 했습니다.

_ST가 붙은 파일들은 클라이언트용 패킹파일입니다.
파일 내용자체는 100%같습니다.

사용자 삽입 이미지
안에는 대략 이런 모냥이죠;;

서버파일은 그냥 파일을 줄줄줄 붙여논거 밖에 없습니다. 파일 합치는 방식만 다르고 실제파일은 같습니다.

클라이언트용 패킹파일샷은 압축했을때 얼마나 압축이 되나.. 참고하시라고 올렸습니다.
185메가 짜리가 72메가 가량이 되었군요..
실제 클라이언트에서 그대로 쓰는 구조라 압축률이 낮은걸 쓰고 있어서 저정도 용량입니다.
zip방식으로 걍 압축하면 50메가 정도입니다.

대충 내용은 이정도입니다..
소스를 만들어서 배포를 하거나 할 예정은 없습니다..;;;; ( 이 내용외의 기본 내용들을 만들어서 붙이기도 귀찮고 같이 딸려있는 다른 모듈들;; 덕분에;; )

알고리즘은 내용에 설명을 다 해놨으니 공간개념이 있는 프로그래머분들은 아마 내용만 보고 만드시는데 별 지장은 없을듯 싶습니다.

실제 소스도 공간데이터 만드는 부분 200라인 정도 데이터 구조랑, 로드, 세이브가 500라인정도밖에 안됩니다.

혹시 궁금하신 내용이 있으면 답변 해드리도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > 내자료' 카테고리의 다른 글

mpl::is_vector  (2) 2009/02/17
SPE 길찾기용 지형구조 - V2  (1) 2007/02/22
SPE V1 - 길찾기용 지형구조  (9) 2006/12/10
게임을 위한 GUI모듈  (4) 2006/07/31
MSB/LSB template  (0) 2006/05/18
is_template  (0) 2006/05/10
Posted by 쑥갓
TAG SPE
http://msdn2.microsoft.com/en-us/library/ms177194.aspx

gpg에 답변달다가 홈피에도 없는것 같길래 포스팅
boost를 대체할수 있는 기본 키워드들이 꽤 있다.
컴파일러에서 처리를 해주니 왠지 boost보다 가볍지 않을까...하는 느낌..
크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > Article' 카테고리의 다른 글

Utilities for STL std::string  (1) 2007/03/27
/ENTRY(진입점 기호)  (2) 2007/03/01
Compiler Support for Type Traits  (0) 2007/02/13
Subversion(SVN)과 Mantis의 연동  (2) 2007/01/05
라그나로크2 클라이언트 분석  (2) 2006/12/31
[펌] 디스크 캐쉬 제대로 알기  (1) 2006/12/29
Posted by 쑥갓

출처 : http://magenta.egloos.com/1454578

Subversion(SVN)과 Mantis의 연동

1. 연동하려는 SVN 저장소에 속성 설정합니다.
bugtraq:label = issue
bugtraq:url = http://localhost/mantis/view.php?id=%BUGID%
bugtraq:message = issue %BUGID%
bugtraq:warnifnoissue = true

2. SVN 저장소의 hooks디렉토리에 다음에 나오는 배치 명령이 들어있는 post commit hook 파일 생성(C:\Repository\hooks\post-commit.bat). SVN이 commit되는 동안에 Mantis에 이슈노트로 추가될 내용들을 넣습니다.
REM Post-commit hook for MantisBT integration
SET REPOS=%1
SET REV=%2
SET DETAILS_FILE=C:\Repository\GNIS4M\svnfile_%REV%
SET LOG_FILE=C:\Repository\GNIS4M\svnfile_%REV%_Log

echo ****** Source code change ******>>%DETAILS_FILE%
svnlook info -r %REV% %REPOS%>>%DETAILS_FILE%
echo SVN Revision:%REV%>>%DETAILS_FILE%
svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%

C:\APM_Setup\Server\PHP4\php.exe C:\APM_Setup\htdocs\mantis\core\checkin.php <%DETAILS_FILE% >%LOG_FILE%
DEL %DETAILS_FILE%
DEL %LOG_FILE%

3. 다음 내용을 Mantis config_inc.php에 추가합니다.
#Integration to SVN
$g_source_control_notes_view_status = VS_PRIVATE;
$g_source_control_account = 'Administrator';
$g_source_control_set_status_to = OFF;
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";

추가로 연동할 SVN저장소에는 1,2만 반복하면 됩니다.

해보니까 연동은 잘되는데 한글이 깨지는 문제가 생깁니다.

Windows의 Command Prompt는 기본적으로 시스템의 locale을 따르는데..

그게 euc-kr입니다...

문제는 연동배치파일에서 svnlook을 쓰는데 이 프로그램은 Command Prompt의 Locale에 맞춰서 문자열을 출력한다는거..

우리의 Mantis는 UTF-8을 써서 한글을 표현하기 때문에...euc-kr로 된 SVN 정보들은 다 깨집니다.
(물론 euc-kr로 할수도 있지만...그러면 Mantis가 자꾸 워닝을 뿌리기때문에...)

해결책으로 Mantis의 Core디렉토리에 있는 checkin.php를 직접 수정합니다..

42번째 줄의...

while ( ( $t_line = fgets( STDIN, 1024 ) ) ) {

...를

while ( ( $t_line_euc = fgets( STDIN, 1024 ) ) ) {
        $t_line = ( iconv("EUC-KR","UTF-8",$t_line_euc)?iconv("EUC-KR","UTF-8",$t_line_euc):$t_line_euc );

...로 바꾸니까 해결되는군요..

윈도우2003서버에서 Mantis 1.0.6과 svn 1.4.0으로 작업했습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License

'자료 > Article' 카테고리의 다른 글

/ENTRY(진입점 기호)  (2) 2007/03/01
Compiler Support for Type Traits  (0) 2007/02/13
Subversion(SVN)과 Mantis의 연동  (2) 2007/01/05
라그나로크2 클라이언트 분석  (2) 2006/12/31
[펌] 디스크 캐쉬 제대로 알기  (1) 2006/12/29
[펌] Resource Management Best Practices  (0) 2006/11/02
Posted by 쑥갓