'프로그래밍'에 해당되는 글 59건

  1. 2011.04.27 11년 5월 작업일지
  2. 2011.01.25 Dx 기반 프로그램 위에 웹을 띄우려고 한다면
  3. 2011.01.05 11년 기념 작업일지
  4. 2011.01.05 dx에 swf를 올리려면....
  5. 2010.11.22 Freetype2 짜짤한 처리
  6. 2010.11.08 주말에 짬내서 짜본 안드로이드용 박스먹기 4
  7. 2010.04.28 10.04.28 작업일지
  8. 2010.03.25 [펌]VC++ 코드 실행 시간 측정 방법 정리
  9. 2010.03.25 라이트 미들웨어
  10. 2010.03.22 10.03.22 작업일지
2011. 4. 27. 20:38

11년 5월 작업일지

겜 스샷을 올린적이 없네.. 한번 라이브에서 찌거서 올려보자는...



슬라이딩 메시지
핑퐁 로직 변경
데미지 택스트 변경
인던 한번더 시스템

정도구나
2011. 1. 25. 16:14

Dx 기반 프로그램 위에 웹을 띄우려고 한다면


Dx기반 프로그램 위에 웹을 띄우려고 하면 여러 가지 방법이 있다.
 
주요 부분은 따로 끌어옴!!

1. 팡야와 같이 갈무리해서 쓴다
장점 : 파싱으로 얻은 결과를 gameui로 찍으면 화면은 더할나이 없겠죠?
단점 :  링크와 버튼 같은 경우도 전부 구현해 줘야 하구요 이경우는 엄청난 파싱코드가 난무하게 되며 당연히 게임의 속도를 까먹는 리소스 벌래가 되겠구요 페이지가 큰겨우에

비례해서 n * time이 되겠죠

결론 : ui에 신경을 많이 쓰고 싶은 게임이라면 한번쯤은 가능하다 하지만 조잡하고 속도가 떨어진다
하지만 게시판이 뜨는경우를 생각하면 게임진행사황이 거의 아니무로 이방법도 괜찮겠지만 제작시간이 오래 걸린다

 

2. ATL
장점 : 쉽게 뜬다 -_- 단 3줄? 다른 라이브러리기 때문에 웹페이지에 대한 정의를 내릴 필요가 없다.
단점 : 다른 라이브러리를 쓰기때문에 다른 제작자들의 컴파일러와 라이브러리 버젼이 일치해야 한다.
세부컨트롤이 불가능하므로 AtlAxWin을 그대로 쓰는것보다는 CAxWindow계열의 윈도우를 생성해내
obj를 붙여 제작하는게 더현실적이다. 예제 코드가 별로 없다.

결론 : 역시나 쉬운게 비지떡이라고 세부 컨트롤 즉 마우스 오른쪽 클릭을 막고 싶다던지 쉬프트키 누르고
 링크를 눌렀을때 같이 새창이 뜨는 경우를 막으려면 코드량이 좀 늘것 같고 ATL을 공부해야 한다. -_-;

ATL을 이용한 예제와 소스
http://mypage.sarang.net/phpBB2/viewtopic.php?t=215

 

3. COM
장점 : IWebBrowser2 계열로 쉽게 뜨고 쉽게 컨트롤이 가능하다
단점 : ATL과 마찬가지로 멤버 메소드(COM을 기반으로 함수라는 말은 메소드로 정정) 들이 세부적인 컨트롤을 못하므로
멤버 이벤트 메소드들을 제정의해서 써야한다. 그리고 ATL과 마찬가지로 COM을 공부해야 한다 ATL보다 더 자비심이 없는것 같다 ;ㅁ;

결론 : 많은 게임이 이 방식을 쓰고 있지만 제정의해서 써야하는건 마찬가지 그리고 단일객체만 선언해서는 효력이 별로 없는것 같다;

 

위와 같은 방식으로 제작한다면 윈도우(창)모드에서는 이상없이 잘 작동한다. 하지만 전체화면일때 웹을 구동하는 것이 문제인데, 몇가지만 신경써준다면 구현이 가능하다.

1.

DirectX 9.0c를 기반으로 작성됨. SetDialogBoxMode() 함수를 이용하여 풀스크린에서도 윈도우 컨트롤을 사용할 수 있게 한다. 단 이렇게 하면 프레임 저하가 있으므로 웹브라우저가 보이지 않을때에는 꺼줘야 한다.

코드:
m_pD3DDevice->SetDialogBoxMode(TRUE); 
또, SetDialogBoxMode() 함수를 사용하려면 D3DPRESENT_PARAMETERS에서 Flags에 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 를 추가해줘야 한다.

2.

방식은 간단히 우선 DX 수직동기화를 화면 주파수가 아닌 IMM 으로 맞추고
창모드에서도 켜줘야 하지만 다이얼로그 모드를 켜주구요
웹창이 뜰때만 우선 이펙트 스왑을 COPY로 바꿔 놓고 Present를 무려 4번 합니다

