본문 바로가기

카테고리 없음

[1인개발] 10번째 게임출시

드디어 10번째 게임을 출시했습니다.

2018년 여름에 첫 게임을 오픈하고, 약 3년정도 그저 묵묵하게 (돈을 못벌었다는 뜻임ㅋ) 혼자 삽질을 했군요.

회사 그만두고 게임으로 돈벌어서 먹고사는게 꿈인데, 이제좀 잘 되었으면 좋겠습니다ㅋ

 

자, 그래서 이번 10번째 yonefactory사의 게임. Pixel Star의 에필로그입니다.

 

 

0. 디자인 산출물


 

 

1. 레이아웃


매 프로젝트마다 상단 노치, 하단 배너때문에 고생했는데, 이제서야 약간 아주 약간, 적응을 한거 같습니다.

 

사실 Layout Element 참 별거 없는데 저 체크박스들이 위에서부터 순차적으로 우선순위가 있다는 걸 알면서 조금더 개념이 좀 잡혔습니다. 어찌보면 당연한 소린데. 막상 그 개념없이 이것저것 중복으로 쓰다보면 생각하는데로 잘 안되더라구요.

(출처 : Unity Chapter 10-4. UGUI : 레이아웃 컴포넌트 - 평생 공부 블로그 : Today I Learned‍ 🌙 (ansohxxn.github.io))

 

그래서 상단 노치와, 하단 배너의 min height 값을 셋팅하고, 나머지 영역을 playground로. 모든 작업은 playgorund내에서만 처리하는 식으로 진행했습니다. 아래 언급하겠지만, admob 플러그인이 업데이트 되면서 유니티 에디터에서 영역이 표시되더라구요. 이걸 진작좀 지원해줬음 그 고생을 안했을텐데요 ㅋ

 

 

 

2. 픽셀이미지 컨텐츠


스테이지형 게임방식이다보니 각 스테이지 별로 컨텐츠를 노가다로 만들어 줬습니다.

초반엔 깔끔한 이미지로 만들어서 앱에서 로드하는 식으로 구현하려 했으나, 스테이지가 방대해 진다면 (물론 잘되서 업데이트를 한다면 ㅋ) 모든 이미지 파일을 게임에 우겨 넣는게 매우 버든이 될거란 생각에,

이미지 파일 대신 픽셀 Color값을 json으로 저장하였습니다.

