상세 컨텐츠

본문 제목

[포니 게임 개발] 21

프로그래밍/포니게임개발

by ∫2tdt=t²+c 2013. 4. 28. 01:07

본문



요 며칠간 작업내역은 눈에 들어올만한게 없습니다.


* 캐릭터 이동방식 수정: 캐릭터의 이동이 조금더 물리에 부합하도록 수정했습니다.

- 이제 경사진 면을 이동할 때에는 경사에 맞게 힘이 작용합니다.

- 또한 경사진 면에서는 캐릭터 오브젝트도 같이 기울어지도록 수정했습니다.


* 스크립트용 API 함수 정교화: 새로운 함수들(SoundStop, GameLoadData, GameSaveData 등)을 추가하였고, 데이터를 로딩하는 API함수는 독립적인 스레드에서 작동하게 하여, 로직 프로세스를 딜레이시키지 않도록 수정하였습니다.


* 엔진 메모리 관리 방식 변경(ㅎㄷㄷ): 제일 귀찮고 시간이 많이 걸리는 작업있었어요... 처음부터 설계를 잘했으면 이런 뻘짓을 안해도 됐을테지만 그런 예지력이 부족했던 탓에...

이전 엔진의 메모리관리: 모든 메쉬, 텍스쳐, 셰이더, 애니메이션, 폰트 메모리를 엔진이 가지고 있었고, 새로운 인스턴스를 요청하면 로드하여 캐시에 넣어 저장해두고 필요할 때마다 불러서 쓰는 형태. 메모리를 과소비할 경우에는 모든 캐시된 메모리를 해제하고, 현재 사용 중인 인스턴스는 새롭게 로드해야 했음.


새로운 엔진의 메모리 관리: 전과 같이 엔진에 메쉬, 텍스쳐, 셰이더, 애니메이션, 폰트 메모리를 가지고 있으나, 레퍼런스 카운터를 관리함. 레퍼런스 카운트가 0이 되더라도, 다시 사용될 가능성이 있으므로 캐시에서 바로 삭제하지 않음. 메모리를 과소비할 경우에만 레퍼런스 카운트가 0인 메모리만 해제.

덕분에 레퍼런스 카운팅을 위해 수십개의 변수와 함수들한테 일일히 std::shared_ptr 를 붙여주느라 고생했슴다. 그리고 괜시리 shared_ptr 때문에 조금 느려진다?는 느낌도 받네요. 하지만 불필요한 로딩을 줄였다는데에서 만족하고 있습니다.


* 그리고 이제는 UI를 구현하는 작업을 하고 있습니다.

간단하게 버튼, 스태틱, 아이콘, 대화상자 정도만 구현해도 충분할듯 하네요.

'프로그래밍 > 포니게임개발' 카테고리의 다른 글

[포니 게임 개발] 좋은 폰트를 주웠다  (1) 2013.05.20
[포니 게임 개발] 23  (2) 2013.05.18
[포니 게임 개발] 22  (0) 2013.05.16
[포니 게임 개발] 20  (0) 2013.04.23
[포니 게임 개발] 19  (2) 2013.04.19
[포니 게임 개발] 18일차  (0) 2013.04.08

관련글 더보기

댓글 영역