3.

  2번 방식을 잘 모르겠다면 그냥 프리젠트를 하지 않고 쓴느것도 하나의 방법,

4.

  몇몇 오류사항들이 발생하는데, 전체화면에서 포커스를 읽어서 최소화될때라던지.. 이런 버그들이 있는데, 일단은 그런 이벤트가 발생시에는 웹창을 강제로 종료시켜 주었다.

 

이정도...



2011. 1. 5. 20:32

11년 기념 작업일지


캐릭터 지연로딩 추가 처리
이팩트 리소스 중복로딩을 막기 위한 처리
카메라 한번 갈았음
fperftool(에널라이즈 툴) 추가
캐릭터의 랜더타겟 택스쳐 사이즈 변환 등의 최적화
내부 랜더링 정보 파일로 추출하기
플레이어와 동일시 움직이는 카메라 제작
웹 이미지 전송
웹 브라이져 오픈 기능 구현
이미지 전송 프로그램의 외부 exe제작및 실행
2층현상 그림자 수정
크래쉬 추적 그리고 가드코드 추가
캐릭터 간단 그리기
전투 병목 측정
프리타입폰트 추가
폰트 수정 자간,행간등
소서러 각성 스킬 및 연출
스킬들 제작 및 수정
마우스 숨겨보기
버그 픽스
2011. 1. 5. 16:44

dx에 swf를 올리려면....

음... 누구나다 gfx쓰면되는데라고 말하지만, 그건 유료라고,
그냥 올릴수 없을까해서 검색해보면

먼저 스케일폼 요즘 겜 회사서 새로 시작하면 다 쓰졍
http://www.scaleform.com/
gfx 3.3까지 나왔네.. 버그는 많이 잡았나.. 이전 개발하던 갬도 이거 썻는데...
한국에서 많이 사용해서 그런지 홈페이지에 한글 페이지도 있네...


그치만 좀 쉽고 한마디로 꽁짜로 써볼까 하고... 실상 UI 까지 제작할건 아니라서..

플래쉬 swf파일을 게임 상에서 보여주는 GUI 라이버러리
메일링 리스트
문서화 미흡
이게 gfx초기버전이라네여
http://tulrich.com/geekstuff/gameswf.html
이것도 유료던데 사용관련 말이 잘 없음..
 
2010. 11. 22. 11:35

Freetype2 짜짤한 처리


이전 프로젝트 할때도 프리타입2를 사용했는데, 이번 회사와서도 붙이는 작업을 했다.
기존에는 GDI를 쓰고 있었는데, 중국쪽에서 바꿔달라고 했는거 같다. 여튼 작업시작은 이러한데,

중국쪽 폰트를 하면서 추가된 내용과
여기는 한글자씩 미리 찍어두는 시스템이라 추가된 내용을 정리해야 할듯 하다.

중국쪽 폰트하면서 추가된 내용으로는

-- FreeType Font에서 FT_PIXEL_MODE_MONO 로드부분

-- [출처] FreeType Font에서 FT_PIXEL_MODE_MONO 로드부분.|작성자 샤르봉
특정폰트 특정크기 이하에서 폰트값이 0~256이 아닌 bit단위로 나오는 문제 해결

겜에서 사용하는 폰트 크기가 20pixel정도였는데 한글로 출력할때는 위와 같은 문제가 없었는데,
중문에서는 바로 문제가 되더라... 여튼 이거 위에꺼 보고 고쳤고

한글자씩 미리 찍어두는 시스템에서 추가된 내용으로는

http://www.winapi.co.kr/project/library/freetype/ft1.htm
http://www.winapi.co.kr/project/library/freetype/ft2.htm
http://www.winapi.co.kr/project/library/freetype/ft3.htm
http://www.winapi.co.kr/project/library/freetype/ft4.htm
http://www.winapi.co.kr/project/library/freetype/ft5.htm
http://www.winapi.co.kr/project/library/freetype/ft6.htm
http://www.winapi.co.kr/project/library/freetype/ft7.htm

위의 메뉴얼이 잘되어 있느니까 알아보고
문제는 베이스라인 계념인데 위에꺼 다 읽어봐도 결국 베이스라인 어캐 구한다는 없어서...

http://www.gpgstudy.com/forum/viewtopic.php?p=96321&sid=e6202af07a3e2b090a046918f41ae5f0
위의 글을 참고하면 될듯

int baseLine;

int ascender;
if (FT_IS_SCALABLE(face))
{      
  float y_scale = face->size->metrics.y_scale * 1.0f/64.0f * (1.0f/65536.0f);
  ascender = int(face->ascender * y_scale);
    
}
else
{
  ascender = int(face->size->metrics.ascender * 1.0f/64.0f);
    
}
  
