2012년 8월 31일 금요일

Fan Application : Mabinogi Character Simulator (Milletian)




2011.12-2012.3
Flashdevelop IDE (Flex 4.6.0 SDK)
Google Drive SpreadSheet : Script XML etc
Picasa Web (Image resources) : PNG file etc
Google Site (Binary resources) : PMG file etc

Description /
현재 개발이 중단된 AS3 베이스의 캐릭터 시뮬레이터 Milletian입니다.
화면상 탭에 보이는 목록들의 시뮬레이션과 3D캐릭터의 커스터마이징 시뮬레이션을
플래시상에서 개발하여 전 웹 브라우저 및 모바일용으로 개발하려던 예정이었습니다만

2011년 말 Adobe가 플래시 개발을 모바일에서 철수한 것을 이유로 개발이 중단되었습니다.
개발은 2011년 말부터 2012년 초까지였는데 이야기를 뒤늦게 들은게 문제기도 하였고
당시 개발환경이 개인 PC가 아닌 군부대 '사이버 지식 정보방' 이었기에, 포트폴리오용의 작업으로 가능한건 이정도의 물건이었습니다.

개발은 Flash Develop IDE와 기존 마비노기의 포맷형식인 PMG를 분석하기위해 도처에 있던 HEX에디터를 이용해 이루어졌고 라이브러리는 Away3D를 이용하였습니다. 그냥 Stage3D를 직접 이용하는 방법도 생각 하였지만. 기존 포맷들을 읽어들이고 하는 작업에서 이용 가능한 자원을 이용하는것이 효과적이라 생각되어 이 라이브러리를 사용하였습니다.
PMG포맷의 경우에는 당연히 기존에 나와있는 파서가 없었기에 직접 분석하였고(실제로 개발된것은 있었으나 소스가 공개되어있지 않았습니다)

내부구현내용
Google Drive(구 Google Docs)에서 읽어오는 ATOM형식(RSS)의 XML파일을 스크립트 형식으로 읽어 들여 명령어를 일괄 실행합니다. 이는 AS의 작업 없이 내부 갱신을 용이하게 하기 위해서입니다. Google Drive를 이용하고 있는것은 내부적으로 Excel급의 편집기능이 준비되어있어서이고, 이는 XML의 편집을 용이하게 해줍니다. 웹에 실제로 올리려 했을때는 Flash의 보안정책관련으로 따로 Proxy해야할 필요가 있었습니다.
 내부적으로는 ChainMemory라는 이름의 폼-메모리 링크형식이 존재하는데, 이는 엑셀과 비슷한 느낌의 계산동작을 하기위해 만들어진 메모리 구조입니다. 이 앱은 연결된 말단의 한 폼의 수치가 갱신되면, 이와 연결된 타 메모리들의 수치들을 업데이트합니다. 처리량을 최소화 하기 위해, 수치에 지속적인 변화가 주어지고 있는지를 모니터 하여, 입력이 없을때 일괄 작업하게끔 작업 되어 있습니다. 계산의 양이 많아지면 한번의 동작을 하는데도 막대한양의 처리양이 발생하기때문에, 이와 같은 처리가 필요했습니다.
 또한 앱에 맞는 형식의 UI가 무료 공개된 것이 없어, 슬라이드 탭이나 버튼 등은 자체구현 하였습니다.
 Away3D를 이용하여 표시하고 있는 모델데이터는 Away3D의 Parser를 베이스로 작성되었습니다. PMG를 분석하는 부분은 전적으로 직접 작성된것이며, 이를 적재하며 표시하는 부분은 Away3D에 의존되고 있습니다. PMG는 정점의 위치, 인덱스, 일부 헤더정도가 분석되었고, UV맵은 분석이 진행되지 않은채 프로젝트의 진행이 중단되었습니다.

현재 이 소스는 Google Code 에 공개해둔 상태입니다.
직접적인 개발예정은 아직 잡혀있지 않습니다.

http://code.google.com/p/milletian/

댓글 없음:

댓글 쓰기