posted by 쑥갓 2005.10.14 13:57

원래는 이따위로 성의 없이 나온다

Tools->Options->Text Editor->File Extension에가서 lua확장자를 Script Editor로 선택해서 Add해준다.
그리고, 다시 lua파일을 열어준다.

제대로 나오는건지는 모르겠지만 어쨋건 훨 낫다


'게임개발 > ' 카테고리의 다른 글

콤보박스 드롭박스 부분 크기 조절하기  (0) 2005.11.22
vs 2005의 for each  (0) 2005.11.07
VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11
Increase, Decrease Macro  (0) 2005.07.08
TAG
posted by 쑥갓 2005.09.07 10:23

사실 여태까지 png를 어따가 쓰는건지 몰랐다-_-;
그냥 파일포맷중 하나이겠거니... 했었는데..
알고보니 무손실압축에 알파채널을 지원하는 포맷이었다.

여태까지는 dxt포맷은 손실압축이라 퀄리티 저하가 되서 UI에 사용하지 못하고 tga파일을 사용하고 있었는데
tga의 경우는 이미지 자체의 투명도(transperent background - 투명 배경, 일명 격자 배경-_-)을 사용하는게 아니라 alpha채널을 뽑아내는 방식이라
디자이너가 마스크를 씌워서 투명도를 구워?내서 알파채널에 넣고 tga를 뽑는 번거로운 방식을 사용해야 했었는데
png는 투명도를 그대로 뽑아낼 수 있어서 디자이너의 편의성이 상당히 올라간다.

게다가, 512*512이미지가 tga는 1,025KB였는데 동일한 png이미지는(물론 tga의 알파채널을 다시 투명도로 바꾸는 법을 몰라서 대충-_- 투명도를 칠하고 테스트 했다.) 38KB밖에 안한다.
오오오! 무려 1/27의 사이즈!!!
투명도를 제대로 사용한다고 해도 1/10은 건질 수 있다는 얘기다 오호호
물론 UI가 심플한 디자인이라 압축률이 높은 거 같기는 하지만.

정확한 파일포맷스펙을 보지 않아서 어떨지는 모르겠는데
로딩할때 압축푸느라 시간이 꽤 걸린다는 풍문-_-이 있다.
복잡한 1024*1024짜리 이미지-_-a로 체감테스트-_-를 해봤는데 실제로 꽤 걸리는거 같다.
현재의 심플한 디자인의 이미지로 테스트 해보니 별 차이가 느껴지지 않았다~ 잇힝~
UI디자인은 보통 심플한 형태고, 실제 UI창이 뜨거나 할 때 좀 느리게 떠도 큰 상관없으므로
png로 가는게 좋을 것 같다.

속도상의 손해보다는 용량의 이득이 너무 크다-.ㅜ
용량이 줄면 풀버전의 용량도 적어지고 패치파일의 용량도 적어지고 설치시간과 패치시간도 적어진다.
풀버전과 패치파일의 용량이 적어지면 유저가 다운로드 받는 양이 적어진다는거고 CDN의 트래픽이 줄어들어 결국은 돈을 번다는 얘기다-_-;

물론 dxt를 쓸 수 있는곳은 dxt를 써야 겠지만 dds를 사용하지 못하고 이미지가 복잡하지 않은 UI의 경우는 딱 제격이다.

일찍 알았으면 좋았을걸 이라는 생각도 들지만 이제라도 알아서 다행이다. 아직 배포는 안됐으니까-_-;

낼 디자이너분한테 얘기해서 이번버전부턴 png로 가야겠다~ 잇힝~

PS1. 역시 클라이언트 프로그래머는 잡다한걸 많이 배워둬야 한다.
PS2. 클라이언트 프로그래머는 디자이너와 친해두는게 좋다.

'게임개발 > ' 카테고리의 다른 글

vs 2005의 for each  (0) 2005.11.07
VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11
Increase, Decrease Macro  (0) 2005.07.08
Two-Sided Polygons  (0) 2005.05.20
TAG
posted by 쑥갓 2005.07.11 04:56

나중에나중에나~중에 하려고 했던 SkyBox를 어쩌다가 하게되서
Cubemap을 이용해서 찍어보게 되었는데
일단 SetTexture한방에 렌더링 한방.. 이라는 매력적인 내용외에도 또 다른 숨겨진 내용이 있는걸 알게 되었다.

굳이 6면을 월드시점으로 구성해서 그릴 필요가 없다..라는 것인데.
스카이박스는 어차피 화면에 보이는 부분만이 전부이고 6면이라지만 어차피 텍스쳐는 한장인 관계로 화면 좌표를 가지고 슥슥슥 해서 3D텍스쳐 좌표를 구해버리면 화면을 가득 채우는 플랜 한장으로 렌더링이 가능하다! 라는 내용이다.

