감기 걸렸다.

|


감기는 언제걸려도 괴로운 것.


'잡담' 카테고리의 다른 글

게임 업계가 고사될 수 있는 '7가지' 문제점  (0) 2016.06.12
And

생과 사의 기로에 선 휴대용 게임기, 그 운명은?

|

한 때 ‘게임보이’가 부의 상징으로 여겨지던 시절이 있었다. 게임기도 PC도 너무 비쌌던 시절, 게임보이를 가진 아이는 친구들 사이에서 정말 대단한 대접을 받았다. 지금 생각해보면 녹색 화면에 삑삑거리는 단조로운 사운드, 그리고 잘 해야 대만산 100 in 1 따위의 짝퉁 합팩이나 쓰던 시절이었지만 당시 ‘게임보이’는 최첨단의 놀잇감이었다.

20여년이 지났다. ‘게임보이’의 먼 후손이라 할 수 있는 닌텐도의 ‘3DS’ 게임기는 아직도 휴대용 게임기 시장을 꽉 쥐고 있다. 게임보이가 그랬던 것처럼, 3DS는 아이들 사이의 필수품이다. 대형마트에 가면 닌텐도 3DS 코너가 차려져 있고, 엄마 손을 붙잡고 온 아이들이 ‘닌텐도 게임’을 사달라며 조르는 모습을 쉽게 볼 수 있다.

그런 겉모습과는 다르게 휴대용 게임기의 시대는 저물고 있다. 이제 지하철을 타고 있는 사람들의 손에는 휴대용 게임기가 아니라 스마트폰이 있다. 스마트폰이 막 세를 불려가던 5~6년전만 해도 ‘앞으로도 당분간 휴대용 게임기는 자신의 영역을 지킬 것’이라는 예상이 많았지만, 지금은 휴대용 게임기 시장이 몇 년 내로 사멸할 것이라는 극단적인 의견마저 나오고 있다.

휴대용 게임기 최후의 제왕, 닌텐도
닌텐도는 1989년 ‘게임보이’ 이후 지금까지 휴대용 게임기 시장의 제왕 자리에서 물러나 본 적이 없다. 1990년대 중반 닌텐도 가정용 게임기가 죽을 쑤던 시절에도 게임보이 만큼은 잘 팔렸다. 90년대 내내 세가, SNK, 반다이 등 여러 회사가 휴대용 게임기 시장에 도전장을 내밀었지만 모두 실패했다.

2000년대에 들어서자 휴대용 게임기 시장은 닌텐도의 독무대였다. 그나마 소니 정도가 2004년 ‘플레이스테이션 포터블’을 내놓으며 휴대용 게임기 시장에 적극적으로 도전했다. 소니가 열성적인 ‘코어 게이머’를 위해 내놓은 PSP는 단종될 때까지 약 8천만대가 팔리며 선전했다.

소니도 휴대용 게임기 시장에서 결국 닌텐도의 아성을 넘지는 못했다. 지난 2011년 PSP의 후계 기종으로 등장한 ‘플레이스테이션 비타’는 최대로 잡아도 현재까지 약 1000만대가 팔린 것으로 추정되고 있다. 비슷한 시기에 닌텐도가 내놓은 ‘닌텐도 3DS’ 시리즈에 비하면 1/6 정도의 판매량이다. 망했다고 보기에는 많이 팔렸고, 성공했다고 보기에는 영 애매한 판매량이다.

소니가 비타의 하드웨어를 이용해 내놓은 염가형 가정용 게임기 ‘플레이스테이션 TV(PS Vita TV)’는 아예 생산이 중지되었다. 그래도 소니는 2세대 ‘비타’를 내놓았고, 비타 게임은 여전히 나오고 있지만 미래는 매우 어둡다. ‘퍼스트파티인 소니조차 비타 게임을 개발하고 있지 않다’ 등의 흉흉한(?) 소문이 돌고 있다.

한편 닌텐도는 휴대용 게임기 DS와 3DS를 합쳐 2억대 이상의 판매량을 기록했다. ‘게임 인구의 확대’를 내세우며 내놓은 DS 시리즈는 하나의 사회 현상으로 일컬어 질 정도로 큰 성공을 거뒀다. 코어 게이머들에게는 저열한 성능이라고 비판을 받았지만, ‘일반인’들은 결국 닌텐도DS를 선택했고 소니의 도전을 2배 가까운 성적으로 누르며 승리했다.