{
    "items":
    [
        {
        "index" : 1,
        "row" : 8,
        "mapData" :
            [
                "0x00000000, 0x00000000, 0xff000000, 0xff000000, 0xff00ffdf, 0xff00ffdf, 0xff00ffdf, 0xff00ffdf", 
                "0x00000000, 0xff000000, 0xff00ffdf, 0xff00ffdf, 0xff00ffdf, 0xff000000, 0xff000000, 0xff000000",
                "0xff000000, 0xff00ffdf, 0xff00ffdf, 0xff00ffdf, 0xff000000, 0xff006bff, 0xff006bff, 0xff006bff", 
                "0xff000000, 0xff00ffdf, 0xff00ffdf, 0xff000000, 0xff006bff, 0xff006bff, 0xff000000, 0xff000000", 
                "0xff00ffdf, 0xff00ffdf, 0xff000000, 0xff006bff, 0xff006bff, 0xff000000, 0xffff9400, 0xffff9400", 
                "0xff00ffdf, 0xff000000, 0xff006bff, 0xff006bff, 0xff000000, 0xffff9400, 0xffff9400, 0xff000000", 
                "0xff00ffdf, 0xff000000, 0xff006bff, 0xff000000, 0xffff9400, 0xffff9400, 0xff000000, 0xff000000", 
                "0xff00ffdf, 0xff000000, 0xff006bff, 0xff000000, 0xffff9400, 0xffff9400, 0xff000000, 0x00000000"
            ]
        },
        {
            "index" : 2,
            "row" : 9,
            "mapData" :
                [
                    "0x00000000, 0x00000000, 0xff000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000", 
                    "0x00000000, 0xff000000, 0xff1d8b1e, 0xff1d8b1e, 0xff000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000", 
                    "0xff000000, 0xff1d8b1e, 0xff1d8b1e, 0xff1d8b1e, 0xff000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000", 
                    "0xff000000, 0xff1d8b1e, 0xff1d8b1e, 0xff007cff, 0xff007cff, 0xff000000, 0x00000000, 0x00000000, 0x00000000", 
                    "0x00000000, 0xff000000, 0xff007cff, 0xff007cff, 0xff007cff, 0xff007cff, 0xff000000, 0x00000000, 0x00000000", 
                    "0x00000000, 0x00000000, 0xff000000, 0xff007cff, 0xff007cff, 0xff007cff, 0xff007cff, 0xff000000, 0x00000000", 
                    "0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xff007cff, 0xff007cff, 0xff007cff, 0xff007cff, 0xff000000", 
                    "0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xff000000, 0xff007cff, 0xff007cff, 0xff000000", 
                    "0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xff000000, 0x00000000"
                ]
        },

...

 

Json IO는 예전 프로젝트에서도 다뤄봤고, 워낙 레퍼런스가 많아서 크게 문제가 되지 않았습니다.

다만, Json 구성을 저따구로 밖에 못했던 이유는(ㅠ) 이미지 픽셀별 Color값을 export해주는 프로그램에서 저렇게 밖에 안줘서 입니다.ㅠㅠ

 

물론 png를 로드하고 pixel 별로 color 값을 추출하여 그걸 Json으로 뱉어서 들고 다닐순 있었지만, 조금 귀찮지만 노가다로 만드는 즐거움도 느끼기 위해서 ㅋㅋㅋㅜㅜㅠㅠㅠ

 

Pixel 이미지는 Piskel(Piskel - Free online sprite editor (piskelapp.com))을 이용했습니다.

이또한 수많은 레퍼런스가 있어서 자세한 설명은 패스하겠습니다.

 

 

스테이지 데이터 관리는 Figma(https://www.figma.com)를 사용하였습니다.

나름 전략적으로 쉽고 어려운 스테이지를 골고루 잘 섞었답니다. ㅋ

 

 

 

3. Admob


매~~~번 Banner 사이즈 때문에 몇번이나 추가 빌드를 했었던 고생을 했었는데,

정말 너무나도 놀랍게도 이제 더이상 고민할 필요가 없어졌습니다.

 

Added mock ad views to enable developers to test ad placement and callback logic within the Unity editor.

이미 작년 11월 부터 지원되고 있던 기능이였는데 이제서야 알고 매우 흡족해 하고 있습니다 ㅋ 크하!!!

그외에 이벤트 처리등 API 변경사항들이 많아서 기존에 쓰던 AdManager와 호환이 되지 않았습니다.

주기적으로는 아니지만 Plugin 릴리즈 노트를 가끔씩은 확인하는 습관을 들여야겠네요.

 

 

 

4. iOS 등록


유니티로 무사히 빌드를 마치고 또한번 xcode빌드를 해야 하는 과정에서 계속해서 바뀌는 ios, xcode 버젼, apple 정책으로 한방에 (또는 두방에) 등록까지 가는건 기대하기 힘들고, 그냥 받아들이기로 했습니다.

 

이번엔 그나마 3개정도의 에러를 만났고, 구글링으로 해결되는 난이도 낮은 녀석들이여서 좀 수월했습니다.

 

수출 규정 관련 문서 누락 

해결 : [Unity3D] iOS AppStore publish 중 이슈 (tistory.com)

 

[Unity3D] iOS AppStore publish 중 이슈

Unity 2019.4.11f1 Xcode 12.0.1 2020년 10월10일 기준 이후 변동될 가능성 있습니다. 1. 수출 규정 관련 문서 누락 [Solved] Xcode 빌드시 info.plist에 App Uses Non-Exempt Encryption : NO 항목 추가 2. WAR..

yonefactory.tistory.com

 

ITMS-90206 : Invalid Bundle
- The bundle at 'OOO.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'.

해결 : ERROR ITMS-90206 해결 방법 (Invalid Bundle - UnityFramework 오류) (tistory.com)

 

ERROR ITMS-90206 해결 방법 (Invalid Bundle - UnityFramework 오류)

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'OOO.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'." 유니티 프레임워크 에러 발생 아카이브 만든 후에 우클릭 쇼 인 파..

gonslab.tistory.com

 

ITMS-90427: Invalid Swift Support
 - The expected dylibs are missing from the app’s Framework location, such as /Payload/OOO.app/Frameworks.

해결 : ITMS-90427: Invalid Swift Support - Unity Forum

 

ITMS-90427: Invalid Swift Support

XCode 12.4 Unity 2020.1.5f1 I (unfortunately, damn Apple) updated XCode and now I'm having issues trying to upload my app to the App Store. With the...

forum.unity.com

 

 

5. Summary


최초 commit 부터 약 한달간 진행했던 프로젝트로, 특별한 백본과 특별한 이슈는 없었던게 대체적으로 만족스럽습니다. 하지만 중간에 Capture기능을 구현하기 위해서 약 2틀간의 삽질후 결국 해결하지 못했던점은 다음 프로젝트에서 다시 들여다 봐야할 과제로 남겨두겠습니다.

 

그리고 개발은 끝났지만 아직 끝나지 않은(시작도 안한) 마케팅은 Facebook 광고를 시도해볼 계획이며, Admob 미디에이션을 통해서 Facebook 광고도 끌어올 계획입니다. Admob API 도 좀더 심도있게 들어다볼 필요도 있어보이구요.

 

그럼 남은 숙제를 하러. 20000