이글루스 로그인
Luabind, lua garbage collection 에서 삭제되지 않는 객체

template 특화를 통해 구현하였군요. http://www.gamedev.net/community/forums/topic.asp?topic_id=525692 
그닥 문제는 없어 보입니다만, 역시 잘 모르고 덤벼들어서 그런지 lua 가 계속 말썽입니다. OTL

#define LuaClassNonDeletable(in_class)
namespace luabind{namespace detail{
template<> struct delete_s<in_class> {static void apply(void* ptr) {}};
template<> struct destruct_only_s<in_class> {static void apply(void* ptr){}};
}}

LuaClassNonDeletable(Object)
LuaClassNonDeletable(Cube)
LuaClassNonDeletable(Actor)

Int Expose_Objects(lua_State* in_lua)
{
            module(in_lua)
            [
                  /// Base class for all classes.
                  class_<Object>("Object")
                  .def(constructor<>())
                  ,
                  class_<Actor, Object>("Actor")
                  .def(constructor<>())
                  .def("SetGeometry", &Actor::SetGeometry)
                  ,
                  class_<Cube, Object>("Cube")
                  .def(constructor<Float, Float, Float>())
            ];

  return 0;
}

by 신동호 | 2009/06/12 18:20 | dead P society | 트랙백 | 덧글(0)
Post-Morden Debugging Your Application with Minidumps and Visual Studio.NET

원본 출처: http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx?fid=3419&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=1246024

Summary: 고객쪽에서 여러분의 응용프로그램이 다운되었다고 하더라도 minidumps 와 Microsoft Visual Studio.NET 디버거를 이용하여 디버깅을 할 수 있습니다. 이 아티클은 어떻게 minidumps 가 동작하는지, 어떻게 여러분의 프로그램이 다운될 때 덤프 파일을 생성할 수 있는지, 어떻게 덤프 파일을 Visual Studio.NET 에서 읽을 수 있는지에 대해 설명하고 있습니다. Minidumps 는 윈도우 운영체제와 Visual Studio.NET 과 같은 응용프로그램들의 안정성을 향상시키기 위한 Microsoft 의 에러 리포팅 프로그램의 핵심입니다. 이 아티클은 또한 어떻게 시스템 컴포넌트 중에 자동적으로 심볼을 찾는 Microsoft 심볼 서버를 사용하는지 설명하고 있습니다. 이 아티클은 여러분이 Win32 와 C++ 프로그래밍을 사용하고 있다고 가정합니다.



이어지는 내용
by 신동호 | 2009/06/10 19:51 | dead P society | 트랙백 | 덧글(0)
VC2008 환경설정 정리

제가 활용하고 알고 있는 것 위주로 간략하게 정리해 보았습니다.



이어지는 내용
by 신동호 | 2009/06/05 15:37 | dead P society | 트랙백 | 덧글(0)
Lua Tutorial 2, Programming in Lua
참조 문서: http://lua-users.org/wiki/TutorialDirectory

본 문서는 Lua Tutorial 의 일부를 발췌하여 간단하게 lua 문법과 활용 예제를 정리하고 있습니다.

이어지는 내용
by 신동호 | 2009/05/26 15:46 | dead P society | 트랙백 | 덧글(0)
VisualStudio2008 에 cg 파일 highlight 기능 넣기
1. NVIDIA 사이트에서 최신 cg toolkit 을 다운로드 한 뒤 설치합니다.
2. 설치 폴더(예, C:\Program Files\NVIDIA Corporation\Cg\msdev_syntax_highlighting)로 이동하여 usertype.dat 파일을 VisualStudio common7\ide(예, C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE) 에 복사합니다.
3. 현재 버전까지는 vs9 에 등록하는 레지스트리 파일이 없으므로, vs8 레지스트리 파일의 사본을 만들고 텍스트 에디터로 사본을 수정합니다.
4. 아래와 같이 되어 있는 구문을,

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Languages\File Extensions\.cg]
@="{B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}"

다음과 같이 간단하게 수정하면 됩니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Languages\File Extensions\.cg]
@="{B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}"

5. 수정된 사본을 실행하여 레지스트리에 사용자 데이터를 등록합니다.
6. 이제 VisualStudio 2008 에서 cg 의 키워드가 하이라이트 된 것을 확인할 수 있습니다.
by 신동호 | 2009/04/28 13:24 | dead P society | 트랙백 | 덧글(0)
GPU Gems 3, Chapter 27. Motion Blur as a Post-Processing Effect
원문: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html