붕괴하는 휴대용 게임기 시장
휴대용 게임기 시장에서 닌텐도가 차지하는 위상도 서서히 빛이 바래고 있다. 3DS의 판매량은 이미 크게 꺾인 상태다. 닌텐도는 2015년 3DS 판매량을 760만대 선으로 예상했는데, 실제로는 660만대 정도가 팔려 실적 발표를 수정해야 했다. 이 판매량은 그 전해에 기록한 873만대에 비해 약 25%정도 감소한 수치다.

닌텐도 3DS는 2011년도에 발매된 물건이니 갈수록 판매량이 줄어드는 것 자체는 자연스러운 일이다. 게임 산업에서 말하는 ‘5년의 주기’에 따라 새로운 ‘세대’로 교체하면 된다. 진짜 큰 문제는 휴대용 게임기 시장 자체가 급격한 변화를 겪고 있다는 사실이다. 말 그대로 시장이 급격하게 쪼그라들고 있다.

게임 전문 시장 조사 업체인 Newzoo는 2016년 전 세계 게임 시장을 볼 때 휴대용 게임기 관련 시장의 매출은 약 18억 달러를 기록할 것으로 예상했다. 이 매출은 전체 게임 시장에서 2% 정도에 불과하며, 이조차 지난해에 비해 -24% 역성장 한 수치다. 다른 모든 게임 시장이(가정용 게임기, PC 게임, 모바일 게임 등) 성장하는 사이 홀로 시장이 축소되고 있는 상황이다.

다른 시장 기관의 전망도 큰 차이가 나진 않는다. 구체적인 예상 수치의 차이는 있지만, 휴대용 게임기 시장이 현재 상태를 유지하리라는 전망조차 거의 없다. 최악의 경우 2018년까지 시장 규모가 매 년 20%씩(!) 줄어들 것이라는 전망도 있다. 이대로 간다면 정말 몇 년 내로 휴대용 게임기 시장이 사라질 것이다.

‘진짜’ 휴대용 게임을 누른 ‘가짜’ 모바일 게임
이런 휴대용 게임기 시장의 축소는 몇 년 전 스마트폰 보급의 시작과 함께 예견된 일이긴 했다. 당시 몇몇 낙관적인 사람들은 스마트폰의 보급이 조만간 가정용 게임기 시장은 물론 PC 시장까지 위협하리라는 주장을 내놓기도 했다.

물론 코어 게이머들은 대놓고 비웃었다. 스마트폰이 아무리 잘나도 휴대용 게임기를 절대 따라올 수 없다는 시각이 많았다. 어찌 휴대용 게임기의 게임패드와 스마트폰의 거지 같은 터치스크린 조작을 비교할 수 있겠는가? 심지어 ‘저건(스마트폰 게임은) 가짜 게임이다. 스마트폰의 스펙이 겉으로는 우월하다고 해도 진짜 게임에 특화된 휴대용 게임기는 이런 도전을 능히 물리칠 수 있을 것이다!’라는 자신감도 널리 퍼져 있었다. (놀랄 것도 없이, 지금도 그렇게 생각하는 사람이 있다)

이를 증명하기라도 하듯 2011년 닌텐도 3DS와 소니의 플레이스테이션 비타가 등장했고 치열한 경쟁을 벌였다. 강력한 성능을 자랑하는 비타와 저렴한 사양이지만 대중적인 3DS의 대결은 게이머 사이에서 다시 한 번 화제가 되었다. 코어 게이머들의 주장대로 초창기 스마트폰 게임은 조잡하기 짝이 없었고, ‘진짜’ 휴대용 게임기의 조작을 따라올 수 없었다.

문제는 스마트폰을 사용하는 일반인들이 전혀 그렇게 생각하지 않았다는 점이다. 이들은 주머니에서 바로 꺼내 간단한 조작으로 즐길 수 있는 스마트폰 게임에 만족했다. 휴대용 게임기는 점차 뒤로 밀려나고 있었다. 3DS와 비타가 등장하기 전부터 이미 그런 조짐은 여기저기서 보이고 있었다.

