구글 플레이스토어 / 앱스토어 출시


[ 안드로이드 구글플레이스토어 ]

https://play.google.com/store/apps/details?id=com.ACABerry.ACADollRefine


[ 아이폰 앱스토어 ]

https://itunes.apple.com/kr/app/id1266181692?ign-mpt=uo%3D4




프로젝트 리뷰해요!


 열심히 사이즈를 줄이고 줄여 출시가 되었어요!!☆ (자축잼)

 재미있는 게임인가. 수익성 있는 게임인가. 를 많이 고려해야하는데...

 프로그래머치고는(..실드시전ㅠㅠ) 나름 고민한 흔적이 보이네요 :)


 게임을 제작한다는 것은, '수익' 을 고려하여 제작하는게 선제조건이고, 재미가 있고 찾게되는 게임인가에 대해 고민하는 것이 먼저이지요.


 메인테마는 '클리커 + 방치형' 이기에, 크게 벗어나지 않는선에서, 매력적일수 있는 부분을 첨가하려고 많이 노력했지요.

 컨텐츠의 '양'적인 면 뿐만 아니라 여러모로 밀리긴 하지만, 1버전치고는 이기능 저기능 다달고 그럴듯하게 나왔네요.


 우선 개발중 제일 고민했던게 방치형 게임의 진행방법.

 보통 방치형은 놔두면 업글해놓은 모든 슬롯이 자동생산됩니당.

 저는 이게 싫어서, 클리커를 추가하면서 슬롯중 어떤 한개만 ( 단검만들며 장검만들기는 불가능 ) 선택생산하는 것을 목적으로 하였구요.


 결국 중간에 유료시스템 들어가면서 전체생산 스크립트도 추가되었지요.


 알파테스트는 7월 4일부터 계속 업로드하며 진행했구요 ( 인앱결재 + 구글로그인 )


     ▲ 알파버전 출시기록


스크롤이 기니까 다시한번 플로우 올립니당.


 퍼포먼스 개선도 꾸준히 해왔지만 Transparent 문제로 오늘( 07-26 ) 줄이고 패킹도해서 필드배치 170단위로 줄였지만 아직 제 테스트폰 S5는 30프레임.

 폰 프로파일러 돌려봐도 Transparent 외에는 문제점은 보이지 않네요.

 에디터에서는 로딩빼고 100프레임 꾸준히 나오고 있는데 30프레임보다 더 높일 수 있는지는 좀더 연구해봐야할 문제인것 같아요.


 이번앱 개발하면서 멀미났던게 구글로그인이었던 것 같아요.

 인앱결재때 시달렸던 문제가 동일하게(...) 나타나서 확인해보니 '플레이스토어에서 다운받아서 테스트' 가 선제조건이더군용.

 그이후 10002에러도 뜨고 별별 에러를 다 보고 구글쨩과 신나게 상담해서 결국 해결했지만요 ;)

 해당 에러를 해결하느라 하루종일 APK파일을 업로드하고 폰테스트하고 ( 밥먹고 ) 테스트하고 구글링하고 ( 밥먹고 ) 테스트하고 구글링하고... 장장 12시간을 매달려 했던 기억이 있네요..


 21일 내일의석(UndeadX)님이 아카베리 스튜디오를 방문하여 알파테스트 해주셨고, 피드백을 결과로 수정해서 좀더 리드미컬하고 경쾌하게 바뀌었어요!

 내일의석님 감사해요+_+!

 버전업을 위한 기반로직( 추후 업데이트시 자연스럽도록 )을 수정하고, 버전업시 공지를 띄우면서 보상을 지급하는 시스템을 같이 만들어 넣었구요.



 로직측면에서는 이번에 많이 배운것들이 있는데, 아카베리 프레임워크는 3년차가까이 접어들고 있는데도 개선해야할점이 언제나 눈에 쇽쇽.


 IO부분은 빠른 개발(빠른퍼포먼스X)을 위해 기존에 개발했던 XML 시스템을 그대로 가져와서 간편하게 1개 xml파일로 읽어들이고 있어요.

 XML을 사용하는 게임은 아직 많지만 구식인 느낌을 지울 수 없네요, 추후 이슈가 있다면 개편해야겠어요 ;D


▲ 1.197버전 기준 XML 로드갯수


모든 로케일과 게임데이터가 포함 452라인이에요.

내용은

1. 제작아이템 데이터

2. 스킬 데이터

3. 환경 데이터

4. 장비 데이터

5. 유료 데이터

6. 로케일

7. 퀘스트 데이터

8. 버전 데이터


요렇게 포함되어있구요, 게임을 시작하면 코루틴 yield return null 을 포함하며 적절한 프레임을 내주며 읽어주고 있어요.

게임을 시작하면, 뉴게임인 경우 XML 데이터 기준으로 플레이어 데이터를 만들어주며 시작됩니당.


현재 개선해야할 점은 게임데이터와 슬롯데이터를 따로가지고 있으면서 퍼포먼스를 위해 다이렉트접근으로 사용하고 있었는데,

그럴바엔 아예 게임데이터 안에 슬롯 Transform을 null값으로 가지고있다가 데이터로드시 슬롯을 만들면서 이 null에 슬롯 Transform을 추가하는 형식도 좋을 거 같아요.

따라서, 슬롯화 될 수 있는 아이템은 SlotTransform을 가진 클래스를 상속받아 이 정보에 실제 슬롯정보를 담아내는거지요.

그러면 WeaponGameData GetWeaponGameData( string weaponId ) 요런 함수가 필요없게되는거지요.


슬롯을 추가하면서 AddSlot() 내부에서 WeaponGameData.SlotTransform = newSlotTransform; 이런식으로 넣어주고, 저장시에는 [NonSerializable] 같은걸로 저장에서 제외하면 될거에요.


다음프로젝트는 '인벤토리' 기능이 있어야하니까 특정 num위치의 슬롯을 제외하고, 검사를 통해 슬롯넘버+위치를 보정하는 스크립트를 만들어야해요.


EX) 1~10번중 5번아이템을 판매, 6~10 아이템이 5~9 위치로 이동.

위치값(inventory index)도 SlotTransform 클래스에서 가지고 for를 아이템count만큼 돌면서 인벤토리에 정렬.


벌써부터 어서 다음프로젝트를 진행하고 싶네요 :D


 뒤로갈수록 그래픽 리소스 = 유료시스템 인데, AiDoll 사이즈의 옷이 별로 없어서 뒤쪽에서 몰아서 2벌( 세라복, 로리타양복 )을 만들어냈고,

 악세사리류도 4종씩 2차례 만들어서 8개 만들고...(!)

 1인개발인데다 로직도 이런저런시스템으로 인해 너무 리소스에 신경을 못썼더라구요~


 다음엔 반드시 리소스를 느긋하게 먼저 확보하고 만드는게 좋을 거 같아요! ( 엔드리소스까지 확정후 제작 )

 그렇게 1버전이 탄생했답니당 ☆〃


 아카베리 그동안 고생했어!

 이제 더 고생해!^ㅡ^〃


 라는 자축을 남기며 1버전을 마무리합니다.

반응형

+ Recent posts