CAFE

기타

[21기 이선수]XNA 란?

작성자21기 이선수|작성시간11.04.16|조회수343 목록 댓글 2

 

 

XNA?

간단하게 XNA를 말을 하면 멀티플랫폼 환경에서 손쉬운 게임개발을 목표로 하는 게임 개발환경으로 .NET환경에서 C#언어를 주로 사용 한다. Microsoft에서는 누구나 쉽게 게임 개발의 목표로 하였습니다. XNA를 통하면 입력 장치 (키보드, 게임패트, 컨트롤러, 마우스 등)와 그래픽 하드웨어에 쉽게 접근 할 수 있습니다. 이를 사용 하기 위해서는 먼저 설치해야 되는 소프트웨어가 있다. 일단 DirectX이 설치 하여야 합니다. XNA 게임 스튜디오 익스프레스는 사용하는 것에 대해서는 무료로 사용 할 수 있습니다.

 -XNA의 기본값은 초당 60FPS로 다시 그려 주고 있습니다. Winphone는 초당 30FPS 입니다.

 

 

XNA 설치

http://create.msdn.com/en-us/resources/downloads

위의 사이트에 가서 XP전용 XNA Game Studio를 다운 받고 깔면 된다. 다만 4.0Microsoft Visual Studio 2010에서 박에 사용을 할수 없다. 2008에서 사용을 할려면 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&displaylang=en 에 링크가 되어 있다. 여기서 3.1을 다운 받고 깔면 된다.

  

XNA 시작

 

다음과 같이 XNA Game Studio3.1을 선택 하고 Windows Game3.1선택하여 만든다.

 

XNA 메소드(생성자)

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch;

public Game1()

    {

        graphics = new GraphicsDeviceManager(this);

        Content.RootDirectory = "Content";

IsFixedTimeStep = false;

    }

생성자와 필드 부분입니다. GraphicsDeviceManager를 생성 하여 지정된 게임의 구성 및 관리그래픽 장치를 처리를 하기 위하여 레지스터를 사용자 지정 동작이 구현 할 수 있다.

IsFixedTimeStep설정을 true로 하고 실행해보면 60FPS에 실행이 된다.false로 설정을 하면 Updata를 기본값(1/60)로 하지 않겠다는 것이다.

 

XNA 메소드(Initialize)

protected override void Initialize()

{

   // TODO: Add your initialization logic here

 

   base.Initialize();

}

그리기 전에 초기화를 하는 부분.  로드 할때 LoadContent사용.

 

 

 

 

 

XNA 메소드(LoadContent)

protected override void LoadContent()

        {

            // Create a new SpriteBatch, which can be used to draw textures.

            spriteBatch = new SpriteBatch(GraphicsDevice);

 

            // TODO: use this.Content to load your game content here

        }

그래픽 리소스를 호출할때 사용 합니다. Initialize의해 호출이 되고 게임 컨텐트 DevicrReset이벤트가 발생 할때 마다 다시 로드 합니다. LoadContent가 호출 되기 전까지는 GraphicsDevice 액세스 없다.

 

 

XNA 메소드(UnloadContent)

protected override void UnloadContent()

   {

       // TODO: Unload any non ContentManager content here

   }

게임이 종료 되고 컨텐츠를 처리 하는 부분.

 

XNA 메소드(Update)

protected override void Update(GameTime gameTime)

        {

            // Allows the game to exit

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

                this.Exit();

 

            // TODO: Add your update logic here

 

            base.Update(gameTime);

        }

기본적으로 생성 되는 메소드 가운데 가장 중요한 메소드 입니다.(게임논리가 구현되는 부분)

Update게임 로직을 처리하는 필요하다고 판단되면 호출됩니다. 이것은 게임 상태의 관리, 사용자 입력 처리, 또는 시뮬레이션 데이터의 업데이트를 포함할 있습니다. 게임 상태 업데이트하면 게임 난이도 컨트롤러 감도 등의 설정 대한 플레이어 환경 설정 확인 SignedInGamer.GameDefaults 검사할 있습니다.

Update 위에도 말은 했지만 부분과 아래의 Draw 초당 60 실행이 됩니다.

 

XNA 메소드(Draw)

protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here

 

            base.Draw(gameTime);

        }

Draw메소드도 UpData처럼 중요한 메소드 입니다. 위 글에서 말은 했지만 초당 60번이 실행 되고 있습니다. Draw에서 하는 일은 UpData IsFixedTimeStep true 또는 false인지 여부에 따라 다른 속도로 불리는 그립니다. IsFixedTimeStep FALSE이면, 업데이트 그리기가 가능한 자주 순서대로 호출됩니다. IsFixedTimeStep 사실이있다면 가능한 자주 호출 계속 그리기 동안, 업데이트, TargetElapsedTime 지정된 간격으로 호출됩니다.

 

참고 문원 : MSDN,Microsoft XNA

참고 블로스 : http://rintiantta.blog.me/40114345444

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자21기 최현식 | 작성시간 11.04.17 protected override void UnloadContent() <- 게임이 종료 되고 컨텐츠를 처리 하는 부분이라고 했는데 이 부분에서

    게임이 어떻게 종료되는지 어떻게 아나요??
  • 작성자21기 이선수 작성자 본인 여부 작성자 | 작성시간 11.04.17 사용자가 게임을 종료시 XNA Framework에서 게임의 Dispose 메서드 호출-> 게임의 Dispose 메서드에서 기본 객체의 Dispose 메서드를 호출->XNA Framework에서 각각의 게임컴포넌트에 해당하는 Dispose 메서드 호출->XNA Framework에서 게임의 UnloadContent 메서드 호출->프로그램의 Dispose 메서드로 focus가 반환되고 결국 프로그램이 종료됨 . 이와 같은 순서로 UnloadContent()를 호출을 하여 컨텐츠를 처리 합니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