2009년, 핀란드의 로비오라는 작은 회사가 아이폰용으로 간단한 퍼즐 게임을 내놓았다. 괴상하게 생긴 새를 날려보내 돼지를 맞추는 게임인데, 1200만건의 다운로드를 기록하며 화제가 되었다. 이 게임의 이름은 바로 ‘앵그리 버드’로 지금까지 20억건 이상의 다운로드를 기록했다. 물론 무료 게임의 다운로드 건수를 휴대용 게임의 판매량과 1:1로 비교할 수는 없지만, 최소한 휴대용 게임기보다 훨씬 폭넓은 유저를 보유하고 있음은 알 수 있다.

2011년의 상황은 더 심각해졌다. 닌텐도 3DS와 소니 플레이스테이션이 발매된 바로 그 해다. 게임왕국 일본에서도 스마트폰 게임 붐이 일었다. 9월 모바게에서 서비스를 시작한 ‘신격의 바하무트’는 서비스 6개월도 되지 않아 100만명의 회원을 끌어 모으며 돌풍을 일으켰다. 11월에는 역시 모바게에서 ‘아이돌마스터 신데렐라 걸즈’가 서비스를 시작해 막대한 회원을 끌어 모았다. ‘소셜게임’ 열풍의 시작이다.

전통적인 게임을 즐기던 사람의 입장에서 이런 ‘소셜게임’은 아예 게임이라고 부를 가치도 없는 것들이었다. 유저가 뭘 할 것도 없이 돈을 쏟아 부어 얻는 캐릭터 카드의 강약으로 승패가 결정되는 방식이니 말이다. 유료 확률형 아이템, 일명 ‘가챠’에 노골적으로 의존하고 있는 소셜 게임을 그냥 ‘도박’이라 부르는 사람도 많았다.

그런데 ‘게임도 아닌’ 것들이 막대한 매출을 올리기 시작했다. 스마트폰 앱 마켓 최상위권에 들면 하루에만 몇 억원의 매출이 발생한다는 소문이 돌기 시작했다. 동서양 가릴 것 없이 온갖 회사가 모바일 게임 사업에 뛰어들었다. 순식간에 게임도 아닌 게임들이 화제의 중심이 되었다. 한국도 2012년 ‘애니팡’을 선두로 모바일 게임 열풍이 불었고 골수 게이머들은 경멸의 시선을 보냈다.

심지어 이전까지 가정용 게임기나 휴대용 게임기로 ‘진짜’ 게임을 만들던 회사들도 하나 둘 모바일 게임에 뛰어들었다. ‘아이돌마스터 신데렐라 걸즈’는 반다이남코가 IP를 활용해 만든 소셜 게임이었고, ‘파이널판타지’ 시리즈와 ‘드래곤퀘스트’로 잘 알려져 있는 스퀘어 에닉스도 2012년 4월 ‘확산성 밀리언아서’를 내놓으며 경쟁에 돌입했다.

스마트폰과 휴대용 게임기의 융합을 꿈꾼 소니의 시도
엄밀히 말해 스마트폰과 모바일 게임이 휴대용 게임기의 영토를 ‘잠식’한 것은 아니다. 이들은 완전히 ‘새로운 게임과 생태계’를 만들어 냈다. 아이러니하게도 이런 구도는 닌텐도가 10여년 전 DS를 만들며 목표로 했던 그것이었다. 닌텐도는 게임 인구의 확장을 위해 DS를 개발했는데, 채 10년도 되지 않아 스마트폰이 DS가 했던 그대로 일반 대중 사이에서 ‘게임 인구의 확장’을 하기 시작했다.

시대의 흐름에 소니나 닌텐도 모두 그냥 손만 놓고 있던 것은 아니었다. 소니는 일찍부터 휴대용 게임기와 스마트폰의 통합 플랫폼을 생각하고 있었다. 소니 에릭슨이 2011년 봄 출시했던 ‘엑스페리아 플레이(Xperia PLAY)’는 그런 시도의 일부였다. 이 스마트폰은 안드로이드 운영체제를 기반으로 ‘플레이스테이션 모바일’이라는 게임 플랫폼을 얹어 스마트폰과 휴대용 게임기를 동시에 추구하려 했다.

