| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- HANBIT Academy
- C
- JavaScript
- 김진홍 옮김
- C++
- 잡생각 정리글
- 데이터 통신과 컴퓨터 네트워크
- unity6
- Noam Nisan
- 박기현
- booksr.co.kr
- 메타버스
- https://insightbook.co.kr/
- 밑바닥부터 만드는 컴퓨팅 시스템 2판
- 입출력과 사칙연산
- 생능출판
- BOJ
- C#
- 전공자를 위한 C언어 프로그래밍
- 일기
- cyphenengine
- The Elements of Computing Systems 2/E
- 알고리즘
- 게임 수학
- 주우석
- 이득우의 게임수학
- 이득우
- hanbit.co.kr
- 백준
- (주)책만
- Today
- Total
목록전체 글 (518)
cyphen156
Trouble 1. Object.Animation.Render()에 발생한 Jitter 현상벡터 변환행렬과 카메라를 도입한 뒤, 플레이어를 따라 카메라가 움직일 때 오브젝트가 흔들리는 Jitter 현상이 생겼다. 처음에는 큰 월드 좌표에 카메라 이동과 배율 계산이 겹치면서, float 정밀도 때문에 발생하는 문제라고 생각했다.그런데 애니메이션을 정지 프레임으로 고정하고, 좌표가 전달되는 과정을 나눠서 확인하니 문제가 생기는 지점이 따로 있었다.현재 지형은 StretchBlt를 통해 HDC에 설정된 변환을 적용받는다. 반면 오브젝트는 같은 HDC로 Graphics 객체를 생성한 뒤, GDI+의 DrawImage로 그린다. 이때 Graphics(hdc)가 HDC의 실수 변환행렬을 그대로 가져오는 것이 아니..
우선 과거 코드를 리팩토링하거나 월드 좌표계를 3차원으로 확장하지 않고, 기존의 2차원 좌표계를 유지한다는 전제로 프로젝트를 이어 간다.원작을 구현하다 보면 자연스레 2.5D 방식의 3차원 표현이 필요해진다.그래서 지형은 비스듬히 내려다보는 형태로, 그 위의 캐릭터는 서 있는 형태로 표현하려고 한다.즉, 데이터는 2차원 좌표계에 그대로 두고, 화면에서는 가상의 3차원 공간처럼 보이도록 만드는 것이다.이번 단계에서는 기울어진 지면을 정사영했을 때 나타나는 세로 축소를 이용해서, 기존의 2차원 월드를 2.5D 형태로 표현하기로 결정했다.아핀 변환을 통해 차원 확장하기현재 프로젝트는 Win32 API와 GDI, GDI+를 사용한다.지형은 StretchBlt, 애니메이션은 Graphics::DrawImage로 ..
지난 글에서는 다익스트라의 정렬 비용(log n)을 줄인 논문을 살펴봤다.이번에는 아예 정렬을 하지 않는 최단경로 알고리듬, RAPTOR를 소개한다.여행 앱 TripPocket의 오프라인 대중교통 길찾기 엔진에 Claude Code가 구현해 놓은 알고리듬이다.찾아보니 아이디어는 생각보다 단순한데 효과가 확실해서 정리해 둔다.주의: "RAPTOR 알고리즘"으로 검색하면 순서도 교육 도구가 나온다. 이 글의 RAPTOR는 대중교통 경로 알고리듬이고, 논문 제목 "Round-Based Public Transit Routing"으로 검색해야 찾을 수 있다.이 앱은 3년쯤 전 친구와 일본 여행을 갔던 경험에서 시작했다.eSIM으로 인터넷을 썼지만 제약이 많아서 오프라인인 때가 꽤 많았고, 그게 불만이었다.그래서..
임포터 시리즈의 마지막 글이다.드디어 ResourceID 부여도 마무리했다.이건 NPK Importer를 만들기 시작할 때부터 넣으려고 했던 기능이다.두 번째 글에서 프레임 전부에 번호를 붙이지는 않기로 했으니, 이제 실제로 번호를 어떻게 배치하고 유지할지를 정해야 했다.그냥 번호 하나 주면 끝날 것 같지만 내가 원한 것은 경로의 분류가 주소 안에서도 보이는 구조였다.이미 카탈로그를 만들면서 어느 폴더에 얼마나 들어 있는지도 조사해놨으니, 그 정보를 배치에 써먹기로 했다.ID는 엔트리 하나에 붙인다우선 이번 ID의 대상은 NPK 안에 있는 IMG와 OGG다.sprite/character/demoniclancer/effect/abyssalinvander/├─ eff01.img ← ResourceID 하나..
추석 연휴 사흘 동안 틈틈이 NPK Importer를 마저 손봤다.이미지 추출까지는 해놨으니 이제 Unity에서 써야 하는데,PNG를 뽑아놓고 Sprite 설정하고 애니메이션까지 직접 만들고 있으려니 이것도 일이었다.엔트리 몇 개만 가져오는 거면 모르겠는데 앞으로 가져올 것들도 있으니, 반복할 부분은 여기서 끝내두기로 했다.이번에 마무리한 것은 애니메이션 클립 자동 생성과 ResourceID 부여다.ID는 다음 글에서 다루고, 우선 클립 만드는 것부터 정리해본다.우선 클립 하나의 범위부터이전 글에서도 이야기했지만, IMG 하나에는 여러 프레임이 들어 있다.그런데 이 IMG 하나가 스킬 하나를 뜻하는 것은 아니다.실제로 마창사 이펙트 경로를 보면 다음처럼 되어 있다.sprite/character/demon..
이전에 썻던 글들은 다음과 같다.- [답답해서 만드는 에이전트 환경 동기화 프로젝트 #1 에이전트 대화 동기화하기]- [답답해서 만드는 에이전트 환경 동기화 프로젝트 #2 작업표시줄 고정용 Start / Finish 런처 만들기]- [람다 같은 녀석들 : 에이전틱 코딩과 통제력 상실]- [에이전트 대화 세션 동기화 도구 드디어 고쳐서 올리는 글] 특히 마지막 글에서는 2주 동안 개고생하면서 고쳤다는 이야기만 짧게 썼는데, 그 뒤로도 여러 가지 문제점이 발견됐다.이 글에서는 그동안 진행한 리팩토링 과정과 결과에 대해 정리하려 한다.그리고 먼저 인정하고 시작해야 할 게 있다.첫 번째 글에서 설명한 구조 중 일부는 지금 기준으로는 맞지 않는다.그때 직접 옮겨보고 앱에 대화가 나타나는 것까지 확인한 것은 맞다...
어제 새벽 블리자드의 연간 행사인 블리즈컨이 있었다. 언젠가 캘리포니아 애너하임에 가서 직접 관람하고 싶지만 아직 실현하지는 못했으니, 이번에도 온라인으로, 그리고 얼바인에 사는 동생의 후기를 참고해서 대체한다 ㅋㅋ다른 프랜차이즈는 솔직히 게임적으로는 나에게 크게 흥미가 없고, 스토리나 영상미 정도로만 관심이 있으니 이번에는 내가 게임 프로그래머가 되고자 하게 만든 스타크래프트 프랜차이즈에만 집중해보려고 한다.한국어 영상 제목으로는 [스타크래프트: 자치령]이라고 소개되었지만, 영상을 모두 보고 난 뒤에는 원제인 [STARCRAFT: Dominion] 쪽이 블리자드가 이 영상에서 전달하고자 한 느낌을 더 강하게 담고 있다고 생각했다. 그래서 이번 후기의 제목도 원문 그대로 소개한다.스타크래프트 세계관에는 ..
