2011-08-29 4 views
1

참고 : 기존 답변을 검색했지만이 관점에서 찾을 수 없습니다. 사본을 찾으면 의견을 말하십시오.간단한 게임 애니메이션을 만드는 방법

저는 수년 동안 개발 중 이었지만 게임/그래픽 개발 경험이 없습니다.

많은 다른 사람들처럼 나는 안드로이드 용 작은 게임을 작성하는 것이 재미있을 것이라고 생각했습니다. 그러나 나는 단순한 애니메이션을 만드는 데 필요한 단계를 실제로 묘사 할 수 없다.

예를 들어, 조경이나지도 위로 움직이는 작은 차량을 그립니다. 나는 어디서부터 시작해야할지 정말로 모른다.

나는 자동차가 어떻게 움직이는 지, 즉 바퀴를 돌리는 것과 꼬이는 것 등 모든 프레임 하나를 그릴 필요가 있다고 생각한다. - 페인트로 10 개의 이미지를 그린 다음 반복합니다. 다음 Q는 be - how를 반복 할 것인가? 거기에 뭔가를로드 한 다음 실행하는 애니메이션 객체/시스템이 있습니다. 이것은 아마도 플랫폼과 sdk 사이에서 다양하지만 대부분의 위젯/GUI 시스템의 원리와 마찬가지로 원리가 일반적으로 같다고 의심됩니다.

그런 다음 자동차는지도 위로 움직이는대로 움직여야합니다. 그리고이 애니메이션은 다른 애니메이션과 함께 병렬로 실행됩니까?

.. 등등. 이것은 정말 간단한 게임 애니메이션의 기본 문제입니다. 모든 게임에서 공통적 인 작업 흐름이 있습니다. 즉, 아이폰 용 게임을 작성한 사람도 안드로이드에서 동일한 작업을 수행하는 방법을 대부분 알고 있습니다.

명백한 진술을 위해 3D 애니메이션이나 고급 물리학, 고급 수학, 매트릭스, 메쉬 재질 등을 필요로하지 않습니다. 저는 예를 들어 타워에서 볼 수있는 그래픽에만 관심이 있습니다. ("Robo Defense"와 같은) 방어 게임, 플랫폼, "디아블로"게임 등.

감사합니다.

+2

http : // gamedev를 확인해야합니다.stackexchange.com/ :) – Frederik

+0

실제로, 내 머리를 먼저 시도하지 않도록 조사해야합니다 .. – sharkin

답변

2

GUI/위젯 응용 프로그램에서는 일반적으로 사용자가 단추를 클릭하거나 슬라이더 등을 움직일 때 코드를 다시 호출하는 이벤트 루프가 있습니다.

일반적인 게임에서는 반복적으로 입력을 폴링하고 월드의 상태를 해당 입력을 기준으로 한 단계 전진시킨 다음 디스플레이에 세계 상태를 그려주는 게임 루프를 갖게됩니다. 예를 들어 (C++에서 그것이 내가 가장 편안 오전 언어이기 때문에) :

//Holds everything in the game: the locations and velocities (and so on) 
//of all the dynamic elements, the map, the terrain, everything. 
WorldState worldState; 
while (worldState.continueGame()) { 
    Input input(InputSystem.pollInput()); 
    worldState.advanceByFrame(input); 
    OutputSystem.display(worldState); 
    sleep(1/stepTime); 
} 

나는 이것이 당신에게 아이디어를 제공 희망하지만 실제 게임 루프 충분하다고 생각하지 않는가. 특히 타이밍 코드가 다소 손상되었습니다. 당신이 지형 이동 차량을 가지고 싶었다면

, 당신은 다음과 같이 WorldState을 구현할 수 :

struct WorldState { 
    void advanceByFrame(Input const& input) { 
     vehicle.moveOver(terrain); 
    } 
    Terrain terrain; 
    Vehicle vehicle; 
}; 
struct Vehicle { 
    double xPosition; 
    double yPosition; 
    int frameNumber; 
    void moveOver(Terrain const& terrain) { 
     /** some logic based on terrain */ 
     //just filler, but you can change xPosition and yPosition 
     //in whatever way you want. 
     xPosition += 32.; 
     //where numberOfFrames is determined somewhere else. 
     frameNumber = (frameNumber + 1) % numberOfFrames; 
    } 
}; 
struct Terrain { 
    /** stuff, maybe an 2d-array or whatever */ 
}; 

을 당신이 볼 수 있듯이 : 게임 요소가 게임의 길이에 걸쳐 지속 및 수정 게임 상태에 대한 입력의 적용에 의해 가능한 이미지 집합에서 표시 할 현재 이미지의 프레임 번호를 나타내는 일련의 숫자를 반복하여 애니메이션을 만들 수 있습니다.

이것은 모두 매우 작지만 일반적인 게임의 전반적인 구조에 대한 아이디어를 줄 수 있기를 바랍니다.

관련 문제