소니에릭슨 '엑스페리아 플레이'. PSP폰이 나온다는 루머로 잘 알려져 있었지만 실제 나온 결과물은...

그러나 소니의 시도는 혹평을 받으며 끝났다. 안드로이드 운영체제 위에 플레이스테이션 모바일이라는 플랫폼을 또 얹어서 게임을 돌린다는 것 자체가 너무나 머저리 같은 짓이었다. 한정된 스마트폰 사양에서 일부러 자원을 쪼개 별도의 플랫폼에 얹은 게임을 돌리는 것 보다 아예 iOS나 안드로이드 같은 스마트폰 운영체제로 게임을 리메이크 해 돌리는 것이 백배 나았다.

시장의 형편없는 반응에 소니는 엑스페리아 플레이를 곧 포기했다. 대신 이번에는 휴대용 게임기 ‘플레이스테이션 비타’를 스마트폰과 유사하게 만들어 내놓았다. 인터페이스만 해도 기존 PSP에서 사용하던 XMB 대신, 터치를 기반으로 한 스마트폰 인터페이스와 비슷하게 만들어 내놓았다.

PSP의 기본 인터페이스. 십자키와 버튼 입력을 기준으로 만들어진 UI다.
반면 플레이스테이션 비타는 스마트폰과 유사한 인터페이스를 채택했다

실제로 화면의 아이콘을 손가락으로 꾹 눌러 이동하거나 삭제할 수 있는 비타의 인터페이스는 꽤 이질적이었다. 아예 스마트폰에서 유행하던 ‘소셜 게임’을 ‘플레이스테이션 스토어’에 비타 용으로 내놓기도 했다. 예를 들면 ‘확산성 밀리언아서’ 비타판이 그랬다.

이 역시 썩 좋은 반응을 얻지는 못했다. 양손으로 들고 하는 휴대용 게임기의 특성상 터치 조작과 게임 패드 둘 다를 이용한 조작은 조화롭게 어울리지 못했다. ‘소셜 게임’의 비타 출시도 대단한 반향은 없었다. 어차피 소셜 게임을 할거면 언제나 몸에 지니고 있는 스마트폰으로 하지 왜 굳이 비타로 하냐는 반응이었다.

몇몇 게임은 쓸데없이 터치 조작을 요구했는데, '하츠네 미쿠 프로젝트 디바 f' 가 그랬다. 노트를 십자키와 버튼으로 입력하는 리듬게임인데도 불구하고 몇몇 노트를 꼭 터치로 입력해야 해서 불편하기 그지 없었다.

플레이스테이션 비타를 둘러싼 소니의 시도 중 의미가 있었던 것은 게임 스트리밍과 크로스 플랫폼 플레이였다. 단지 이 시도는 시기가 너무 늦었다. 가정용 게임기인 플레이스테이션3의 화면을 받아와 휴대용 게임기 비타에서 즐긴다는 스트리밍의 개념은 좋았지만, 초기에는 지원하는 게임이 별로 없었고 플레이스테이션4에 가서야 본격적으로 활성화 되었다.

플레이스테이션3과 비타, 혹은 플레이스테이션4와 비타가 같은 게임의 멀티플레이를 함께 즐길 수 있거나 세이브 파일을 공유하는 등의 크로스 플레이 개념은 꽤 참신했지만 이 역시 지원하는 게임이 별로 없었다. ‘스마트폰은 못 하고 오로지 비타만 할 수 있는’ 기능을 찾다 보니 이런 저런 시도가 있었지만, 이미 밀리기 시작한 비타를 살리기에는 역부족이었다.

위유에는 왜 액정이 달린 게임패드가 들어있을까?
한편 닌텐도의 3DS는 사정이 좀 나았다. 닌텐도는 완고하기로 유명했고, 아무리 모바일 게임이 흥행한다 해도 ‘포켓몬스터’ 같은 닌텐도의 주력 게임이 당장 스마트폰으로 나올 리가 없었다. 한 마디로 닌텐도의 멋진 게임을 즐기고 싶으면 3DS를 사든가, 싫으면 말라는 식이었다.

