물리 엔진은 언제 사용해야합니까? [닫은]


12

Box2D를 찾았으므로 아주 작은 프로토 타입이나 작은 프로그램에서 무언가를 테스트하기 위해 실제 프로젝트에 이르기까지 모든 게임과 같은 응용 프로그램에 사용하고 있습니다.

덕분에 충돌부터 실제 물리에 이르기까지 모든 것을 다루기가 매우 쉽습니다.

그러나 때로는 그것에 대해 의구심이 있습니다. 원이나 AABB 만 처리해야하고 고급 물리 도구 (관절 또는 그와 같은 것)가 필요하지 않으면 물리 엔진이 일종의 큰 것을 추가 할 수 있다고 생각합니다. 불필요한 오버 헤드.

내 질문을 다시 가정하려면 물리가 정말 간단한 게임에서 Box2D (또는 다른 물리 엔진)를 사용 하시겠습니까 (Super Mario와 같이) 그렇지 않다면 왜?


2
옳은 일을하십시오. 게임에 물리 엔진이 필요하다고 생각하십니까? Mario가 Box2D의 혜택을받을 것이라고 생각하십니까? 최신 마리오는 확실히 좋은 물리학으로 기분이 좋지만 Box2D에 내장 된 것 같은 느낌은 없습니다.
Jeff

@Jeff : "Box2D는 언제 사용해야합니까?"라는 질문에 따라 다릅니다. 또는 "물리 엔진을 언제 사용해야합니까?" 새로운 마리오는 확실히 물리 엔진을 포함하고 있습니다.

1
@Joe Wreschnig : 예. 그러나 물리 엔진을 사용하지 않는 경우가 있습니까? 내가 생각할 수있는 유일한 시간은 텍스트 어드벤처 또는 포인트 앤 클릭 일 것입니다. 물리 엔진을 얼마나 일반적으로 정의하고자하는지에 따라 다릅니다.
Jeff

@Jeff : Tetris, Bejeweled와 같은 (비 물리적) 퍼즐 게임은 거의 필요하지 않습니다. 액션 게임에서 나는 대부분의 2D shmup이 물리 엔진의 이점을 얻지 못한다고 주장 할 수 있습니다. 일반적으로 AABB / 원 오버랩 검사, 충돌 응답 없음, 절대적으로 고정 된 이동 경로 및 일정한 속도가 필요하기 때문입니다. 그러나 플랫 포머는 모두 물리에 관한 것입니다.

답변:


8

Box2D에 사용 된 메모리, 디스크 공간, 개발 노력 또는 프로세서 시간이 너무 많은 경우 사용하지 마십시오. 그렇지 않으면 유용하다고 생각하면 피할 이유가 없습니다.


2
이것이 실제로 내려 오는 전부입니다. 인생을 더 편하게 만들고 원하는 플랫폼에서 당신을 차단하지 않는다면, 일부를 사용하지 않더라도 승리입니다.

1
즉, "바퀴를 재발 명하는 유일한 이유는 바퀴 재발 명에 대해 배우는 것입니다."
Exilyth

4

실제로 물리학이 많지 않기 때문에 슈퍼 마리오만큼 쉬운 것은 아닙니다. (Mario는 점프하는 다른 물체의 물리에 영향을 미치지 않습니다)

물리를 사용하여 다른 물체의 결과에 영향을 미치는 여러 항목 (하나 이상)의 의미에서 물리를 사용하는 경우 엔진을 사용합니다.


반면, 마리오에는 운동량, 가속도, 가변 크기 및 방향 충돌이 있습니다.이 모든 것은 물리 엔진으로 "무료로"얻을 수 있으며 단순한 경계 중첩 검사가 아닙니다.

나는 동의한다-물리 엔진이 당신에게 많은 시간을 낭비하게 될 것이라고 생각한다.
Christopher Horenstein

3
사실 바퀴를 발명하지 않는 것이 좋습니다. 바퀴 만 원한다면 자동차의 청사진을 쓰지 않을 것입니다. 또한 게임 전체에 대해 더 많이 알고 물리를 쉽게 변경 / 변경할 수 있습니다.
Spooks

1
정말 끔찍한 비유입니다. 이것은 바퀴와 차축, 스티어링 칼럼과 모터를 원하지만 대시 보드 나 파워 윈도우는 필요하지 않습니다.

3
누가 파워 윈도우를 원하지 않습니까?
Spooks

2

내 대답은 그렇습니다. 물리적 엔진에서 신속하게 얻는 일부 기능을 구현하는 데 불필요한 개발 시간을 소비하지 않아야하므로 간단한 물건에 Box2D와 같은 물리 엔진을 절대적으로 사용하십시오. 예를 들어 정적 바디를 정의하고 그 위에 다이내믹 바디를 떨어 뜨린 후 방향 입력을 위해 다이내믹 바디에 힘을 가하면 몇 분 안에 플랫 포머가 생깁니다. 엔진이 오버 헤드를 추가하여 가치가없는 것으로 생각하지 않습니다.