본 문서는 GPU Gems 3 권, 27장에 나오는 깊이 버퍼를 이용한 포스트 프로세싱 모션 블러에 대한 논문을 번역하고 있습니다. 깊이 버퍼만 있다면 이처럼 여러가지 재미있는 것들을 할 수 있군요:D 최근 논문들은 이처럼 깊이 버퍼를 활용한 내용이 많은데 이는 directx10 에 추가된 기능이기도 하다는 군요. directx9 에서는 rendertexture 로 만들어 줘야 할 것 같습니다.



이어지는 내용
by 신동호 | 2009/04/20 17:07 | dead P society | 트랙백 | 덧글(0)
엔진 개선
현재 사용하고 있는 엔진은 오픈소스 게임엔진인 Ogre3D 이지만 전체 시스템을 구성하기 위하여 database, script, statechart, management factor 를 추가로 구현하였다. 아래는 그간 구성하면서 느꼈던 점과 개선안을 정리한 개인적인 문서이다.

1. 에디터를 위한 UI 는 database 와 자동으로 연결이 되어있어야 한다. 즉, 어떤 기능을 만들고 table 을 만들어 수정가능하도록 구현하였다면, 새로운 기능의 table 을 수정하기 위한 에디터가 필요하게 되는데 이 작업이 매우 번거롭다. 최종 사용자가 아닌 내부 개발자 혹은 디자이너, 기획자가 사용할 에디터이므로 더더욱 미적 감각보다는 database 를 자동으로 반영하여 에디터를 자동으로 생성해 내는 쪽이 편리할 것 같다. 두번 이상의 반복은 죄악이다.

2. script, state, database 는 게임 안에서 바로 수정가능해야 한다. 윈도우로 나갈 필요도 없다. 직접 구현을 해보고 적용을 해보니 이 컨셉이 생각보다 유용하다. 좀 더 강력하게 보완해야 할 것 같다.

3. database 는 boost seriallizer 여 연동하여 xml 파일 시스템을 사용하고 있는데, 정의와 버전관리가 번거롭다. 새로운 테이블은 언제든지 수정되거나 추가/삭제 될 수 있으며 이는 기존 데이터의 무결성에 영향을 주어서는 안되며 컴파일 없이 이루어져야 편리하다. 마찬가지로, boost 를 적극적으로 사용하다 보니 성능은 우수하지만 컴파일 타임이 늦어지고 serializer, statechart 등이 빌드에 종속적이라는 것이 매우 큰 단점이 되었다. 성능적인 우수함을 손해보더라도 database 와 state 는 동적으로 제어 가능한 것이 좋을 것 같다.

4. 모든 모듈은 언제든지 붙였다가 땔 수 있어야 한다. 특히 게임상에서 listener 와 같은 녀석들을 효과적으로 제어할 수 있는 기능은 개발의 국제화(외국 프로그래머 및 외주에서 작업)에도 도움이 된다. 이는 모듈화를 더욱 잘게 쪼갠 개념인데 어떤 라이브러리 및 기능단위로 나뉘는 것보다 더 작은 규모인, "작업" 단위의 모듈을 말하는 것이다. 이렇게 잘게 쪼게어진 모듈은 자체가 단위 테스트가 될 수도 있다.

5. 이번 엔진을 설계할 때, 큰 줄기를 statechart, script, database, listener 로 삼았는데 개념적 확장이 필요할 것 같다. 기본 개념은 statechart 는 상태 진입/종료 시 script 를 호출하고 스스로는 자신의 상태와 어떤 상태로 전이 될 수 있는 지 등의 기본 개념만 알고 있다. script 는 누가 자신을 실행했는지, 현재가 어떤 상황인지는 모르고 그저 일하라고 하면 자신을 일만 하면 된다. database 는 말 그대로 database 로써 script 및 listener 에서 상수로써 접근하여 사용한다. listener 는 "작업" 단위로써 랜더 루프에 언제든지 꼽거나 뽑을수 있는 형태로 구현하였다. 

6. UI 는 역시 flash 다! flash 를 사용할 경우 가장 큰 이득은, 개발자가 UI 를 "완전"하게 무시할 수 있다는 데 있다. 
by 신동호 | 2009/04/09 10:18 | what's the aronze? | 트랙백 | 덧글(0)
그간 작성하다 말았던 비공개 포스트를 모두 공개로 바꿉니다.
마저 작성하자니 쉽지가 않아서, 그냥 공개로 바꿉니다.
by 신동호 | 2009/04/01 10:10 | what's the aronze? | 트랙백 | 덧글(0)
Visual Studio 2008 로 C/C++ 공부 시작하기

