문제

게임에서 2D 물리학을 모델링하는 방법을 배우기위한 좋은 참조를 찾고 있습니다. 그래요 ~ 아니다 나를 위해 할 수있는 도서관을 찾고 있습니다 - 나는 생각하고 배우고 싶습니다. 다른 사람의 일을 맹목적으로 사용하지 않습니다.

나는 약간의 인터넷 검색을했는데, Gamedev 등에 대한 몇 가지 튜토리얼을 찾았지만, 튜토리얼은 잘 쓰여지지 않았거나 내가하지 않는 수학적 이해 수준을 가정하기 때문에 이해하기 어렵다는 것을 알았습니다. t는 아직 가지고 있습니다.

구체적으로 - 탱크 전투 게임과 같은 하향식 2D 게임을 모델링하는 방법을 찾고 있습니다. 그리고 가속도와 속도, '구성 요소의 열 빌드,'충돌을 정확하게 모델링하고 싶습니다. 모델과 레벨 경계 및 미사일 유형 무기.

웹 사이트, 추천서, 블로그, 코드 예제 - 이해에 도움이되면 모두 환영합니다. C# 및 F#을 사용하여 게임을 구축하는 것을 고려하고 있으므로 해당 언어 중 하나의 코드 예제가 훌륭 할 것입니다. 그러나 언어가 좋은 링크를 게시하는 것을 막지 못하게하십시오. =))

편집하다: 나는 수학을 이해하지 못한다는 의미는 아닙니다. 관련 시스템을 이해하기 위해 알아야 할 것이 무엇인지 모르고 실제로 자원을 찾는 방법을 모르는 경우가 더 많습니다. 이해할 수있는 방식으로 저를 가르쳐주세요.

도움이 되었습니까?

해결책

다음은 몇 년 전에 조립 한 몇 가지 리소스입니다. Verlet 통합입니다. 또한 그 당시 발견 한 오픈 소스 및 상업용 물리 엔진에 대한 링크도 포함하고 있습니다. 이 주제에 대한 stackoverflow 기사가 있습니다. 2D 게임 물리?

물리학 방법

서적

  • "게임 물리 엔진 개발", Ian Millington- 저는이 책을 소유하고 있으며 강력히 추천합니다. 이 책은 C ++의 물리 엔진을 처음부터 구축합니다. 저자는 기본 입자 물리학으로 시작한 다음 "운동 법칙", 제약, 강성 물리학 등을 추가합니다. 그는 잘 문서화 된 소스 코드를 완전히 포함합니다.

물리 엔진

다른 팁


(원천: oreilly.com)

게임 개발자를위한 물리학 O'Reilly에 의해

경험에서 말하면 2D 물리 엔진을 구현하는 것은 매우 어렵습니다. 엔진을 만들 때 취한 몇 가지 단계를 자세히 설명하겠습니다.

  1. 충돌 감지. 3D 세계 또는 네트워크 시뮬레이션을 다루지 않더라도 충돌 감지는 어려운 문제가 될 수 있습니다. 2D 물리학의 경우 확실히 사용하고 싶습니다. 축 정리 분리. SAT를 구현하면 엔진의 역학 부분을 반쯤 완료했습니다.

  2. 운동학/역학. Chris Hecker는 우수한 글을 썼습니다 온라인 리소스 충돌 응답을 단계별로 안내했습니다.

  3. 다른 모든 것. 충돌 감지/응답이 완료되면 엔진에서 원하는 모든 것을 구현하는 문제입니다. 여기에는 마찰, 접촉력, 관절 등이 포함될 수 있습니다.

재미있게 보내세요! 자신만의 물리 시뮬레이션을 만드는 것은 엄청나게 보람있는 경험입니다.

이것은 플래시를 사용하는 2D 물리 개념을 보여주는 훌륭한 튜토리얼이며 플래시에만 국한되지 않습니다.http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

바닥에서 모든 것을 배우고 싶더라도 잘 코딩되고 문서화 된 오픈 소스 물리 라이브러리에는 책보다 훨씬 더 많은 정보가 포함되어 있습니다. 상황 X를 어떻게 처리합니까? 파일을 찾는 것이 종이 인덱스보다 빠를 수 있습니다.

원래 응답 :

뭐, 언급 없음 box2d? 블리자드 직원의 오픈 소스 사이드 프로젝트는 좋은 커뮤니티를 가지고 있으며, 잘 작동합니다.

토크 게임 빌더와 통합하는 Box2D에 대한 (간단한) 경험에서 API를 깨끗하게 사용하고 문서화가 명확하고 예상 한 모든 물리 객체 (특히 조인트는 요구 사항)를 지원했습니다. 그리고 활성 (2010 년 초).

포럼 포스터로 판단하면 관리자는 소스 기부금 (라이센스 수하물을 운반하지 않은)을 수용 한 것으로 보입니다.

그것은 제가 명성을 얻었을 때 예상했던 것처럼 섬 기반 솔버가 매우 빠르게 보였습니다.

F#에는 호출되는 기능이 있습니다 측정 단위 차원 분석을 수행하여 잘못되면 오류를 제공합니다. 예를 들어, 당신이 말하는 경우 :

let distance : float<meters> = gravity * 3.0<seconds>

중력은 <metters/seconds^2>이고 <meters>가 아니기 때문에 컴파일 오류를 산출합니다. 또한 F#은 단지 .NET이므로 클래스 라이브러리에 수학/물리 코드를 작성하고 C#에서이를 참조 할 수 있습니다.

자세한 내용은이 블로그 게시물을 확인하겠습니다.

이것은 훌륭한 자원입니다 첫 번째 엔진을 작성합니다. 3D이지만 2D로 변환하는 것은 매우 쉽습니다. 나는 내부 엔진에 대한이 튜토리얼을 따르는 적어도 하나의 대기업을 알고 있으며 개인적으로 내 엔진을위한 그의 단계를 따랐습니다. 그는 Spring/Impulse 기반 물리학의 모든 기본 물리 개념을 설명하고 자신의 인터 그레이터를 작성하는 방법을 보여줍니다.

f#.net 저널 이것에 관한 두 가지 기사를 게시했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top