2011-04-28 2 views
4

현재 게임 엔진을위한 메모리 할당 시스템을 코딩하고 있으며 할당 자 구조가 유용한 지에 대한 조언을 제공하는 숙련 된 개발자가 있는지 궁금합니다.게임 엔진 용 할당 자

나는 그것이 어떤 사람들에게는 조금 걱정스러운 것 같은데, 그래서 나는 내 입장을 조금 정당화 할 필요가 있다고 생각한다. 나는 대답 herehere (및 또한 here, herehere를 가리키는 블로그)를 읽었습니다. 하지만, "게임을 처음부터 끝까지 반복 해 보았습니다. 그런 다음 재사용하는 코드는 여러분의 '엔진'일입니다. 실제로는 제대로 작동하지 않았습니다. 나는 실제로 내가 반복적으로하고있는 것들 (아마도 내 코드를 잘 재사용하지 못했을 것입니다)에서 실제로 수렁에 빠졌고 어떤 게임에서도 그렇게까지 멀지 않았다는 것을 알았습니다.

그래서 나는 내가 다시 한번 반복해서 사용하고있는 것들을 코드화하기로 결정했습니다. 한번 해보고 따로 설정하십시오.

나는 정말로 내 리그에서 나 자신을 발견 했으므로 몇 권의 책을 샀다. Jason Gregory (GEA)의 게임 엔진 아키텍처는 정말 훌륭하지만, 저는 게임 코딩 완성 (McShaffry)과 프로그래밍 게임 AI by 예 (Buckland)도 있습니다. GEA는 고성능 할당 자에 대한 정말 좋은 아이디어를 가지고 있으며, 정말 관심이 많아서, 나는 그것을 줄 것이라고 생각했습니다.

나는 스택 기반 할당자를 코딩했으며 거의 ​​풀 기반 할당자를 마쳤다. 둘 다 메모리 정렬 능력이 있으며 서로 다른 메모리 예산 (즉, 임의의 할당자가 "소매"메모리 또는 "개발"메모리 등을 사용할 수 있음)로 작업하도록 지정할 수 있습니다. 필자는 프로그래밍 기술/관심 수준 측면에서 이러한 구성 요소를 만드는 것이 보람있는 것으로 나타났습니다.

게임 개발에 유용하거나 정기적으로 올라 오는 다른 할당 자 구조를 기꺼이 권장 할 개발자가 있는지 궁금합니다. ? 또는 전체 경력에서 다른 것을 사용한 적이없는 개발자가 있습니까?

다시 한 번 내 질문을 정당화합니다. ("내 자신의 게임을 만들고 필요한 구조를 확인하십시오."하지만 ...) 게임 엔진 아키텍처는 저에게 큰 리소스였습니다. 저자는 "이봐 요, 업계가 주로하는 일 이죠"라고 기꺼이 비난하고 있습니다. 그리고 누군가가 '경험 재사용'을 할 수 있고 '이 구조에 대해 생각해'라고 말할 수 있다면, 많은 시간을 들여 게임 전체를 작성하고 유용한 것을 알아낼 수 있습니다.

답변

0

음, 솔직히 말해서, 가장 많이 사용해온 것들은 수명이 짧은 객체의 경우 Pool<T>이고 C++ 기본 할당자를 대신하여 미리 할당 된 힙입니다.

다시 한 번 필요한 경우 을 개발하십시오..

+4

이 파티에 조금 늦었지만 "필요할 때"사용자 지정 할당자를 개발하는 것은 게임 엔진에 대해 매우 비싼 제안 일 수 있습니다. 성능 향상을 위해 개발주기가 끝날 때까지는 일반적으로 "필요"하지 않습니다. 그때까지 엔진의 상당 부분을 리팩터링하여 엔진을 가장 효율적으로 사용해야합니다 . 또한 대용량의 실시간 게임을 개발하고 데스크탑 PC 플랫폼 이외의 다른 제품을 목표로 삼고 있다면 장기적으로 필요할 것입니다. 내가 할 수 있다면 – Gerald

2

게임을 작성하는 데있어 가장 큰 장애물은 모든 종류의 멋진 라이브러리 코드를 먼저 디자인해야한다고 생각하는 것입니다. 대부분의 게임은 다른 유형의 애플리케이션보다 훨씬 적은 종류의 이런 종류가 필요합니다. 게임은 거의 항상 deverlopers에 의해 결정되고 플레이어의 행동 (이 규칙의 유일한 예외 인 대규모 멀티 플레이어 게임)의 영향을 거의받지 않는 매우 한정된 수의 데이터/오브젝트를 처리합니다. 따라서 정적으로 약간 미친 경우 모든 데이터에 대한 배열.

표준 라이브러리가 깨진 PlayStation 또는 다른 콘솔 정크 용으로 개발하지 않는 한 자신의 할당 자 작성을 고려하지 않아야합니다. 게임 개발 및 시간 낭비와는 완전히 직각입니다. 이것은 2011 년 1992 년이 아니며, 자신의 데이터 캐싱과 버려짐을 관리해야하는 2 ~ 4MB의 RAM이있는 DOS 시스템을 다루지 않습니다.가상 메모리 시스템을 통해 업무를 처리하고 운영 체제의 절반이 아니라 게임을 만드는 데 시간을 투자하십시오.

+1

+100. 재사용 가능한 코드/엔진을 작성하는 것은 대단합니다. (내 것은 2002 년부터있었습니다.)하지만 많은 것들이 자신의 메모리 할당자를 작성하는 것보다 더 중요합니다 ... – ggambett

+1

1992 년에 2 개를 사용하는 아케이드 게임을 개발하지 않는 한 -4MB의 RAM이 답변은 완전히 벗어났습니다. –

+0

@ MartinKällman : 왜 그렇게 생각하는지 자세히 설명해 주시겠습니까? –