많은 사람들이 열정을 가지고 C/C++ 에 도전을 하지만 C/C++ 이라는 녀석이 생각보다 녹록치가 않아서 정복까지는 고된 여정이 기다리고 있습니다. 


본 문서는 처음 C/C++ 에 도전하는 도전자들을 위하여 MS 에서 제공하는 최신 컴파일 환경인 Visual Studio 2008 에 대해 간단히 알아보고, vs2008 의 기능을 이용하여 어떻게 문제를 분석하고 해결할 수 있는지에 대하여 간단하게 정리하고 있습니다.




이어지는 내용
by 신동호 | 2009/04/01 10:08 | dead P society | 트랙백 | 덧글(8)
다소 싼티나는 논문 분석 요령
수많은 논문과 최신의 기술들이 공개가 되어 있음에도 무조건 어려울 것이라는 거부감으로 인해 클릭하지 않았던 경험이 있으실 겁니다. 저 역시 미약한 지식과 짧은 가방끈으로 인해 아직까지도 분석에 어려움이 많이 있습니다만, 그 동안 분석하면서 느꼈던 내용을 짧게 정리해 보았습니다.

이어지는 내용
by 신동호 | 2009/02/12 20:17 | dead P society | 트랙백 | 덧글(0)
[ogre3d] Profiler
오거 프로파일러에 대한 간단한 사용 방법입니다.

1. 오거 프로파일러를 사용하려면 ogre 를 새로 빌드해야 합니다. OgreConfig.h 에 OGRE_PROFILING 0 을 1 로 바꾸고 빌드합니다.
2. 실제 프로젝트의 원하는 코드에 OgreProfiler.h 를 인클루드 하고 프로파일러 매크로를 사용하여 등록합니다. 
    OgreProfile("test");
   와 같이 적으면 해당 코드가 있는 지역 범위를 프로파일링 합니다. 특정 코드만 프로파일링 하는 경우,
    OgreProfileBegin("test");
    ...
    OgreProfileEnd("test");
   와 같은 메크로를 사용합니다.
3. 프로파일링 결과를 log 로 남기려면 원하는 시점에 Ogre::Profiler::getSingleton().logResults(); 를 호출하면 됩니다.
4. 실제 게임 화면에 비주얼하게 결과를 표시하고 싶다면 Ogre::Profiler::getSingleton().setEnabled(true); 를 호출합니다.
5. 프로파일링 결과는 기본값으로 퍼센트로 표기합니다만, Ogre::Profiler::getSingleton().setDisplayMode( Ogre::Profiler::DISPLAY_MILLISECONDS); 와 같이 시간으로 바꾸어 볼 수도 있습니다.

1번 정정합니다. 오거 프로파일러 메크로를 사용하거나 기본 프로파일링 찍힌 녀석들을 못쓰는 것 뿐이군요. 걍 오거 프로파일러는 빌드 안하고도(Ogre::Root 에서 생성을 안하게 됩니다) 직접 생성하여 사용 가능합니다.


by 신동호 | 2009/02/11 01:29 | ogre3d | 트랙백 | 덧글(0)
[build] 빌드 시간에 관한 고찰
제가 사용하고 있는 tip 을 간략하게 정리해 보도록 하겠습니다.

이어지는 내용
by 신동호 | 2009/01/30 15:39 | dead P society | 트랙백 | 덧글(0)
[dos] batch
Visual studio 혹은 간단하게 사용할 수 있는 batch 명령어 중에 유용한 옵션을 정리했습니다.


이어지는 내용
by 신동호 | 2009/01/29 11:44 | dead P society | 트랙백 | 덧글(0)
[gpu gems] 온라인 공개
GPU Gems 가 1, 2, 3 권 모두 온라인으로 공개가 되었네요. -_-; 비싸게 주고 샀는데.. NVIDIA developer 가시면 열람이 가능합니다.


by 신동호 | 2009/01/23 19:04 | dead P society | 트랙백 | 덧글(0)
[Tip] 시너지2를 대체할 Input Director
키보드 마우스 공유 프로그램인 시너지2의 경우 나온지 오래 되어서 여러 가지로 불편함이 많았습니다만, 새롭게 http://www.inputdirector.com/ 에서 시너지2 를 대체할 수 있는 녀석이 나왔더군요. 사용 방법은 시너지2를 셋팅했던 사람이라면 간단하게 할 수 있을 겁니다. 메인을 마스터로 잡고 옆에 쓸거를 슬레이브로 잡고 아이피만 엮어주면 간단하게 셋팅 완료됩니다.

