기본 콘텐츠로 건너뛰기

FlashPunk에서 Base64 인코딩 된 타일맵 불러오기

이 글은 Tiled map editor를 이용해서 만든 맵 데이터를 FlashPunk로 불러오는 법에 대한 글입니다.
Tiled는 맵 저장을 XML로 저장할 수도 있고, zlib로 압축해서 Base64인코딩 할 수도 있습니다.
맵이 커질수록 데이터가 커지기 때문에 압축해서 인코딩하는 방법이 더 좋은데요.
FlashPunk의 map Entity에서 바로 불러오도록 만들어 봤습니다.



맵데이터를 임베딩 한 후, map Entity객체의 생성자 매개변수로 넘겨서 loadXML함수에 넘겨줍니다.
[Embed(source = "../assets/desert_640x480,32x32.tmx")] public static const MAP_DESERT:Class;
(Maps.as파일로 임베딩할 자원만 모아 놓았습니다. 사용할때는 Maps.MAP_DESERT 이렇게 불러오고요)

private function loadXML(xml:Class):void
{
   // 불러온 데이터 디코딩, 압축해제
   var rawString:String = XML(new xml).child("layer").child("data");
   var bytes:ByteArray = ByteArray(Base64.decode(rawString));
   bytes.uncompress();
   
   // 맵에 타일 셋팅
   for (var i:int = 0; i < bytes.bytesAvailable; i++)
   {
      var index:int = bytes.readInt();
      _map.setTile(i % 10, Math.floor(i / 10), index-1); // 10은 320/32=10
   }
}

World Entity객체에 맵 엔티티를 add()해주기만 하면 됩니다.
그리고 Base64 인코더,디코더가 플렉스 프로젝트에선 쓸 수 있지만 액션스크립트 프로젝트에선 쓸 수 없는것 같습니다. 그래서 따로 Base64.as파일을 준비해야 합니다.
여기서 Base64에 대한 자세한 설명과 함께 Base64.as파일도 받을 수 있습니다.

이 블로그의 인기 게시물

Docker Tutorial (Docker Toolbox)

https://www.docker.com/products/overview 설치파일 다운로드. 내 맥북은 가상화를 지원하지 않는 CPU를 가진 2009년형. 그래서 Docker for Mac 사용불가하여 Docker Toolbox 설치. mkdir yourdockerbuild cd yourdockerbuild touch Dockerfile nano Dockerfile FROM imageNameOnHub:version - 불러올 이미지 RUN *** - 최초 실행할 명령 (설치명령 등. image 안에 설치됨) CMD *** - 이미지가 로딩되면 실행할 명령 docker build -t yourImageName . docker run yourImageName 추가로 hub를 통하지 않고 Image를 이동 하려면 Docker Registry 사용 도커 레지스트리 (Docker Registry) 설치하기 + S3 연동

FlashPunk (Flash Game Engine)글 제목

github에서 actionscript 검색하다 우연히 발견한 플래시 2D 게임엔진. http://flashpunk.net/ 코드를 한참 들여다보다 잘 감이 안잡혀서 검색해봤더니 쓰는 사람들이 말하길 동영상 강좌 보고 하니 쉽다고 하길래 홈페이지 가봤다. 강좌가 잘되어 있다.^^ (동영상강좌가 아주 좋다) 맛배기로  첫번째 강좌 FlashDevelop를 사용해서 셋팅하는 법부터, 프로젝트 구성하는 법까지 알려줌