3
그러나 Box2D를 구현하고 사용하는 방법을 알아내는 것이 간단한 물리학을 만드는 데 시간이 오래 걸린다고 말할 수 있습니다. (물리 사용의 정도에 따라 달라집니다)
Spooks

1
@Spooks : 여전히 유용한 Box2D보다 더 쉬운 것은 상상할 수 없습니다.

나는 여기서 Joe와 완전히 동의합니다. Box2D 사용과 함께 제공되는 유용성을 대체하는 간단한 방법은 없습니다. Box2D로 조명기를 만드는 법과 중력을 정의하는 방법을 배우는 것보다 자신의 요구를 더 빨리 충족시키는 것을 코딩하는 것을 상상할 수 없습니다.
Christopher Horenstein

1

게임에서 "물리"가 간단한 경우 물리 엔진을 가져올 필요가 없습니다.

물리 모델링과 물리 시뮬레이션 사이에는 차이가 있기 때문에 물리라는 용어를 느슨하게 사용합니다. 차별화해야 할 매우 중요한 것.

예를 들어, 마리오 브라더스에서는 달리고 멈출 때 약간 미끄러집니다. 어떻게 구현할 수 있는지 생각해보십시오.

필요한 모든 변수를 정의하여 모델링 할 수 있습니다. 예 : 질량, 중력, 마찰 계수, 추력 등을 측정 한 다음 새로운 속도, 가속도 등을 계산합니다.

그러나 그만한 가치가 있습니까? 플레이어가 움직이지 않는 동안 플레이어의 속도를 줄임으로써 동일한 효과를 시뮬레이션 할 수 있습니다 ...

다음과 같은 것 :

if( pressing movement key ) { 
 speed = 5; 
} else { 
 if(speed) speed--; // slide!
} 

차이점은 하나는 물리학이고 다른 하나는 물리학이 아닙니다. 둘 다 장단점이 있습니다. 그러나 간단한 게임의 일반적인 규칙으로 가짜를 만드는 것이 훨씬 쉽습니다.


1
그런 물리학은 거칠다. 가짜로 만들려고하면 멋지게 보일 수도 있습니다. 마찰 = .9 또는 1 이하의 숫자. speedX * = 마찰; speedY * = 마찰;
AttackingHobo

2
물론, 프로젝트가 끝날 무렵 "만약 (움직이는 키를 누르지 않고 얼음 위에서 움직이지 않고 수중이 아니라면이 특별한 파워 업을 가지고 있고 부츠를 타지 않는 등)"으로 바뀝니다.

@AttackingHobo : 포스트의 요점은 멋진 슬라이딩 알고리즘을 만드는 것이 아닙니다. 시뮬레이션과 모델의 차이점을 설명하기위한 것입니다.
aaronfarr

@Joe : 그것들은 마찰 변수에 대한 수정일뿐입니다. 아마도 당신과 @AttackingHobo는 채팅해야합니다 : P 물리 엔진을 사용하면 게임의 모든 객체에 대한 속성을 정의해야합니다. 내 요점은 간단한 게임을 위해 물리 엔진을 연결하는 것이 자동적이지 않아야한다는 것입니다. 상황에 따라 다릅니다.
aaronfarr

1
@aaronfarr : 시뮬레이션과 모델 사이에는 차이가 없습니다. 이러한 목적으로 그들은 동의어입니다. 장난감 모델 / 시뮬레이션의 고립 된 부분이 Box2D 전체보다 코드가 적다는 것만 보여주었습니다.

0

상황에 따라 결정해야합니다

맞춤형 엔진을 사용하는 전문가

  • 제어중인 소프트웨어 (새 릴리스로 인해 변경되지 않음)
  • 게임에 적합 (필요한 방식으로 게임에 필요한 기능 만)
  • 유연성 (원하는 미친 역 동성을 인코딩 할 수 있으며 향후 기능은 엔진에 의존하지 않음)
  • 학습 경험 (어쩌면 언젠가 엔진을 개선해야하고 엔진을 구축하는 방법이 필요할 수도 있습니다)
  • 간단한 기능에 대한 공부와 프로그래밍이 줄어듬
  • 간단한 기능의 성능 향상 (간단한 특정 기능의 경우 범용 엔진보다 성능이 향상 될 수 있음)
  • 적은 메모리 (필요한 기능 만 사용하는 경우 객체와 코드의 공간과 메모리가 훨씬 적게 사용될 수 있음)

상용 물리 엔진의 장점 :

  • 많은 노력없이 새로운 하드웨어와 새로운 OS에 적응할 수 있습니다
  • 복잡한 기능에 대한 연구 및 프로그래밍 노력 감소
  • 복잡한 기능을위한 더 높은 성능
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.