기본 콘텐츠로 건너뛰기

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파일도 받을 수 있습니다.

이 블로그의 인기 게시물

[ 3D개념 정리 ] Texture Methods와 Light

Texture diffuse map (color map) : 조명의 확산, 컬러등의 정보가 담긴 텍스쳐 specular map : 재질에 따른 반사율을 다르게 하기위한 텍스쳐 (광택) normal map : 평평한 텍스쳐에 굴곡을 주기위한 텍스쳐 ambient occlusion (A.O.) : 주변물체와 근첩함으로 생기는 암부 표현위한 텍스쳐 Light directional light : 태양 (모든 면에 일정각도로 비췸) point light :  랜턴 (방향있는 조명) rim light : 후광 (윤곽이 또렸해지는 효과) fresnel effect : 빛의 반사각에 따라 밝기나 색상이 다름 (호수표면 효과?)

FlashPunk (Flash Game Engine)글 제목

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