1. 멀티 플랫폼으로 사용 가능하도록 설계하기. ( 라이브러리가 하나로 사용되거나, 분리되어도 문제 없도록 )


2. 플랫폼에 종속 된 기능은 되도록 사용하지 않기. ( 멀티 플랫폼을 위해서 )


3. 툴과 연동 되도록 하기.


4. 네이티브 액티비티 (?)


5. 자바 + 네이티브 (?)


6. 자바 (?)


우선, 안드로이드 엔진 부터 만들도록 한다.

처음에는 4번 방법으로 제작을 하려고 했는데, 인앱이나 다른 라이브러리(광고, 통계 등등)와 호환성이 떨어질 것으로 판단되고 6번 방법은 보완에도 취약하고 속도면에서 부족하다는 생각에  5번 방법으로 제작 예정.

 


13. 08. 11 - 이미지 및 스프라이트 동작 테스트 완료. (추후 디자인 패턴을 사용하여 엔진 변경하기)



먼저, 해당 툴에서 사용되는 Resource란 무엇을 뜻하는지 설명하겠다. (Resource는 제가 마음대로 정한 명칭)

해당 툴과 연동할 엔진을 OpenGL로 제작을 할 예정이다.




옆 이미지를 보면 168*140 px 짜리 파란 이미지가 있다. 이 이미지를 OpenGL에서 출력 하려면

2의 제곱수로 만들어야 한다. 그렇다면 168, 140보다 큰 2의 제곱수는 256 이므로 256 * 256 크기의

비트맵(검은색 영역)안에 파란색 이미지를 넣어서 파란 부분만 부분적으로 그려 주어야 한다.


이미지 하나 하나 마다 해당 과정을 거치면 빈 공간의 메모리와 해당작업을 하는데 소요되는 시간을

잃게되어 큰 비트맵안에 여러개의 이미지를 넣어서 비트맵 한장을 로딩한 후 필요한 영역의 이미지만

그려주는 방식을 사용하기 위해서 Resource를 만드는 것이다.












불러오기 : 추출한 리소스를 불러온다.

리소스 생성 : 2의 제곱수의 비트맵 하나를 생성한다.

리소스 추출 : 선택 된 리소스 하나를 별도로 저장한다.

이미지 추가 : 리소스에 이미지를 추가 한다.

삭제 : 선택된 객체(이미지, 리소스)를 제거 한다.

이미지 정렬 : 리소스안의 이미지가 빈 공간이 없이 최적의 위치를 찾을 수 있도록 정렬한다.











'이미지 탭'과 별개로 동작하는 스프라이트 만들기.

하나의 스프라이트는 애니메이션, 프레임, 레이어로 이루어짐






추가 된 기능

 - 스프라이트 추가 및 삭제

 - 리스트 이름 변경

 - 선택 된 이미지 영역 처리

 - 입력장치로 이미지 위치 이동

 - 단축키 추가

 - 전체 데이터 저장 및 불러오기

 - (2013. 07. 01) 코드 재설계

 - (2013. 07. 01) 해상도 설정 및 설정 저장

 - (2013. 07. 01) 그리드 추가 및 간격 설정

 - (2013. 07. 01) 미리보기

 - (2013. 07. 03) 미리보기 업데이트 - 프레임 선택 시 하위 레이어 모두 미리보기

 - (2013. 07. 03) 좌표 지정, 중심축, 반전 기능

 - (2013. 07. 04) 알파 블렌딩 기능

 - (2013. 07. 04) 이미지 보이기 On/Off

 - (2013. 07. 05) 회전 기능

 - (2013. 07. 06) 확대, 축소 기능

 - (2013. 07. 08) 스프라이트 노드 추가 (스프라이트->애니메이션->프레임->레이어)

 - (2013. 07. 09) 스프라이트 재생 및 프레임 조절

 - (2013. 07. 14) 마우스 휠을 사용한 작업영역(PictureBox) 확대 및 축소

 - (2013. 07. 14) 프레임 옵션 변경 시 하위 레이어 자동 적용

 - (2013. 07. 15) 스프라이트, 애니메이션, 프레임, 레이어 복사 및 붙여넣기

 - (2013. 07. 27) 스프라이트 이미지 추가방식 변경

 - (2013. 08. 04) 게임 데이터 생성

 - (2013. 08. 04) 동작 확인 완료!



