[ 2D 우주게임 ]
- FTL 성격의 로그라이크 스테이징
- 생존게임 형식의 스테이지
- 대규모 우주전
- Interactive 마치 GTA느낌의 X3 같은 Free Space 느낌도 살짝 엮기
※ 히스토리
[ 2D 우주게임 ]
- FTL 성격의 로그라이크 스테이징
- 생존게임 형식의 스테이지
- 대규모 우주전
- Interactive 마치 GTA느낌의 X3 같은 Free Space 느낌도 살짝 엮기
※ 히스토리
구글 플레이스토어 / 앱스토어 출시
[ 안드로이드 구글플레이스토어 ]
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)님이 아카베리 스튜디오를 방문하여 알파테스트 해주셨고, 피드백을 결과로 수정해서 좀더 리드미컬하고 경쾌하게 바뀌었어요!
내일의석님 감사해요+_+!
버전업을 위한 기반로직( 추후 업데이트시 자연스럽도록 )을 수정하고, 버전업시 공지를 띄우면서 보상을 지급하는 시스템을 같이 만들어 넣었구요.
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버전을 마무리합니다.
대장장이소녀 리뷰들! (0) | 2018.05.11 |
---|---|
#06. ACADollRefine 리뷰 (0) | 2017.07.24 |
#05. ACADollRefine 릴리즈준비중.. (0) | 2017.07.19 |
#04. ACADollRefine 프로젝트 진행상황 (0) | 2017.06.30 |
#03. ACADollRefine 쥬얼디자인! (0) | 2017.06.26 |
#06. ACADollRefine 리뷰
안녕하세요, 아카베리에용!*
그동안 너무 신나게 개발하느라 시간이 슝슝~ 지나가는줄도 모르고 개발을 ㅠㅠ..!!
마무리단계를 저는 '뚜껑덮기' 라고 칭하고 '얼른 덮자!' 하고 덮는중인데, 결국 기어이 하고싶었던 기능들은 기어이 기어이 기어이...
1인개발의 장점이자 단점이 '만들고싶은대로 만든다'인데, 과거로 거슬러 올라가자면,
제 뇌속에서는 SGA아카데미에서 배웠을때부터 '혼자서 게임프로젝트를 진행한다'에 대한 정의가 내려져 있었을거에요.
▲ SGA 서울게임아카데미 포폴 중( 앨리스 스트라이커 -에이스- )
▲ 엔딩에 등장하는 SGA 지도쌤 리스트
1인 게임개발은 중요한 코어로직 부분을 제외하고도 게임의 완성에 필요한 모든것을 포함하게되는데,
프로그래머 기준으로 보자면 대표적인 예로 UI와 리소스가 될 거에요.
프로그래머라면 '리소스를 어디서 구해야하죵!?' + 'UI는 어떻게 구성하는건가요? 걍 잘된거 따라하는거 아닌가용?' 라는 빅 물음표를 만들게 되니까요.
에셋스토어가 발달되서 유니티에서 바로 불러와 적용 가능하게 된 시점에서 많은부분 해소가 되었지만, 여전히 문제는
1인개발 = '만들고싶은대로 만든다'
라는 문제가 있어요.
저는 '제가 만들고싶은대로' 만들기를 원해요!
주변에서 잘된거 가져와라. 이거랑 저거 개구리다. 등등 조언을 해주었지만 저는 제가 할수 있는 모든것을 해보려 했지요.
그래서 이 티스토리에는 상당수의 테크니컬씬(이라고 하나요? 데모씬)까지만 구현된 프로젝트들이 우글오글우글오글 =3
결국 욜심히 욜심히 만들어서 대장장이소녀를 만들게 되었어요.
프로젝트명 ACADollRefine로 시작한 이 게임은 '클리커 + 방치형' 을 모토로 시작한 게임이구요.
만들다보니 정말 욕심이 너무많이 났지만 그동안 갈고닦은 발노하우를 되짚어서 '아 덮자 덮엉!><' 하며 뚜껑닫기를 무한시전.
예전에는 모토가 '올해안에 어플 내야지' 였는데,
그게 차츰 '1달내로'
'1주일내로'
'내일까지'
라고 줄여도 말과 의도만 줄일뿐 이게 '런칭 가능한 정도의 사양' 이 되려면 항상 '앞으로 1달더 필요' 의 상태가 되었지만 결과적으로는 신나게 뚜껑덮는 상황이 연출이 되어,
시스템이 계속 추가됨에도 불구하고 추가되는 시스템의 사이즈가 '내일까지'가 되는 좋은 방향성이 되어 돌아왔어요.
예를들면 최근의 '출석이벤트' + '접속시간이벤트'를 넣자! 라고 했는데, 실제 걸린 시간은 1일이었구요.
출석이벤트때문에 웹시간 가져오는 스크립트를 미리 아카베리 라이브러리에 추가한 상태에서, 그것을 이용해서 시간별로 보상받기 시스템을 만들어낸 것이죠!
그래서 예를들어볼까요?
일일 접속시간이벤트 개발기록을 한번 써볼께요.
제일먼저 할일은 '아 이거 해야겠다' 하고 이슈를 구닥에 등록해요.
1.194 | 7. 23 | 타임이벤트 | 출석 / 접속시간 이벤트 |
( 회색은 이미 완료된 이슈 )
그리고 제작에 들어가는거죠!
▲ 1일 소요된 '데일리보너스 시스템'
시스템은 간단해요.
1시간 접속하면 10개의 보석을,
2시간 접속하면 20개의 보석을 ( 1시간보너스 합 총 30개 획득 ) 획득하는 시스템이에요.
※ 총 5시간접속 150개 획득하겠지요?
모든 게임에 있는 시스템이고 딱히 어려울것 없어보이는 시스템이지만 막상 만들려다보면 UI부터 시작해서 이것저것 잡탕이 산처럼 몰려오지요.
이 시스템을 추가하면서 제 모토인 '먼저 그래픽적인 부분을 만족해보자'로, UI창을 만들고, 게이지를 만듭니당.
▲ 시간별로 얻을 수 있는 표시계
네, 프로그래밍으로 말하자면 '하드코딩' 이에요.
이제 이 이벤트를 멈추거나, 조정하려한다면 반드시 신나게 UI를 만져야하는 상황이 우글오글 몰려오겠지요 (...!!)
괜찮아요, 1인개발이니까!
현업이라고 해도 항상 아래처럼 간지나게
SetEventJewelOnTime( 60, 10 );
SetEventJewelOnTime( 120, 20 );
...
※ 핑크색은 XML에서 가져오는 데이터
아무것도 안건드리고 코드에서 이렇게만 추가하면 자동으로 UI부터 쇼쇼쇽 뾰롱 하고 만들어지고 있다고 볼수는 없으니까요+_+!*
밸런스는 항상 엑셀데이터를 보며 짜는게 제일 좋은 것 같아요. 눈에 보기 편하고 쉽게 수식때려서 맞는지 볼 수 있어요!
▲ 프로젝트 스프레드시트상의 데이터. 총 150개의 쥬얼획득. 세번째줄은 게이지 설계를 위한 %율을 표기
위처럼 데이터를 갖고있으면 나~~~중에 봤을때 밸런스데이터를 왜 이렇게 만들었는지, 밸런스를 왜 이렇게 짰는지 볼때 편하니 여러분들도 꼭꼭 기입해두세요.
이 아이 출처요?
▲ 미키 ( http://blog.naver.com/silverlightw/140195964554 )
'미키'로 저장되어있는 '활력소를 줄게요!' 하는 캐릭터에요.
2013년 8월에 태어난 파랑머리 미키는 이미 '미키'라는 이름을 가지고 있던 아이가 있었기에 '미키2'가 맞아요.
▲ 미키 ( http://blog.naver.com/silverlightw/140130000491 )
얘가 원조미키 ( 라고는 해도 제목이 미끼아아 ㅠㅠ 라고(..) )
2011년 5월생이에요.
이때그림이 좀 더 어른느낌이었던 감이.. ( 지금봐도 비율이 좋아서 과거에 더 잘그렸던거같은 느낌 )
어쨌든 사골곰탕 우려먹기로 무려 4년전 일러스트를 곱게 고와봅니다.
옆에 대사창은 로케일을 사용해요.
TryDailyBonus | 오늘도 보너스 모두 수거할때까지! 힘내요! 대장장이소녀씨!♥ | Hi BlacksmithGirl! Lets get Jewel On Time EVENT!♥ | 鍛冶屋さん! 今日もオンタイムボーナス 全部もらいましょう♥ |
DoneDailyBonus | 고생하셨어요~! 오늘의 보석을 모두 수령했답니다! 내일다시 만나요^^♥ | Thank you so much! See you tommorow♥ | お疲れ様です! 今日の分全部取りました! また明日ね♥ |
DailyInfo | ※ 매일 새벽 6시에 초기화되어요! | ※ Renew Everyday AM06:00 (Korea Time)! | ※ 毎日午前6時に再挑戦できます |
위같이 세개의 로케일이 사용되구요, 영어는 발글리쉬(..)니 이해를 해주세요. 1인개발이라 그 1인개발하는 닝겐의 실력이 반영되는거지요 ㅠㅠ.
괜찮아요, 일본어는 JLPT 2급의 위력을 유감없이 ( 2급주제에 자랑질ㄴ )
그리하여, 위의 로케일은 해당 언어에 맞게 데일리보너스때 미키2의 말풍선에 보여지게 되지요. ( 미키2는 삼개국어 능통녀 )
▲ Arial 공짜폰트
그냥 폰트만 넣자니 심심해보일수 있어서 글로우 느낌이 나는(안어울리지만..)걸 하나 추가해보았어요.
요렇게 위의 일러와 대사부분이 완료되었고, 보상수령로직은 아래와 같아요.
▲ 데일리보너스 수령전 ( 2시간 )
데일리보너스는 위처럼 합산되어 원터치로 30개를 수령할 수 있도록 설계했어요.
그리고, 수령을 완료하게되면 아래처럼
▲ 데일리보너스 수령후 ( 2시간 )
2시간부분까지 진한색으로 덮고, 버튼은 사라지는 형태가 되지요><!*
5시간 놔두고 원클릭 수거도 가능하고, 그냥 놔두고 꺼도 재접속시 누적접속시간 유지해서 계속 진행되지요~
위 창을 띄우려면 메인화면의 왼쪽에 있는 작은 아이콘을 눌러야하는데요,
<- 비록 구석탱이에 작은 아이콘으로 보이긴 하지만요~
위 상태에서 수령 가능한 상태가 되면 퀘스트에서 표시하던 느낌표 표시 ( ! ) 를 옆에 같이 띄워주어요!
그리고 갱신타이밍 관련해서는 매시간 업데이트할 수 없기때문에, 코루틴으로 1분단위로 돌면서 데이터를 갱신하고,
bool값을 만들어 저 창이 열려있는 상태일때 이거나, 아이콘을 터치해서 창을 띄웠을때 1회 갱신하는 형태로 코드를 구성해요!〃
그리고 데이터보존을 위해 ( 일일이벤트만 터치후 종료하는 유저 ) 보상수령시 저장은 필수지요!
이런식으로 프로젝트가 진행되고 있지요!*
이제 디자인만 조금 더 하고 출시하도록 하겠사옵니다+_+★
< 등장하는 아이들 소개 >
▲ 메인 퀘스트녀 <루미네 나츄> ( http://blog.naver.com/silverlightw/220646032448 )
▲ 서브퀘녀 <쥬미> ( http://blog.naver.com/silverlightw/140208419707 )
▲ 서브퀘녀 <라벨리아 미모> ( http://blog.naver.com/silverlightw/140148082535 )
링크를 보시면 아시겠지만 얘 본명은 미모*닐 이에요~
대장장이소녀 리뷰들! (0) | 2018.05.11 |
---|---|
#07. 대장장이소녀 리뷰 (2) | 2017.07.26 |
#05. ACADollRefine 릴리즈준비중.. (0) | 2017.07.19 |
#04. ACADollRefine 프로젝트 진행상황 (0) | 2017.06.30 |
#03. ACADollRefine 쥬얼디자인! (0) | 2017.06.26 |