------

[ AD ] Port Monitor ( Try to use a Best WebSite Monitoring Tool )

------

http://bcho.tistory.com/504

게임 이라는 컨텐츠가 스마트폰의 킬러앱중의 하나

 윈폰7에서 XNA를 기반으로 개발된 게임은 X-BOX에서도 수정없이 포팅되서 돌아갈 수 있기..


Collision 처리 (충돌처리-두개의 개체가 충돌하였다는 것을 알려 주는 처리-총알에 맞았다. )가 API하나로 해결되고

각종 3D 이펙트(먼지가 난다거나, 샤방샤방 별가루가 떨어지는 처리등)이 아주 쉽게 개발되는 ...

(사실 제가 게임 개발했을때는 이런건 다 날코딩으로 만들어야 했습니다.
 심지어 Direct X 이전에는 애니메이션을 표현하기 위한 스프라이트 처리 엔진 조차 인라인 어셈블리로
다 만들어야 했으니까요. )


특이한것만

리소스 로딩
게임에 필요한 음성,캐릭터 이미지,백그라운드 이미지들을 로딩하고 관리해야 합니다. 보통 파일을 열어서 일일이 읽어서 메모리에 적재하고, 필요한 파일들도 배포할때, 묶어서 배포해야 하는데, 이부분이 상당히 편리합니다.


필요한 리소스들을 비주얼 스튜디오에서 레퍼런스 부분에 Import만 하면됩니다. 리소스들을 사용할때는



3 스크린 지원
MS의 전략중에 강력한 전략중 하나가, 3 스크린이라는 전략이 있습니다. TV-PC-모바일을 모두 지원하고, 하나의 플랫폼처럼 지원하겠다는 겁니다. VOD 서비스를 TV-PC-모바일을 통해서 각 장점을 통해서 하겠다 모.. 그런건데..
XNA기반의 게임 역시 이 전략의 연장선산에 있습니다.

이를 가능하게 하려면, XNA로 개발한 게임을 해당 타겟 플랫폼에 맞게 빌드하면됩니다

위에 스크린샷에도 보면 알 수 있듯이 Windows와 X-Box 360용 프로젝트로 만들어서 컴파일


게임 처리 프레임웍
게임 개발 플랫폼에서 당연한것이겠지만, 게임의 실행 사이클에 맞는 프레임웍을 제공합니다.
게임은 보통 하나의 화면 단위로 진행되고, 하나의 화면은 리소스 로딩후, [ 입력을 받고, 캐릭터의 위치나 충돌 처리등과 같은 계산을 하고, 계산 결과에 따라서 화면과 음성으로 출력] 하는 루프를 반복합니다. 이런 프레임웍들이 내부적으로 다 구현되어 있습니다.
예를 들어 화면 처리 패턴은
class GameplayScreen : GameScreen
이런식으로, 상위 클래스로 지정되어 있구요. :)
스프라이트 처리 패턴을 보면 다음과 같습니다.
SpriteBatch.Draw(tankTexture, player.Position, Color.White);
이런식으로요. 상당히 편리하져.
아직 전체 프레임웍을 다 본게 아니라서 모라 말하기는 어렵지만, 일단 게임 개발의 생산성을 높이고, 게임 개발 패턴을 위한 상당히 성숙된 프레임웍을 갖추고 있습니다.


충돌 처리 로직
void CheckForCollision()
{
  BoundingBox bb1 = 


    new BoundingBox( new Vector3(spritePosition1.X - (sprite1Width / 2), 

                                 spritePosition1.Y - (sprite1Height / 2), 0),

                     new Vector3(spritePosition1.X + (sprite1Width / 2), 

                                spritePosition1.Y + (sprite1Height / 2), 0));
  BoundingBox bb2 = 
    new BoundingBox(new Vector3(spritePosition2.X - (sprite2Width / 2), 

                                spritePosition2.Y - (sprite2Height / 2), 0),

                    new Vector3(spritePosition2.X + (sprite2Width / 2), 

                               spritePosition2.Y + (sprite2Height / 2), 0));
  if (bb1.Intersects(bb2))
  {
      soundEffect.Play();
  }
}

BoundingBox라는 사각형 공간을 정의 / 두 공간간에 충돌을 intersects
벡터는 3개의 좌표 / X,Y,Z축   /  2D의 예제라서 Z축을 0

'온라인게임 > 모바일 게임' 카테고리의 다른 글

게임과 모바일  (0) 2010.09.17
캐릭터  (0) 2010.09.17
이미지 파일의 이해  (0) 2010.09.17
안드로이드 아스팔트 5  (0) 2010.09.09
내년 6월이면 스마트폰 체감 비중 50% : 개발사들의 전략  (0) 2010.09.09

+ Recent posts