일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Portfoilo
- Weapon Animation
- 4-legged Animal
- red black tree
- 개발일지
- STL
- standard template library
- inventory
- standart template library
- Animal IK
- AI Perception
- Zombie
- UE Interface
- UE Vehicle
- unreal engine
- 텍스쳐 스트리밍 풀
- Texture Streaming Pool
- portfolio
- 메이플스토리
- 포트폴리오
- houdini
- ubuntu
- web
- oracle cloud
- Hash Table
- UE4
- Unreal Engien
- Projetile
- redis
- database
- Today
- Total
블로그
메이플 포트폴리오 현황(오류 수정) 본문
1. 서버가 켜진 상태에 클라이언트에서 로그인했을때 화면이 멈춤. 이 때 마우스의 좌표는 잘 그려지지만 화면이 무효화가 안돼 계속해서 그려지는 상황. 게임 내 오브젝트들은 한개도 그려지지 않지만 다른 클라이언트에서 정지한 클라이언트의 움직임을 확인해보면 멀쩡하고, 서버에도 잘 전송되는 것으로 보임
> 오류 수정 완
문제 근본에 초점을 맞추었다. 정확히는 게임이 멈추는 것이 아닌 렌더링만 멈추는 것이라 생각하여 렌더링 관련 객체들의 문제인지 살펴보았다. 찾아보니 원인은 Direct2D로 렌더링을 하는데, CoInitializeEx에서 COINIT_APARTMENTTHREADED 플래그를 사용중이라 멀티쓰레드 환경에서 간헐적으로 ID2D1RenderTarget이 동작하지 않는 문제였다. COINIT_MULTITHREADED 플래그로 변경하여 해결하였다.
2. 서버에서 간헐적으로 데이터베이스에 있는 클라이언트 데이터를 보내려고 할 때 mysqlRes 값이 null이 되어 힙 손상 오류 발생
> DBManager 클래스에 CriticalSection을 도입하여 데이터베이스에 접근하는 모든 함수의 시작 부분에 CriticalSection 객체를 거치도록 수정하였다.
3. 클라이언트에서 다른 클라이언트의 애니메이션을 그리려 할 때 텍스쳐가 null이라는 오류 발생
> 1번 오류와 동일한 원인이었는지, 1번을 수정한 뒤에 오류가 발생하지 않음
4. 서버에서 몬스터 위치 계산 후에 클라이언트로 전송하는데, 서버 적용하지 않은 클라이언트에서 잘 사용했던 충돌 계산을 그대로 서버에 가져놓았으나 몬스터의 위치가 충돌체와 전혀 상관없는 위치에 있음(공중에 떠있기, 땅 통과하기 등)
> 아직 수정하지 못하였다. 이걸 해결하면서 동시에 포트폴리오 작성/이력서 작성 및 코딩테스트 연습을 병행해야 할 것 같다.
'프로그래밍 > C++' 카테고리의 다른 글
[C++/Direct2D] 포트폴리오 : 메이플스토리 모작 (0) | 2023.05.15 |
---|---|
메이플스토리 포트폴리오 현황 (0) | 2022.11.13 |
221019 메이플 포트폴리오 (0) | 2022.10.19 |