오호..이런게 가능할줄은..
dx예제의 스카이박스들이 다 이렇게 그리고 있었는데 왜 모르고 있었을까나.. ( 스카이박스를 고민해 본 적이 없었으니 모르지-_-; )
어쨋건 스카이박스가 속도를 많이 잡아먹는 부분은 아니었지만
그래도 퍼포먼스 향상이 기대됨. 잇힝-

'게임개발 > ' 카테고리의 다른 글

VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11
Increase, Decrease Macro  (0) 2005.07.08
Two-Sided Polygons  (0) 2005.05.20
nVidia 2005년 4월 뉴스레터 팁  (0) 2005.05.19
TAG
posted by 쑥갓 2005.07.08 03:38

   Sub IncreaseNumber()
       Dim objTextSelection As TextSelection
       objTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
       objTextSelection.Text = objTextSelection.Text + 1
   End Sub

   Sub DecreaseNumber()
       Dim objTextSelection As TextSelection
       objTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
       objTextSelection.Text = objTextSelection.Text - 1
   End Sub


의외로 종종 필요한 경우가 있다

Control +, - 에 세팅해 놓고 쓰면 좋다


'게임개발 > ' 카테고리의 다른 글

파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11
Increase, Decrease Macro  (0) 2005.07.08
Two-Sided Polygons  (0) 2005.05.20
nVidia 2005년 4월 뉴스레터 팁  (0) 2005.05.19
루프내에서 여러번 호출되는 함수의 First Time구분하기.  (0) 2005.04.11
TAG
posted by 쑥갓 2005.06.22 03:43

performer는 히승군에게 배운건데

클래스내의 컨테이너에 먼가를 조작하기 위해서 사용한다.
컨테이너 자체를 노출하는건 보통 stl컨테이너를 사용하기 때문에 dll프로젝트인 경우는 stl컨테이너의 익스포트가 지랄맞기-_-때문에 낭피

그래서
struct ISEE_SkillInfoPerformer
{
virtual void operator() ( IN const tstring& rName, IN const SEE_ActionInfoBasePtr pActionInfo ) = 0;
};

이런식의 인터페이스 클래스를 만들고

void
SEE_SkillInfo::Perform( IN ISEE_SkillInfoPerformer& rPerform )
{
ACTIONINFO_CONTAINER::iterator itr = m_ActionInfos.begin();
ACTIONINFO_CONTAINER::iterator endItr = m_ActionInfos.end();

for( ; itr != endItr; itr++ )        // 사실 이부분도 boost와 foreach의 조합으로 어케 사부닥-_-될것 같은데
  rPerform( itr->first, itr->second );
}

이런식의 호출을 해준다.
그래서 실제 사용할 때는 인터페이스를 상속받아서 객체를 넘겨준다 라는건데

문득 함수 템플릿을 사용하면 어떨까...라는 생각이 들었는데
그럼 컨테이너를 결국 dll외부로 노출해야 하므로 어차피 낭피-_-

흐으음-_-;

'게임개발 > 생각' 카테고리의 다른 글

나쁜 아이디어를 위한 좋은 방법  (0) 2005.12.08
툴과 매뉴얼  (0) 2005.11.22
내가 컨텐츠를 만들기를 좋아하는 이유...  (0) 2005.11.22
카툰렌더링을 하다보니...  (0) 2005.11.14
performer  (0) 2005.06.22
기술과 컨텐츠  (0) 2005.04.07
posted by 쑥갓 2005.05.20 03:18

nVidia 샘플을 보다보니 저런 제목이있다.
대충보니 폴리곤을 양면으로 만든게 아니라 한면으로 만들고 백페이스 컬링을 끄고 찍을때
노멀이 하나밖에 없는지라 라이팅이 뒷면에도 앞면과 같게 먹는걸 버텍스 쉐이더에서 싸바싸바 해서 정상적으로 먹게 해준다....라는 내용이다.

그럼 뒷면인가는 어떻게 알 수 있는가 라는 부분이 포인트인데.
View를 이용해서 안다..라고 되어있다.

쉐이더 코드는 어셈-_-으로 되있어서 안봤다.

대충 카메라 노멀이랑 내적을 때려봐서 판단해서 노멀을 뒤집어 준다...라는 내용인것 같다.