baseLine = FONT_HEIGHT - ascender;


위의 소스가 답인듯.. 참고로 픽셀 단위


아직도 뭔가를 더 고쳐야 할듯한데 좀 봅시다.



아 그리고 폰트 라이버리 버전 올려서 달면 폰트가 깨끗해지는듯한 느낌이?? 킁.. 이건 아닌가. 여튼 최신 버전 사용합시다.

2010. 11. 8. 00:23

주말에 짬내서 짜본 안드로이드용 박스먹기





사실 책좀 보고 대충 만들어본거
주중에도 플밍하고 주말에도 플밍하니, 그닥 좋지는 아니하다.


2010. 4. 28. 11:28

10.04.28 작업일지

머가 바빠서인지는 몰것으나....ㅠ.ㅠ..(사실 머가 좀 많았지)
일지를 거진 두달넘어서야 정리 하누나..ㅠ.ㅠ..

우선 엔쉬 사내 태스트가 한번 있었고, 역쉬 엔쉬 사원이 많다보니 접속자가 걍 클배만큼 나오는듯,
이런 저런 체크사항이 나왔으나, 정확히 나랑 매칭된 사항은 없었고, 그래도 버그는 이것저것 봤고,

캐릭터 버택스 버퍼 합치는 작업
(현 게임의 캐릭터 시스템을 이해하면 이걸 왜 하는지 말할수 있다.)

수정구 버그 (알케미스트 관련) 전달\
캐릭터쪽 수정한 사항이 많아서 내가 봤는데, 일단 컨텐츠적인 내용이다.

랜더링 순서 변경으로 인한 캐릭터가 한번씩 깜빡이는 버그 잡기
이건 바꾸고 나니 별 말이 없네 적용

마을에서 다수 캐릭으로 랜더링 퍼포먼스 태스트
사양별로 태스트
이건 난이도보다는 시간과의 싸움.. 아놔
투명화 옵션관련 요구사항이 많아져서 처리
자꾸 머가 추가사항이 생겨

초기 적재되는 GPU매모리분석
먼가 구리다고 생각하고 뛰어들었으나 얻은건 없고 시간만 줄창 씀 아놔...!

카메라 덜덜거림 현상 완화
이거 버그 해결이 아니고 말 그대로 현상완화!!

캐릭터 지연 로딩시스템 추가
이거 대박 작업 아놔~
급하다고 해서 주말까지 다 꼬라박아서 만들어 놨으나 빌드 전달 밀림.. ㅎㄷㄷ
 
캐릭터 이팩트 리소스 중복로딩 해결
시간단위로 홀딩하게 만들었는데 괘않은듯






 
2010. 3. 25. 14:56

[펌]VC++ 코드 실행 시간 측정 방법 정리


요기 : http://ttongfly.net/zbxe/?document_srl=45283

 순서..
             1. clock() 함수 이용 실행시간 측정.
             2. timeGetTime()함수 이용 실행시간 측정.
             3. QueryPerformanceCounter()함수 이용 실행시간 측정.
             4. 매크로를 이용한 실행시간 측정. [밀리세컨트(ms)단위]
             5. Debugging 중에 @CLK를 이용한 실행시간 측정.
             6. 프로파일 기능을 이용한 각 함수들의 실행시간 알아보기.

정리 잘되어 있네
퍼 왔어여~~
2010. 3. 25. 10:56

라이트 미들웨어

lightsprinthttp:
www.illuminatelabs.com/products/beast

요즘 GI가 대세인데, 직접 만들어 쓰자하니 앞이 잘 보이지 않아
라이트 미들웨어라도 보야 되는데, 뭐 이건 사야 볼수 있으니...
일단 저런게 있는거라도 알아두자
2010. 3. 22. 10:28

10.03.22 작업일지

10.03.12 작업일지 이 마지막 작업일지였고 오늘!!

이팩트의 포지션의 보간방식을 바꺼서 익스포터 하게 함
  패키징 사이즈에 대한 조사 필요성. 빌드버전 출하 이전까지

프로젝트 수직 동기화 옵션 풀기
  소프트웨어적으로도 걸려있고, DX 디바이스에도 걸려 있다.

전체적인 게임의 흐름을 막아보며 프레임 분석

저사양 PC서 게임구동 분석
  저사양 PC에서 현재 빌드 버전을 돌리려면 어떻게 해야 하나.

프래임 분석할때는 폰트를 이용해서 왠만하면 타겟에 쓰지말것!
  윈도우 캡션에 문자찍기!|프로그래밍
2008/03/10 10:04
  SetWindowText(찍고자하는 윈도우 핸들, 문자);

캐릭터 랜더링 수정중
  버택스 버퍼 조합하는 중...

nvtristrip& ati tootle등의 기능은
  버택스리시트->버택스스트립 / 완패곡선에서 버택스의 수정