오직 3DS에서만 즐길 수 있는 ‘포켓몬스터’등 닌텐도 게임의 가치는 휴대용 게임기 구매를 유도하기 충분했고, 스마트폰 열풍에도 불구하고 6천만대 이상의 판매량을 기록하며 생존에 성공했다. 다만 불길한 조짐은 보이고 있었다. 닌텐도는 3DS를 판매하며 스마트폰과의 가격경쟁을 위해 가격 인하를 몇 차례 단행해야 했다.

닌텐도도 나름대로 가정용 게임기와 휴대용 게임기의 통합을 실험했다. 그런 시도 중 하나가 2012년 출시된 ‘위유’에 들어있는 액정 달린 게임패드다. 이 게임패드는 닌텐도가 ‘위유’를 내놓았을 때 가장 눈길을 끌었던 부분이다. 일반적인 게임패드는 십자키와 아날로그 스틱, 입력 버튼 정도가 있는데 ‘위유’의 게임패드는 6.2인치의 거대한 액정이 달려있다.

위 유의 가장 큰 특징이라 할 수 있는 게임패드. 근거리에서 TV나 모니터 연결 없이 이 게임패드로 '위유'의 화면을 직접 받아올 수 있다.

‘위유’의 시도는 가정용 게임기와 휴대용 게임기를 분리할 필요 없이 평소에는 티비나 모니터에 화면을 출력하는 가정용 게임기로 즐기다가, 원한다면 게임패드에 화면을 출력해 휴대용 게임기처럼 게임을 즐긴다는 개념이었다. 아니면 게임패드에 있는 액정과 터치 기능을 활용해 독특한 조작 방식의 ‘위유’ 게임을 만들 수 있다.

안타깝게도 이런 개념에는 몇 가지 문제가 있었다. 먼저 ‘위유’ 자체의 성능이 별로 였다는 점이고, 다른 하나는 액정 달린 게임패드의 동작 범위는 위 유 몇 미터 이내 정도로 제한됐다는 점이다. 설정을 제대로 한다면 TV와의 연결 없이 본체와 게임패드로만 게임을 즐긴다는 점은 대단했지만, 실제 휴대용 게임기로서의 가치는 거의 없었다.

이런 저런 악재가 겹친 ‘위유’는 실패한 가정용 게임기로 역사에 남을 전망이지만, ‘위유’에서 닌텐도가 시도했던 가정용 게임기와 휴대용 게임기의 통합은 아마도 차기작인 ‘NX’에서 실현되리라는 의견이 많다. 지난 몇 년 동안 무선 인터넷은 크게 발전했고, 고품질 그래픽을 무선 인터넷을 통해 스트리밍 할 수 있는 시대가 왔다. ‘위유’에서 시도했던 실험을 집 밖으로 확대할 기회가 온 것이다.

휴대용 게임기가 아닌 ‘통합’ 게임기의 시대
몇몇 코어 게이머들이 독자적인 세력으로 남을 것이라고 하던 휴대용 게임기 시장은 5년만에 생존마저 위협받는 상황으로 치닫고 있다. 소니는 모바일 게임 사업을 위해 별도의 회사까지 세웠고, 모바일 게임은 안 한다던 닌텐도조차 생각을 바꿔 스마트폰 플랫폼으로 자사의 IP를 활용한 모바일 게임을 내놓겠다고 선언했다.

유감스럽게도 휴대용 게임기가 지금까지 그래왔던 것처럼 독자적인 세력으로 살아남는 것은 어려워 보인다. 이제는 닌텐도만이 간신히 남아있다. 규모 자체도 이미 다른 게임 시장과 비교도 되지 않을 정도로 쪼그라들었다. 최소한 가까운 시일 이내에 휴대용 게임기 시장에 큰 변화가 닥칠 것임은 분명해 보인다.

그럼에도 불구하고 휴대용 게임기가 곧 멸종한다는 의견은 섣부른 생각이다. ‘고품질 게임을 밖에서 재미있게 즐기고 싶다’는 사람이 있는 한 휴대용 게임기가 완전히 멸종하지는 않을 것 같다. 현재의 스마트폰 터치스크린 조작으로는 절대 극복하지 못할 게임패드만의 ‘손맛’이라는 강점도 있다.

소니는 최근 들어 리모트 플레이를 상당히 강조하고 있다. TV, PC, 소니 스마트폰, PS 비타 등에서 PS4 게임을 스트리밍 받아 고품질로 즐길 수 있다는 점을 강조한다.
별도의 휴대용 게임기를 개발하는 것보다 이런 방식이 더 쌀 수도 있다.
휴대용 게임기를 만든 적이 없는 MS도 '통합' 게임 환경에는 큰 관심을 가지고 있다.