일딴 서로간에 접속 속도와 성능이 좋고 이거 저거 신경쓸 필요가 없다는 것이 강점인것 같아 유용하게 쓰고 있습니다.
by 신동호 | 2009/01/23 18:53 | dead P society | 트랙백 | 덧글(0)
google code
이전부터 svn 서버를 운영하고 싶었으나 호스팅 할 수 있는 방법이 없어 포기했었습니다. 올해에는 ogre3d 를 분석하면서 공부를 해보고자 간단한 프로젝트를 만들 svn 을 다시 찾아 헤메이던 중, google code 를 발견하고 등록했습니다. 주소는 

https://whapsody.googlecode.com/svn/trunk/ 요건 svn 주소 입니다.

아직 아무런 내용이 없지만, 간단한 테스트 및 공부를 할 수 있는 환경을, 공부도 하면서 만들어 볼까 생각하고 있습니다.

즐거운 고민이군요:D
by 신동호 | 2009/01/07 21:05 | what's the aronze? | 트랙백 | 덧글(0)
[graphic] 감마 설정(펌)
감마 설정과 관련한 방법을 찾던 충 우연히도 쇼핑사이트에서 괜찮은 방법을 찾게 되었습니다. 이야기를 하고 가져온 이미지가 아님을 밝히며 출처는 표기 합니다만 그래도 저작권에 문제가 있다면 자삭토록 하겠습니다.

by 신동호 | 2008/12/18 15:25 | dead P society | 트랙백 | 덧글(0)
노력가

서른 줄에 닿도록 살아오면서, 나름의 기준으로 세상을 보았다. 내가 본 세상은 결코 만만치 않은 어떤 것이었다. 아무리 똑똑한 사람이라도, 아무리 노력하는 사람이라도 "성공" 을 보장받을 수 있는 사람은 없었다. 아무것도 확실한 것이 없고 어떤 노력은 무의미해 보이는 경우 조차 있었다. 나는 왜 노력가로 살아가야 하는가.

"성공" 을 보장 받을 수 있는 방법은 찾지 못하였지만, 확실하게 "성골할 수 없는" 방법은 알아내었다. 또한, "성공할 수 없는" 방법을 통해 거꾸로 내가 노력가로 살아가야 하는 이유를 찾게 되었다.

확실하게 "성공할 수 없는" 방법, 그것은 노력하지 않고 살아가는 것이다.




세상이 바뀌지 않는다고 존재하지 않는 그 무언가를 허망하게 탓하고 있을 것인가. 혹은 나의 힘으로 어찌할 수 없는 거대한 무엇을 원망하며 살아 갈텐가.

하지만 잘 생각해 보라. 세상을 바꿀 수 있는 방법은 두 가지나 있다. 나를 바꾸거나, 내가 바꿀 수 있는 작은 무언가 부터 바꾸어 나아가는 것. 둘 다 지금 당장 손쉽게 시작해 볼 수 있다.
by 신동호 | 2008/12/14 16:07 | what's the aronze? | 트랙백 | 덧글(0)
[Core Techniques and Algorithms in Game Programming] Chapter 16. Chinematography
본 문서의 원본은 http://gamealgorithms.tar.hu/index.html 에 있으며 관심 있는 부분인 "영화적 촬영 기법" 을 번역하였습니다.

이어지는 내용
by 신동호 | 2008/12/04 08:18 | dead P society | 트랙백 | 덧글(0)
[FMOD Ex] Tutorial 2, Getting started
상용 사운드 엔진인 FMOD Ex(이전 함수 버전에서 업그레이드 하여 나온 새로운 엔진으로 클래스 기반의 설계가 되어 있습니다) 의 Tutorials 를 번역하였습니다.

FMOD Ex 는 상용 엔진이지만 개인/학술적으로 사용하는 사용자에 한해서 무료로 모든 기능을 사용할 수 있는 전체 엔진을 공개하고 있습니다.

이어지는 내용
by 신동호 | 2008/11/30 22:54 | dead P society | 트랙백 | 덧글(0)
[FMOD Ex] Tutorials 1, 용어/개본 개념
상용 사운드 엔진인 FMOD Ex(이전 함수 버전에서 업그레이드 하여 나온 새로운 엔진으로 클래스 기반의 설계가 되어 있습니다) 의 Tutorials 를 번역하였습니다.