추가 예정 기능

 - 스프라이트에 사용 된 이미지 자동 묶음 저장 or 리소스 이미지로 스프라이트 생성

 - 터치 영역 설정

 

Note.

 - (2013. 07. 27) 기존 방식은 PNG파일을 읽어와 추가 된 모든 이미지를 자동적으로 리소스화 시키려고 했었다가 방법을 바꾸어서

  기존에 Resource탭에서 만들어 놓은 리소스를 가져와서 이미지를 추가하는 방법으로 변경 하였다.

  Sprite탭 안에 있는 또 하나의 Resource 탭에서 메인Resource 탭의 리소스를 받아와 추가가 가능하다.

  이 방법으로 변경하면서 기존에 만들어놓은 스프라이트 추출이 쓸모없게 되었다. ( 나중에 다시 원래 하려던 방식으로 변경 예정 )





이미지 탭의 기본적인 기능을 완성하여 실제 게임데이터를 생성하여 단말기에 올려보았다.


클라이언트 엔진을 만드는 작업은 아니기 때문에 리소스 파일 그대로 올리고 각 이미지의 좌표만 정상적으로 출력이 되는지 확인




정상출력 ~ !







만들기 시작했을때 빨리 빨리 작업을 해야하는데... 계속하고 있는게 아니라 어디까지 했는지 기억도 안난다...



편의상 하나의 리스트(부모 및 자식 포함)를 '리소스'라고 명칭.

( 리소스, 통 이미지, 리스트, 통 파일 등등을 생각해보다가...)




추가 된 기능

 - 리소스 추가 및 삭제

 - 리소스에 이미지 추가 및 삭제

 - 리스트 더블 클릭 시 이름 변경 가능

 - 이미지 영역 처리(파란 선)

 - 리스트 아이템 선택 시 해당 이미지 선택 처리(알파값 있는 파란 배경)

 - 마우스로 이미지 위치 이동

 - (2013. 06. 13) 원하는 리소스만 저장 및 불러오기

 - (2013. 06. 16) 리소스 및 이미지 선택 시 오른쪽 Info 탭에 정보 표시

 - (2013. 06. 17) 단축키 추가

 - (2013. 06. 22) 이미지 추가 시 자동 정렬 (On/Off 가능)

 - (2013. 06. 23) 전체 데이터 저장 및 불러오기

 - (2013. 06. 23) 게임 데이터 생성(.res)

 - (2013. 06. 30) 리소스에 포함 된 총 이미지 수 표시

 - (2013. 06. 30) 현재 선택 된 이미지 Index 표시

 - (2013. 06. 30) 엔진에서 Index로 해당 이미지만 출력

 - (2013. 06. 30) 우측 TabControl 제거

 - (2013. 06. 30) 버그 수정

 - (2013. 07. 05) 키보드 방향키로 리스트 선택 가능

 - (2013. 07. 05) 우측 TabControl 제거

 - (2013. 07. 05) 선택된 이미지의 Index 및 Resource에 포함된 이미지 수 표시








커다란 메인 폼 안에 탭컨트롤을 사용하여 각각의 메뉴가 별도로 동작 가능하게 만들었다.

탭은 제작 예정인 이미지, 스프라이트, 맵, 데이터를 추가해 놓았고 추후 지속적으로 필요한 것이 있으면 추가 예정.





탭 안쪽의 왼쪽 공간은 리스트로 제작.

가운데 공간은 현재 작업이 보여지는 뷰 역할.

오른쪽 공간은 작업중인 데이터의 정보가 보여짐.


오른쪽 공간에 별도의 탭으로 제작한 이유는 만들다보면 무언가 지속적으로 추가 될 것 같아서...





엔진과 연동 가능한 툴을 먼저 제작하고 라이브러리를 제작한다.

완성까지 얼마나 걸릴지 모르는 1년 프로젝트~!


기본적인 기능 정하기.


[게임 툴]

 - C#으로 제작

 - 가공 가능한 데이터 : 이미지, 스프라이트, 맵, 데이터 등등

 - 데이터 보안



[게임 엔진]

 - 라이브러리 형태로 제작 (so 파일)

 - 안드로이드 버전 제작 하기

 - 툴에서 만들어진 데이터와 연동

 - OpenGL, OpenAL 사용



+ Recent posts