타협점을 찾는다면 닌텐도가 ‘위유’에서 약간이나마 시도했던 것처럼 가정용 게임기와 휴대용 게임기의 구분없이, 집이든 밖이든 어디서나 동일한 품질의 게임을 즐길 수 있도록 ‘한 몸’이 되는 방향이 아닐까 한다. 닌텐도 ‘NX’를 둘러싼 끊임없는 ‘통합플랫폼’ 루머도 그런 기대에 바탕을 두고 있다.

한 개의 게임기를 구입해 거실 TV에 연결해 즐기고, 외출 할 때 밖에서도 즐길 수 있다는 개념은 꽤 매력적이다. 예전에는 이런 개념이 꿈 같은 이야기였지만, 이제는 많은 최신 기술이 준비되어 있다. 고해상도 디스플레이, 고속 무선인터넷, 작지만 강력한 성능의 모바일 CPU까지. 집에서 가정용 게임기로 즐기던 게임 품질 그대로 밖에서 즐길 수 있는 날이 곧 오지 않을까?


출처 - http://m.post.naver.com/viewer/postView.nhn?volumeNo=4512126&memberNo=11710666&navigationType=push&mainMenu=GAMEAPP

And

[Cocos2d-x] Day 11 - Enemy CollisionCheck & Effect

|


 <DAY> 2016.05.27

 < WORK LIST >

 <Class> Object_Enemy.cpp & Enemy_Manager.cpp

 - Enemy CollisionCheck & Position Arrangement & Effect

 - Resource Work

 - State Apply



   1

  Enemy CollisionCehck & Effect


플레이어의 총알과 적 캐릭터의 충돌 체크를 위하여

에너미 매니저에 충돌체크 함수를 하나 만들어 주었다.

매계 변수로는 총알의 위치, 거리, 타입을 받았다.


만들어지지 않았거나, 비활성화 상태인 에너미는 넘기고 만들어져 있는 에너미를 검사한다.

현재 존재하고 있는 에너미의 위치를 가져와서

총알과의 위치와 에너미의 위치를 넘겨주어 거리를 잰다.


두 개의 거리가 매계변수로 받아온 dis보다 작아지면 충돌한 것으로 판단해

에너미 이미지의 색을 바꿔주고 Hit함수로 총알의 타입을 넘겨주어 총알에 타입에 따라서 에너미의 체력을 깎아준다.

덤으로 플레이어의 총알은 사라지면서 이펙트를 뿌려준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool Enemy_Manager::CollisionCheck( CGPoint _pos, int _dis, int _Type )
{
    for(int i = 0; i < MAXENEMY; i++ )
    {
        if( m_pEnemy[i] == NULL ) continue;
        if( m_pEnemy[i]->getActive() == FALSE ) continue;
            
        CGPoint pos = m_pEnemy[i]->getPosition();
        VectorInformation vi = ST::call()->Distance( _pos, CGPoint( pos.x, _Type == 2 ? pos.y : pos.y + 120.f) ); // 120
 
 
        if( vi.Distance < _dis )
        {
            // Hit 사운드 추가 예졍.
            ST::call()->EFM.addEffect( _Type == 2 ? CGPoint( _pos.x , _pos.y + 120.f ) : _pos, _Type );
            m_pEnemy[i]->setColor( ccc3( 255100100 ) );
            m_pEnemy[i]->hit( _Type );
            
            return TRUE;
        }
    }
    return FALSE;
}
cs

플레이어 총알의 타입에 따라서 에너미의 체력을 깎아준다.

에너미의 체력이 0보다 작거나 같으면 에너미의 모습을 지워준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Object_Enemy.cpp
 
void Object_Enemy::hit( int _Type )
{
    if( _Type == 0 ) --m_eHP;
    else if( _Type == 1 ) m_eHP -= 2;
    else if( _Type == 2 ) m_eHP -= 3;
 
    if( m_eHP <= 0 )
    {
        this->setActive(false);
        this->setIsVisible(false);
    }
}
cs



