2014년 2월 24일 월요일

[일기]box2d 도전. 어느 개발자의 강의 공부 Instroduction

본 글의 내용은 다음을 기반으로 작성되었습니다.
https://www.iforce2d.net/b2dtut/introduction

이에 원문을 보시고자 하는 분은 위 주소를 이용하시면 됩니다.
---------------------------------------------------------------------------------
필자가 영어 번역이 약해 멋대로 번역하여 기재한 글
---------------------------------------------------------------------------------

 box2d를 알아보고자 찾아간 웹페이지에서 좋은 내용을 확인하고 글로 남기고자 한다. 영어가 약했으므로 매번 영어를 보고 해석하기가 힘이 들었기에 대부분의 내용은 비슷할 것이나 한글로 정리해 본다. 출처는 분명히 글 상단에 밝혔음을 명시한다.

 소개.

  Box2D는 전 세계적으로 널리 퍼져있는 2차원 물리 엔진이다. 그것은 가볍고 강건하며 효율적이면서도 여러 언어에 호환가능하다. 이 엔진은 많은 플랫폼의 여러 응용프로그램 내에서 전투 실현(?;battle-proven:실제 전투를 모사)해 왔으며 오픈 소스에 무료다. 웹사이트를 확인해 보면 알 것이다. http://www.box2d.org

 일반 물리 엔진은 현실 물체들에 실제와 같이 실생활의 움직임을 적용하는 기능을 한다. 비록 다른 응용프로그램을 위해 사용될 수 있으나 물리 엔진은 주로 게임을 위한 라이브러리로써 탄생하며 게임들은 대부분 Box2D를 사용하는 소프트웨어로 구성되어 있다.

 이 Box2D 엔진은 Erin Catto에 의해 작성되고 유지되며 그는 본업으로 단지 물리엔진을 만듦으로써 만족한 것이 아니라 취미로서 물리엔진을 만들기 위해 Box2D를 구축한 것으로 보인다.

 이것은 C++로 쓰였으나 다른 사용자 커뮤니티에서 다른 언어로 포팅되었다. 여기에 그와 관련된 사이트를 소개한다.  http://www.box2d.org/links.html이 주소에서 이것 외에 더 찾아볼 수 있을 것이다.


 물리 엔진이 게임 엔진은 아니다. Box2D는 꽤나 물리법칙을 시연할 수 있으나 화려한 그래픽이나 네트워크를 이용하거나 당신을 위해 레벨을 불러오거나 세계를 건설하는데 목적이 있지 않다. 만일 당신이 이러한 것들에 대한 희망으로 왔기에 그것에 대한 조금의 도움이라도 얻고자 한다면 다음 아래의 링크들을 살펴보기 바란다.


 Box2D C++ 연습

 공식 홈페이지에 사용자 메뉴얼이 있다. 그곳엔 적어도 C++을 위한 이 라이브러리를 사용하는데에 관한 당신이 알아야 할 필요가 있는 거의 모든 것이 설명되어 있다. 그러나 필자(원본 작성자)는 이 Box2D를 사용해 왔고 논의 포럼 등을 봐 왔는데 꽤 빈번히 규칙적으로 나타나는 같은 질문을 많이 보았다. 필자(원본 작성자) 또한 스스로도 그것들을 꽤 자주 이해해 왔기 때문에 몇 어떻게 그러한 문제가 해결될 수 있는지에 대한 제안을 작성하기로 결심했다. 내가 그것을 하기로 하였을 때, 나는 또한 Box2D를 이용한 연습 예제를 만들어야 했었다. 바로 초보 단계로.

 나 말고도 이러한 일을 한 수많은 사람들이 있다.

 확인할 수 있듯이 Flash에서 매우 뛰어나게 설명들이 있다. 그러나 나는 연습 예제를 C++로 하려 한다. 내가 그것으로 거의 개발해왔기 때문이다. 또한 가장 최신 버전의 Box2D를 사용할 것이다. 바라건데 이 C++ 연습 예제가 몇몇에게 유용하길 바라며 내 주제가 너무나 그들의 것과 일치하지 않기를 바란다. 결국 내가 다루기를 바라는 것은 다음과 같다.

기본 사용

 테스트베드 구축
 테스트베드 구조
 실험침에를 위한 '테스트' 만들기
 강체
 고정체
 전역세계 설정
 중력 무력화
 힘과 충격
 등속 이동
 주어진 각만큼 회전을 유지하는 강체
 점프
 그리기 디버그 사용법
 너 자신의 물체 그리기
 사용자 데이터
 충돌 콜백
 충돌 필터링
 감지기
 빛던지기
 전역세계 질의
 강제 제거
 지면 접촉 문제
 관절(접합점)
 몇 참고사항들

심화 주제

 차량 버팀대
 점착 투사물
 미사일탄 궤도
 폭발
 깨질수 있는 강체
 거꾸로된 차량 물리
 영역, 지형
 한방향의 벽과 플랫폼
 컨베이어 벨트
 에스컬레이터
 엘레베이터
 비행중 화살표
 심화된 캐릭터 움직임

 일반적으로 플랫폼 게임에 초점이 맞추어져 있을 것이지만, 가능한한 널리 적용가능한 내요을 유지하려 애쓸 것이다. 때때로 나는 엔진의 특정한 주제에 관련된 몇 특징을 생략할 것이지만, 다소 진보되어 있을 것이다. 바라건데 나는 최신 날짜로 돌아오고 '수준 높은' 섹션을 여기 혹은 다른곳에 연결할 수 있었으면 한다.

 나는 2.1.2버전 이용한다. 내 생각컨데 현재 가장 최신 공식 릴리즈이다. 더 많은 예제를 위해 나는 그들에게 튜토리얼을 테스트침대'의 '테스트'와 같은 연습 예제를 위한 코드를 추가하려 노력할 것이다. 이 엔진은 프로젝트를 설치하거나(윈도우나 기타 등등) 하는 필요를 없애고 바로 실제 라이브러리 그 자체로 사용하는 방법을 제공한다.

요구사항
 예제를 따라오기 위해 당신은 C++의 중간 정도의 지식이 있어야 한다. OpenGL에 대한 지식이 있는 초보자는 다루기 쉬울 것이다. 그러나 필수는 아니다. 필요한 소프트웨어로 당신이 필요한 모든 것을 무료로 다운로드 받을 수 있다.

헌신
 각설, Jeff 감사합니다.
피드백
 실수를 발견했다면 향상을 위해 제안을 가지고 의견을 작성해라....(하략)

댓글 없음:

댓글 쓰기