posted by 쑥갓 2005.05.19 23:47
자원 할당 순서는 그래픽 성능에서 대단히 중요한 문제입니다. 모든 렌더 타겟을 먼저 할당하고, 할당 순서를 피치(즉, 픽셀당 폭*바이트)별로 정렬한 후, 사용빈도에 근거해 차이나는 피치 그룹을 정렬합니다. 가장 자주 렌더링되는 표면에 먼저 할당합니다.
그리고 나서 버텍스와 픽셀 쉐이더를 생성하고, 마지막으로 모든 텍스처와 버텍스, 인덱스 버퍼를 생성합니다. 이대로 하지 않을 경우 프레임 단가의 30%에서 100%까지 소요될 수 있습니다.
posted by 쑥갓 2005.04.11 03:00

가장 쉽게 생각할 수 있는 기본적인 방법으로는
bool로 플래그를 두고
함수에 들어가면 true로 세팅하고
매 루프마다 clear를 해주는 방법이 있다.

그러나 이게 영 비효율적으로 보이는지라.
timeGetTime()으로 시간을 기억해두고 ( 물론 매번 호출하진 않고 루프마다 한번 호출해서 전역에 저장해둔다 )
시간이 다르면 first time이므로 멤버 변수로 현재의 time값을 저장해둔다..
라는 생각이었는데

api에서는 잘돌아가는게 mfc에선 정상적이지 않는 현상이 발견되었다.
timeGetTime()의 한계-_-(실제로 timeGetTime은 밀리세컨드 단위이기때문에 1000프레임 이상의 수치는 처리할 수 없다.. 그 이하의 수치 일때 도 같은 Time이 들어올 수 있다. )일수도 있겠지만 IDLE메세지가 들어왔을때 함수 호출을 하게 해놔서 idle이 한번의 메세지루프에 여러번 들어올수 있다(라는 생각은 전혀 안해봤었는데-ㅅ-)

어쨋건 그런 연유로 그냥 DWORD로 매 루프마다 1씩 올려주는 카운터를 만들고 카운터를 기억하게 했다.

애매한 time보다야 확실하긴 하다만
왠지 쓸데없는 전역변수가 늘어난거같은 느낌은 지울 수 없다-ㅅ-;;

posted by 쑥갓 2005.04.07 12:52

컨텐츠라는 단어가 조금 맞지 않을지도 모르겠다.

프로그래머가 요구 받는건 어떤식으로 작동을 했으면 좋겠다. 어떤 인터페이스로 어떤 기능을 사용할 수 있었으면 좋겠다...라는 다소 추상적인 내용이다.

그럼 프로그래머는 그 내용에 대해 가장 맞는 기술을 찾아서 사용하게 된다.
하지만 그렇게 구미에 딱 맞는 시스템이 있는 경우는 좋으나 그렇지 않으면 양자 택일로 빠지게 된다.
우리 시스템상에서는 이렇게 밖에 안되니 이렇게 해야한다...와
아니면 삽질이다-ㅅ-;

가능하면 이렇게 밖에 안된다...라는 말은 피하고 싶지만 그렇게 밖에 갈수 없는 상황들이 종종 있다.
시간과 인력은 한정되어 있으니 어느걸 포기해야하거나 아니면 능력부족이거나..

요구를 하는 사람이 정확하게 요구를 해주고 자신이 무엇을 원하는지 구체적으로 생각을 해본다면
삽질이 좀 쉬워질 수도 있지만....

보통은 실제 기능을 만드는 시간보다 어떻게 사용하고 어떻게 보여질지를 고민하는 시간이 더 많이 들어가는 경우가 많다.

글을 쓰다보니 무슨 말을 하고 싶었던건지는 기억이 나지 않지만
분명한 것은 나는 지금도 삽질을 하고 있고, 삽질을 선택하는 경우가 너무 많지 않은가 하는 기분이라는 것이다.

프로젝트라는것은 어찌됐든 개발되고 서비스 되는것이 더 중요할 수도 있는데.
내 삽질이 과연 가치있는것인지는 시간이 평가해주려나-ㅅ-a

'게임개발 > 생각' 카테고리의 다른 글

나쁜 아이디어를 위한 좋은 방법  (0) 2005.12.08
툴과 매뉴얼  (0) 2005.11.22
내가 컨텐츠를 만들기를 좋아하는 이유...  (0) 2005.11.22
카툰렌더링을 하다보니...  (0) 2005.11.14
performer  (0) 2005.06.22
기술과 컨텐츠  (0) 2005.04.07
posted by 쑥갓 2005.03.15 17:17

shared_ptr.hpp 한 구석에

operator size_t() const { return (size_t)px; }

를 넣어준다-ㅅ-;


티스토리 툴바