최근에 절차 적 생성 이 Spore, MMO 등에 의해 주목을 받아 왔으며, 흥미롭고 강력한 프로그래밍 기법처럼 보입니다.
내 질문은 다음과 같습니다.
- 절차 생성 기술을 활용하는 중간 규모의 프로젝트를 알고 있습니까?
- 절차 생성에 가장 적합한 언어 / 클래스 언어는 무엇입니까?
- "심각한"코드에 절차 생성을 사용할 수 있습니까? (즉, 게임이 아님)
최근에 절차 적 생성 이 Spore, MMO 등에 의해 주목을 받아 왔으며, 흥미롭고 강력한 프로그래밍 기법처럼 보입니다.
내 질문은 다음과 같습니다.
답변:
중간 점 변위 알고리즘 과 같은 작은 이론과 간단한 예제로 시작해야 합니다 . 그래픽 생성에 관심이 있다면 Perlin Noise 에 대해서도 약간 배워야 합니다. 나는 이것을 절차 적 생성에 관한 마지막 해 프로젝트를 시작하기 위해 사용했습니다.
프랙탈 은 절차 생성과 밀접한 관련이 있습니다.
Terragen 과 SpeedTree 는 절차 적 생성의 놀라운 가능성을 보여줄 것입니다.
절차 생성은 모든 언어에서 사용할 수있는 기술입니다 (Java와 같은 OO 언어 및 Prolog와 같은 논리 언어에서 사용될 수 있으므로 C와 같은 절차 언어로 제한되지는 않음). 모든 언어에서 재귀를 잘 이해하면 절차 생성에 대한 이해가 강화됩니다.
'심각한'또는 게임이 아닌 코드의 경우 절차 생성 기술을 사용하여 다음을 수행했습니다.
절차 적 콘텐츠 생성이 이제 GPU 용으로 작성되었으므로 셰이더 언어를 알아야합니다. 그것은 GLSL 또는 HLSL을 의미합니다. 이들은 각각 OpenGL 및 DirectX에 연결된 언어입니다.
속도, 쉬운 학습 곡선 및 Frank D Luna 로 인해 Dx11 / HLSL을 선호하지만 OpenGL은 더 많은 플랫폼에서 지원됩니다.
OpenGL / DirectX 게임 엔진을 설정하는 데 걸리는 시간을 (상당한) 시간을 소비하지 않고 셰이더 작성에 바로 들어가려면 WebGL도 확인해야합니다.
절차 적 내용은 소음으로 시작합니다.
따라서 Perlin 노이즈 (및 그 후속 Simplex 노이즈 ) 에 대해 알아야합니다 .
Shadertoy 는 셰이더 프로그래밍에 대한 훌륭한 참고 자료입니다. 수학적으로 짜릿한 코드는 없지만 절차 적 내용이 수행되는 방식이므로 셰이더 코딩을 직접 수행 한 후에이 코드를 사용하는 것이 좋습니다.
Shadertoy는 픽사에서 일하는 데모 장면의 제품인 절차 적 천재 인 Inigo Quilez에 의해 만들어졌습니다 . 그는 라이브 코딩 세션에 대한 youtube 비디오 ( 훌륭한 예 )를 가지고 있으며이를 추천 할 수도 있습니다.
세계 발전기 시뮬레이션 판 구조, 침식, 비 그림자 등의 예를 보려면 https://github.com/ftomassetti/lands를 살펴보십시오.
그 외에도 문명 진화 시뮬레이터가 있습니다.
https://github.com/ftomassetti/civs
흥미로운 리소스에 대한 전체 블로그는 다음과 같습니다.
dungeonleague.com/
현재는 포기되었지만 모든 게시물을 읽어야합니다.
나는 이것에 대한 전문가는 아니지만 몇 가지 답변을 시도하고 기여할 수 있습니다.
NetHack과 그 형제는 공개 소스이며 절차 적 레벨 생성 (맵)에 크게 의존합니다. 링크 그것의 다운로드에. 랜드 스케이프 / 텍스처 / 클라우드 생성에 더 관심이 있다면, Gamasutra 와 GameDev 에서 그 주제에 관한 기사가 꽤 많이있는 것이 좋습니다 .
AFAIK 언어마다 큰 차이가 없다고 생각합니다. 당신이 보는 대부분의 코드는 여전히 게임 개발자의 공식 언어이기 때문에 C / CPP에있을 것이지만, 원하는 것을 사용할 수 있습니다 ...
그러한 기술로부터 이익을 얻을 수있는 프로젝트가 있는지에 따라 다릅니다. 나는 군대를 위해 시뮬레이터에서 절차 적 세대가 사용되는 것을 보았습니다 (게임은 매우 유능하지는 않지만 게임으로 간주 될 수 있습니다).
그리고 작은 메모-절차 적 생성이 소량의 규칙 또는 패턴과 많은 임의성에서 많은 데이터를 생성하는 것이면 결과는 달라질 수 있습니다.)
이 주제에 대한 훌륭한 책이 있습니다.
http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486
그것은 비 실시간 시각 효과와 애니메이션 생성에 편향되어 있지만 이론과 아이디어는이 분야 밖에서 사용할 수 있다고 생각합니다.
SideFX의 Houdini라는 완전한 절차 적 워크 플로우를 구현하는 전문 소프트웨어 패키지가 있다는 것도 언급 할 가치가 있습니다. 이를 사용하여 문제에 대한 절차 적 솔루션을 발명하고 프로토 타이핑하여 나중에 코드로 변환 할 수 있습니다.
패키지는 다소 비싸지 만 무료 평가판 라이센스가있어 매우 훌륭한 교육 및 / 또는 엔지니어링 도구로 사용할 수 있습니다.
작은 장면에서 복잡한 그래픽을 생성하기 위해 데모 장면에서 절차 적 생성이 많이 사용됩니다. Will Wright는 Spore를 만드는 동안 데모 장면에서 영감을 받았다고 말했습니다. 시작하기 가장 좋은 곳일 수 있습니다.
가장 중요한 것은 도로, 도시, 블록 및 건물의 구조를 분석하는 것입니다. 모든 건물의 공통점을 찾으십시오. 사진,지도, 계획 및 현실을보십시오. 그렇게하면 도시 건설을 단순한 컴퓨터 기술 문제로 생각하는 사람들보다 한 발 앞서 나갈 것입니다.
다음으로 작고 뚜렷한 단계로 해당 형상을 작성하는 방법에 대한 솔루션을 개발해야합니다. 믿을 수있는 도시를 구성하는 규칙을 정의해야합니다. 3D 모델링을하는 경우 컴퓨터가 어떤 상황에서든 지시를 따를 수 있도록 배운 것을 많이 생각해야합니다.
느슨하게 추적하지 않으려면 전체 프로세스의 작은 부분만을 담당하는 많은 연산자를 설정해야합니다. 이를 통해 시스템 디버깅, 확장 및 개선이 훨씬 쉬워집니다. 다음 단계에서는 해당 연산자를 연결하고 매개 변수를 변경하여 결과를 확인해야합니다.
나는 주로 창 텍스처가있는 임의의 모양의 상자로 구성된 너무 많은 "도시 생성기"를 보았습니다.
(10 년 이상 ...)
절차 적 생성은 데이터를 직접 작성하는 대신 코드를 사용하여 데이터를 생성하는 것만 의미합니다. 예를 들어 다양한 트리가있는 포리스트를 생성하려는 경우 각 트리 를 직접 디자인 하지 않으므로 변형을 생성하는 데 코딩이 더 효율적입니다. 그것은 트리 그래픽, 크기, 구조, 배치의 생성 일 수 있습니다 ...
일반적으로 몇 가지 규칙 과 의 상호 작용 이 있으며 , 자신의 임의성과 논리를 추가하고 이러한 모든 기술을 결합 할 수 있습니다 ... 다소 혼란 스럽지만 너무 혼란스럽지 않은 것은 흥미로운 결과를 얻을 수 있습니다.
다음은 몇 가지 주목할만한 기술입니다.
절차 적 세대로 유명한 몇 가지 게임 :
절차 적 육상 질량 생성 에 관한 비디오 튜토리얼 .
게임에 대한 절차 적 콘텐츠 생성에 대한 회의, 주제에 대한 동영상을 많이 가지고 : everythingprocedural
즐기세요