게임 프로그래밍 : 일반적인 방법과 디자인 패턴 [닫기]


9

OpenGL 3.x를 더 잘 배울 수 있도록 매우 간단한 게임 엔진을 작성하기 시작했지만 3D 게임을 디자인하는 방법에 대한 저의 경험과 부족한 지식으로 인해 수업을 디자인해야한다는 사실을 깨닫게되는 데 어려움을 겪습니다. 다르게. 내가 직면하고있는 다른 문제는 게임에서 시간을 간결하게 추적하고 필요에 따라 움직임을 업데이트하는 방법과 렌더러에게 다시 그려야한다고 말하는 방법입니다. 또한 한 객체에서 다른 객체로 다양한 플래그를 전달하기 위해 Get 및 Set 함수를 계속 만들어야합니다.

따라서 제목에서 알 수 있듯이 게임 디자인에서 일반적인 디자인 패턴 (게임 상태 처리기, 글꼴 등)을 설명하고 설명 할 수있는 책이나 기사 / 자습서 및 소스에 관심이 있습니다.

Btw, 나는 여전히 freeglut를 사용하고 있습니다. 진행하기 전에 또는 OpenGL을 더 잘 이해 한 후에 더 나은 창 시스템으로 옮기는 것이 좋습니다.


12
표준 "엔진을 쓰고 있습니다"응답 = 엔진이 아닌 게임 쓰기. 엔진은 빠질 수있는 깊은 토끼 구멍입니다. 지금까지 어떤 연구를 했습니까? 여기서 하나의 집중된 문제를 선택하고 과거의 질문을 검색하여 최상의 결과를 얻을 수 있습니다. 한 번에 하나씩 게임을 작성하는 동안 새로운 문제가 발생하면 계속 검색하십시오. 부수적으로, 클래스의 재 설계가 필요하다는 것을 인식하는 것이 일반적이며이를 수행하는 프로세스를 "리팩토링"이라고합니다. 이는 학습하면서 배우고 있다는 것을 의미합니다.
Patrick Hughes

1
답변 주셔서 감사합니다. 확실하지 않으면 죄송합니다. 본격적인 게임 엔진을 만들고 싶지 않지만 수업을 더 잘 디자인 할 수 있도록 게임 디자인에 사용되는 기본 디자인 패턴을 배우고 싶습니다. 일반적인 문제에 대한 일반적인 해결책이 있어야한다고 생각합니다. 디자인에 깊이 들어가면 문제가 계속 발생하고 답을 찾기가 더 어려워집니다. 내 연구는 지금까지 유익하지 않았으며, 게임 제작에 깊숙이 들어가는 훌륭한 튜토리얼은 codeproject.com/Articles/27219/… 입니다.
Grieverheart

1
제목에 "게임 엔진 공통 방법"을 넣는 것은 엔진을 향한 토론을 유도하는 경향이 있습니다. 엔진 =) 어쨌든, 당신이 찾고있는 것을 얻는 것이 어려운 이유는 Mayan 달력에는 연도가 있으며 각 유형마다 고유 한 요구 사항이 있으므로 다양한 유형의 게임. 특정 유형의 게임을 찾으면 더 나은 결과를 얻을 수 있습니다. 1 인칭 슈팅 게임은 검색 엔진에 견인력을주기 위해 매우 일반적입니다.
Patrick Hughes

FPS 스타일 또는 무료 로밍은 내가 찾는 것입니다. 본질적으로 다양한 그래픽과 애니메이션 기술을 실험 할 수있는 세상을 만들고 싶습니다. 나는 이미 점프와 스트래핑 및 모델 로딩과 같은 기본 카메라와 움직임을 가지고 있지만 걷는 느낌의 애니메이션을 카메라 클래스에 넣고 내부 변수를 사용하여 프레임을 계산합니다. 나는 주로 구멍을 패치하고 강력한 것을 생산하지 않습니다. 나는 그것이 학습 과정의 일부라고 생각하며 아마도 너무 빨리 움직이려고합니다.
Grieverheart

3
게임 코딩 완료, 게임 엔진 아키텍처는 코딩 게임에 대한 두 권의 책으로, 개발 파이프 라인과 기본 기술에 대한 일반적인 개요를 얻을 수 있습니다. 그들은 거의 모든 것에 대해
이야기합니다

답변:


11

나는 약 2 개월 전에 당신의 무대에 있었기 때문에 적절한 답변을 쓸 것입니다.