타입에 따른 이펙트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void Object_Effect::update(float dt)
{
    m_fFrame += dt;
 
    switch( getType() )
    {
        case 0:
            {
                m_iState = PLAYER_SHOT;
 
                if( m_fFrame < 0.1f) this->setDisplayFrame( ChangeAni( m_iState ), 0 );
                else if( m_fFrame < 0.2f) this->setDisplayFrame( ChangeAni( m_iState ), 1 );
                else if( m_fFrame < 0.2f) this->setDisplayFrame( ChangeAni( m_iState ), 2 );
                break;
            }
        case 1
            {
                m_iState = PLAYER_MIDDLE_SHOT;
                if( m_fFrame < 0.1f) this->setDisplayFrame( ChangeAni( m_iState ), 0 );
                else if( m_fFrame < 0.2f) this->setDisplayFrame( ChangeAni( m_iState ), 1 );
                break;
            }
        case 2
            {
                m_iState = PLAYER_FULL_SHOT;
                if( m_fFrame < 0.1f) this->setDisplayFrame( ChangeAni( m_iState ), 0 );
                else if( m_fFrame < 0.2f) this->setDisplayFrame( ChangeAni( m_iState ), 1 );
                break;
            }
        case 3:
            {
                m_iState = ENEMY_BOOM;
                if( m_fFrame < 0.1f) this->setDisplayFrame( ChangeAni( m_iState ), 0 );
                else if( m_fFrame < 0.2f) this->setDisplayFrame( ChangeAni( m_iState ), 1 );
                break;
            }
    }
 
    if( m_fFrame > 0.3f )
    {
        this->setPosition(CGPoint( -10001000 ));
        this->setIsVisible(FALSE);
        this->setActive( FALSE );
        m_fFrame = 0;
    }
}
cs





   2

  Resource Work





SHOT_HIT


MIDDLE_HIT


FULL_HIT



 WORK

IDLE

WALK

ATTACK

DASH

JUMP

DROP

START  

JUMP_ATTACK

DROP_ATTACK

SHOT

MIDDLES_SHOT

FULL_SHOT

WALK_ATTACK

CHAGE_IDLE

CHAGE_WALK

CHAGE_DASH

CHAGE_JUMP

CHAGE_DROP

CHAGE2_IDLE

CHAGE2_WALK

CHAGE2_DASH

CHAGE2_JUMP

CHAGE2_DROP

LADDER_UP

LADDER_DOWN

WALL_DROP

ENEMY_IDLE

ENEMY_WALK

ENEMY_ATTACK

ENEMY_BULLET

ENEMY_BOOM

  New SHOT_HIT

  New MIDDLE_HIT

  New FULL_HIT




   3

  State Apply


Player Shot Effect



 STATE APPLY

IDLE

WALK

ATTACK

DASH

JUMP

DROP

START  

JUMP_ATTACK

DROP_ATTACK

SHOT

MIDDLES_SHOT

FULL_SHOT

WALK_ATTACK

CHAGE_IDLE

CHAGE_WALK

CHAGE_DASH

CHAGE_JUMP

CHAGE_DROP

CHAGE2_IDLE

CHAGE2_WALK

CHAGE2_DASH

CHAGE2_JUMP

CHAGE2_DROP

LADDER_UP

LADDER_DOWN

WALL_DROP

ENEMY_IDLE

ENEMY_WALK

ENEMY_ATTACK

ENEMY_BULLET

ENEMY_BOOM

  New SHOT_HIT

  New MIDDLE_HIT

  New FULL_HIT



평 가

 .난이도 : 보통

 별   점 :  

 한 마디: 같은 소스의 반복이다.





<Progress List> 

 - Camera Scroll 

 - Player Resource Work

 Player OutPut & Animation

 New Player Soht Effect     - <Complete>


<Complete List> 

  - Key Control

  - Gravity Jump

  - MouseDrag Box Create

  - Box CollisionCheck

  - RayCast

  - File Input And Output

  BackGround Output

  - Player Output

  Bullet Output

  - Scroll Map Box

  - Player OutPut & Animation

  - Slope Move

  - Ladder

  Wall_Drop

  Enemy

  Enemy_Effect_Boom

  New Player Soht Effect


And
prev | 1 | 2 | 3 | 4 | ··· | 15 | next