go언어에서 2d tile based space 용 라이브러리들.
By SeukWon Kang
제목이 저모양ㅜㅜ 인 이유가 goguelike에서 재활용성이 좋아 보이는 라이브러리를 뽑아내고 있는데 딱 저 카테고리용(그리고 뭔가 예로는 쓰기 그저 그런 ) 라이브러리 들이라 그렇습니다.
goguelike가 딱 이차원 tile기반 으로 만들어진것이라 가장 바닥을 구성하는 것들인데 기능으로 보면 꽤나 범용성이 있기에 공개/소개 합니다.
2d path finding https://github.com/kasworld/go-astar 이건 제가 만든건 아니고 다른 분이 만든것을 fork해서 살짝 추가해서 사용하고 있는 것입니다.
2차원을 다루기 위한 기본 자료구조인 좌표 처리용 2d vector (정수용) https://github.com/kasworld/ivector2d
영역을 다루기 위한 ( 역시 정수용) https://github.com/kasworld/rect
quad tree 공간 분할을 위한 ( rect 기반 ) https://github.com/kasworld/quadtree
방향관련 처리를 위한 https://github.com/kasworld/direction
중심 좌표로 부터 조건에 맞는 좌표를 찾기 위한 https://github.com/kasworld/findnear
quad tree 보다 간단하게 좌표에 object를 저장하기 위한 https://github.com/kasworld/idpos
그리고 2차원 미로를 만들기 위한 ( 자동 생성 지형에 사용됩니다. ) https://github.com/kasworld/maze
정도가 있습니다.
정말 바닥을 이루는 tile array는 너무 간단해서 생략합니다.
실제 goguelike 코드상으론 이렇게 되어 있습니다. ;;
//start
type FloorTile uint8
type FloorTileRow []FloorTile
type FloorTiles []FloorTileRow
//end
floortilerow 가 분리되어 있는 것은 이전 글에 썼듯이 http://kasw.blogspot.kr/2015/01/go.html UnmarshalJSON 을 정의하기 위해서 입니다.