OpenGL 3.x를 더 잘 배울 수 있도록 매우 간단한 게임 엔진을 작성하기 시작했지만 3D 게임을 디자인하는 방법에 대한 저의 경험과 부족한 지식으로 인해 수업을 디자인해야한다는 사실을 깨닫게되는 데 어려움을 겪습니다. 다르게.

걱정하지 마십시오. 경험이 부족하면 주어진 클래스가 엔진에서 사용될 가능성과 방법에 대해 결코 생각할 수 없습니다. 클래스의 주요 기능을 고려하여 구현하고 나중에 재구성하는 것이 가장 좋습니다. 물건을 지나치게 생각하지 마십시오.이 단계에서 시간을 낭비하게 될 것입니다. 내 첫 게임은 완전한 혼란이었다. 나는 그것이 대부분의 사람들의 경우라고 확신한다.

내가 직면하고있는 다른 문제는 게임에서 시간을 간결하게 추적하고 필요에 따라 움직임을 업데이트하는 방법과 렌더러에게 다시 그려야한다고 말하는 방법입니다.

필요한 것은 게임 루프가 무엇인지에 대한 지식입니다. 이곳 은 시작하기에 좋은 곳입니다. 물리 처리와 같은 더 복잡한 코드를 작성하기 시작하면 가변 프레임 시간을 갖는 루프를 고려하고 싶지만 작게 시작하는 것이 좋습니다. 간단한 고정 프레임 게임 루프로 충분합니다.

또한 한 객체에서 다른 객체로 다양한 플래그를 전달하기 위해 Get 및 Set 함수를 계속 만들어야합니다.

이것은 소프트웨어 엔지니어링 질문입니다. 시간이 지남에 따라 보호해야 할 데이터와 안전한 데이터를 확인할 수 있습니다. 기능을 구현 한 다음 외부에 노출되지 않은 것을보고 공개 데이터로 취급 할 수있는 것이 가장 좋습니다.

그것은 모두 경험의 문제입니다. 카메라 클래스를 작성하면 변환 매트릭스 옆에 원하는 기능이 표시됩니다. 즉각적인 팁을 원한다면 맨 뼈를 구현하고 나중에 확장해야한다고 말해야합니다.

기사와 책 :

  • 게임 엔진 개발

이 책들은 현대 게임 엔진과 파이프 라인의 아키텍처에 대해 이야기합니다. 기본 기술에 대한 좋은 개요를 제공합니다. 선택해야 할 경우 첫 번째 책을 추천합니다. 특정 기술에 대해서는 "편향이 적습니다."

http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135

http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806

  • OpenGL

http://ogldev.atspace.co.uk/index.html

http://www.arcsynthesis.org/gltut/index.html

http://www.opengl.org/sdk/docs/man3/

  • GLSL

http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/

http://www.opengl.org/sdk/docs/manglsl/

  • 충돌 감지

http://www.peroxide.dk/papers/collision/collision.pdf

(적절한 3D 충돌 감지가 수행되는 방법에 대한 기사를 찾기가 어렵 기 때문에 이것을 연결하고 있습니다.)

더 많은 책이 있지만이 작업 (특히 Game Engine Architecture)을 완료하면 원하는 것을 더 잘 알게됩니다.

Btw, 나는 여전히 freeglut를 사용하고 있습니다. 진행하기 전에 또는 OpenGL을 더 잘 이해 한 후에 더 나은 창 시스템으로 옮기는 것이 좋습니다.

WinAPI, 시간이 있고 Windows 프로그래밍을 배우겠다고 생각하는 경우 (Windows 용으로 개발하는 경우) FreeGLUT은 학습에 적합하지만 결국에는 더 많은 기능을 원할 것입니다. 그러나 완전히 다른 경로로 가고 싶다면 SFML 또는 SDL과 같은 라이브러리로 OpenGL을 시작할 수 있습니다. 나처럼 고집이 없다면 FreeGLUT을 고수하십시오. 나는 WinAPI로 갔다.


안녕하세요 dreta, 당신의 아주 좋은 답변을 많이 주셔서 감사합니다. 다행히도 물리 시뮬레이션을위한 알고리즘을 이미 구현 했으므로 충돌 감지 방법을 이미 알고 있습니다. :).
Grieverheart

@ user1294203 굉장하다, 나는 시작했을 때 길을 잃었, 그래서 그냥 경우에 게시
dreta

플랫폼 별 코드를 너무 엉망으로 만들고 싶지 않으면 SFML에 투표합니다. 작고 쉽고 깨끗하며 코드로 쉽게 뛰어 들어 WINAPI를 어떻게 감싸는 지 이해할 수 있습니다.
edin-m
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.