FMOD Ex 는 상용 엔진이지만 개인/학술적으로 사용하는 사용자에 한해서 무료로 모든 기능을 사용할 수 있는 전체 엔진을 공개하고 있습니다.

이어지는 내용
by 신동호 | 2008/11/30 20:34 | dead P society | 트랙백 | 덧글(0)
[site] 자주 가는 사이트 정리

개발(게임 개발 쪽에 집중되어 있습니다) 관련 사이트 링크 입니다. 대부분 많은 분들이 알고 있는 사이트 입니다만, 정리 겸 올립니다.

순서는 무작위 입니다.



이어지는 내용
by 신동호 | 2008/11/20 23:13 | dead P society | 트랙백 | 덧글(0)
[svn] 간단 정리

source control 이란 파일(코드)의 버전 관리를 제어하는 기술입니다.

현업에서 뿐만이 아니라 개인 프로젝트 용도로도 이제 source control 을 사용하는 것은 선택이 아닌 필수 요소가 되었다고 생각합니다. 수 많은 코드의 바다에서 헤엄치며 소모하던 프로그래머들의 시간을 극적으로 소거시켜 주는 고마운 친구이며 프로젝트의 크기가 커지면서 비약적으로 늘어나 버린 몬스터를 감당할 수 있는 유일한 버팀목이 되어주는 source control 입니다만, 몸에 좋은 약도 잘 알고 사용하지 않는다면 독이 되는 법입니다.

source control 을 구현한 여러 프로그램이 있습니다만, 일반적으로 MS 에서 개발하고 visual studio 에 add-on 되어 편리한 source safe 와 open source 진영에서 발전한 cvs/svn( 차이점: http://www.pushok.com/soft_svn_vscvs.php ) 등을 사용합니다.

제가 설명 드릴 source control 은 svn, 그 중에서도 윈도우 환경에서 편하게 다운 로드 하여 특별한 설치 없이 사용할 수 있는 tortoise SVN 으로 코드 뿐만이 아니라 이미지 파일 등의 모든 전역 자원을 관리하기에 유용한 도구 입니다.



이어지는 내용
by 신동호 | 2008/11/18 17:27 | dead P society | 트랙백 | 덧글(0)
Welcome to the fantastic Aronze Wiki world:D
새로 Wiki 를 open 하였습니다. 블로그에서만 자료를 정리하려니 인덱싱이 약해서; 기생 사이트는 mindtouch 라는 기업으로 무료 wiki 도 제공해서 하나 만들었답니다. 기능이나 UI 는 좋은데 좀 느립니다.

http://aronze.wik.is

심플하죠:p 앞으로 manual 을 번역하는 경우는 wiki 를 이용할 생각입니다. 많은 이용 바랍니다;;
by 신동호 | 2008/11/15 19:19 | what's the aronze? | 트랙백 | 덧글(0)
[Physx] timestep 관련

timestep 1/60 sec 인 경우,
첫 번째 루프에서 elapsed time 이 3/120 sec 들어왔다면 simulate 한번 하고 1/120 sec 이 남죠.
두 번째 루프에서 elapsed time 이 똑같이 3/120 sec 들어왔다면 이전에 계산하지 못한 1/120 sec 을 더해 2/60 sec 이므로 simulate 를 두 번 해야 합니다.

physx 에게 모든 계산을 맏긴다면 상관없지만 중간에 치고 들어갈 일이 있었는데 이거 몰라서 삽질 좀 했습니다.

by 신동호 | 2008/11/13 11:10 | dead P society | 트랙백 | 덧글(0)
[ogre] PerfHUD 간단하게 사용해 보기
1. NVIDIA 에서 PerfHUD 를 다운로드 받습니다. http://developer.nvidia.com/object/nvperfkit_home.html
2. 설치합니다.
3. PerfHUD 를 실행하여 단축키 지정 등 설정을 합니다.
4. ogre 로 만든 프로그램을 PerfHUD 파일로 드래그 앤 드롭합니다.
5. ogre 설정 다이얼로그에서 PerfHUD 를 yes 로 설정합니다.
6. 프로그램이 실행되면 3번에서 설정한 단축키로 PerfHUD 를 사용합니다.
by 신동호 | 2008/10/19 22:36 | ogre3d | 트랙백 | 덧글(0)
<< 이전 다음 >>
all rights reserved (c) 2004. aronze.egloos.com