Làm thế nào để một người bắt đầu với thế hệ thủ tục?


147

Việc tạo thủ tục đã được đưa vào tầm ngắm gần đây (bởi Spore, MMO, v.v.), và nó có vẻ như là một kỹ thuật lập trình thú vị / mạnh mẽ.

Câu hỏi của tôi là:

  • Bạn có biết bất kỳ dự án cỡ trung nào sử dụng các kỹ thuật tạo thủ tục không?
  • Ngôn ngữ / lớp ngôn ngữ nào là tốt nhất để tạo thủ tục?
  • Bạn có thể sử dụng việc tạo thủ tục cho mã "nghiêm trọng" không? (tức là không phải trò chơi)

1
Tự hỏi nếu bạn thấy bài viết này từ X-Team hữu ích? x-team.com/blog/ từ
Adam Gerard

Câu trả lời:


117

Có lẽ bạn nên bắt đầu với một lý thuyết nhỏ và các ví dụ đơn giản như thuật toán dịch chuyển điểm giữa . Bạn cũng nên tìm hiểu một chút về Perlin Noise nếu bạn quan tâm đến việc tạo đồ họa. Tôi đã sử dụng điều này để giúp tôi bắt đầu với dự án năm cuối cùng của mình về thế hệ thủ tục.

Fractals có liên quan chặt chẽ với thế hệ thủ tục.

TerragenSpeedTree sẽ cho bạn thấy một số khả năng tuyệt vời của việc tạo thủ tục.

Tạo thủ tục là một kỹ thuật có thể được sử dụng trong bất kỳ ngôn ngữ nào (nó chắc chắn không bị hạn chế đối với các ngôn ngữ thủ tục như C, vì nó có thể được sử dụng trong các ngôn ngữ OO như Java và ngôn ngữ Logic như Prolog). Một sự hiểu biết tốt về đệ quy trong bất kỳ ngôn ngữ nào sẽ củng cố khả năng nắm bắt của bạn về Tạo thủ tục.

Đối với mã 'nghiêm trọng' hoặc không phải trò chơi, các kỹ thuật tạo thủ tục đã được sử dụng để:

  • mô phỏng sự phát triển của các thành phố để lập kế hoạch quản lý giao thông
  • mô phỏng sự phát triển của mạch máu
  • SpeedTree được sử dụng trong phim và thuyết trình kiến ​​trúc

Tiếng ồn Perlin này trông rất giống bộ lọc "đám mây" của Photoshop.
doubleOrt

Liên kết đầu tiên bị hỏng
Jean Carlo Machado

Một số nhạc Electro sử dụng thế hệ thủ tục được tạo ra
Poyda

50

Wiki tạo nội dung thủ tục:

http://pcg.wikidot.com /

nếu những gì bạn muốn không có ở đó, thì hãy thêm nó;)


11
Tôi không thể sao chép toàn bộ wiki ở đây! Không có "phần thiết yếu".
Martin

12

Việc tạo nội dung theo thủ tục hiện được viết cho GPU, vì vậy bạn sẽ cần biết một ngôn ngữ đổ bóng. Điều đó có nghĩa là GLSL hoặc HLSL. Đây là những ngôn ngữ gắn liền với OpenGL và DirectX tương ứng.

Mặc dù sở thích cá nhân của tôi là dành cho Dx11 / HLSL do tốc độ, đường cong học tập dễ dàng hơn và Frank D Luna , OpenGL được hỗ trợ trên nhiều nền tảng hơn.

Bạn cũng nên kiểm tra WebGL nếu bạn muốn chuyển ngay sang viết shader mà không phải mất thời gian (đáng kể) để thiết lập công cụ trò chơi OpenGL / DirectX.

Nội dung thủ tục bắt đầu bằng tiếng ồn.

Vì vậy, bạn sẽ cần tìm hiểu về tiếng ồn Perlin (và tiếng ồn Simplex kế tiếp của nó ).

Shadertoy là một tài liệu tham khảo tuyệt vời để tìm hiểu về lập trình shader. Tôi sẽ khuyên bạn nên đến với nó một khi bạn đã tự mình mã hóa shader, vì mã không dành cho phép toán học, nhưng đó là cách thực hiện nội dung thủ tục.

Shadertoy được tạo ra bởi một thiên tài thủ tục, Inigo Quilez , một sản phẩm của cảnh demo, người làm việc tại Pixar. Anh ấy có một số video youtube ( ví dụ tuyệt vời ) về các phiên mã hóa trực tiếp và tôi cũng có thể đề xuất những video này.


17
Ý bạn là gì "việc tạo nội dung theo thủ tục hiện được viết cho GPU"? Bạn chỉ đang nói về những thứ như lưỡi cỏ? Bạn không có nghĩa là tạo bản đồ hoặc thành phố cho các trò chơi, ví dụ, phải không?
Dronz

2
Vâng, tôi nghĩ rằng nhận xét "tất cả" ở đây là sự tăng trưởng quá mức, nhưng trong lĩnh vực tạo cảnh quan (mà tôi đoán là loại phổ biến nhất), đây là một câu trả lời hữu ích. Mặc dù tôi không thể tưởng tượng ai sẽ muốn xem ai đó gõ mã trong video.
Nate CK

1
Một số người muốn tìm hiểu cách viết mã phức tạp, chẳng hạn như shader hoặc tìm hiểu cách sử dụng các mẫu phức tạp trong thiết kế của họ. Và đó chỉ là trầy xước bề mặt.
Ultroman the Tacoman

"Việc tạo nội dung theo thủ tục hiện được viết cho GPU, vì vậy bạn sẽ cần biết một ngôn ngữ đổ bóng." chỉ đơn giản là không đúng sự thật và sai lệch 100%. (Tôi đang thực hiện dự án tạo thủ tục đơn giản, tôi đã viết 0 dòng mã shader trong đời)
giảm hoạt động

9

Nếu bạn muốn có một ví dụ về một tấm mô phỏng máy phát điện thế giới kiến ​​tạo, xói mòn, bóng mưa, v.v. hãy xem: https://github.com/ftomassetti/lands

Trên đó cũng có một trình giả lập tiến hóa văn minh:

https://github.com/ftomassetti/civs

Một blog đầy đủ về tài nguyên thú vị là:

dungeonleague.com /

Nó bị bỏ rơi ngay bây giờ nhưng bạn nên đọc tất cả các bài viết của nó


Nguồn thú vị.
SalahAdDin

8

Tôi không phải là chuyên gia về vấn đề này, nhưng tôi có thể thử và đóng góp một vài câu trả lời:

  1. NetHack và nó hoàn toàn là nguồn mở và phụ thuộc rất nhiều vào việc tạo các cấp độ (bản đồ) theo thủ tục. Liên kết đến các bản tải xuống của nó. Nếu bạn quan tâm hơn đến việc tạo phong cảnh / kết cấu / đám mây, tôi khuyên bạn nên tìm kiếm GamasutraGameDev có khá nhiều bài viết về các chủ đề đó.

  2. AFAIK Tôi không nghĩ có nhiều sự khác biệt giữa các ngôn ngữ. Hầu hết các mã bạn thấy sẽ có trong C / CPP vì đây vẫn là ngôn ngữ chính thức của Nhà phát triển trò chơi, nhưng bạn có thể sử dụng bất cứ thứ gì bạn muốn ...

  3. Vâng, nó phụ thuộc nếu bạn có một dự án có thể được hưởng lợi từ công nghệ như vậy. Tôi thấy thế hệ thủ tục được sử dụng trong các trình giả lập cho quân đội (có thể được coi là một trò chơi, mặc dù chúng không thể chơi được lắm :)).

Và một lưu ý nhỏ - định nghĩa của tôi nếu việc tạo thủ tục là bất cứ điều gì tạo ra nhiều dữ liệu từ một lượng nhỏ quy tắc hoặc mẫu và rất nhiều tính ngẫu nhiên, kết quả của bạn có thể thay đổi :)


8

Có một cuốn sách tuyệt vời về chủ đề này:

http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

Nó thiên về các hiệu ứng hình ảnh và thế hệ hoạt hình phi thời gian thực, nhưng lý thuyết và ý tưởng có thể sử dụng được bên ngoài các lĩnh vực này, tôi cho rằng.

Cũng có thể đáng để đề cập rằng có một gói phần mềm chuyên nghiệp thực hiện quy trình thủ tục hoàn chỉnh có tên là Houdini của SideFX. Bạn có thể sử dụng nó để phát minh và tạo ra các giải pháp thủ tục cho các vấn đề mà sau này bạn có thể dịch sang mã.

Mặc dù là một gói khá đắt tiền, nó có giấy phép đánh giá miễn phí, có thể được sử dụng như một công cụ giáo dục và / hoặc kỹ thuật rất đẹp.


7

Tạo thủ tục được sử dụng nhiều trong demoscene để tạo ra đồ họa phức tạp trong một tệp thực thi nhỏ. Will Wright thậm chí còn nói rằng anh ta đã được truyền cảm hứng từ demoscene khi tạo ra Spore. Đó có thể là nơi tốt nhất của bạn để bắt đầu.

http://en.wikipedia.org/wiki/Demoscene


3

điều quan trọng nhất là phân tích cách thức đường, thành phố, khối và tòa nhà được cấu trúc. tìm hiểu những gì tất cả các ví dụ như các tòa nhà có điểm chung. nhìn vào hình ảnh, bản đồ, kế hoạch và thực tế. nếu bạn làm điều đó, bạn sẽ đi trước một bước so với những người coi việc xây dựng thành phố chỉ là vấn đề công nghệ máy tính.

Tiếp theo, bạn nên phát triển các giải pháp về cách tạo hình học đó theo các bước nhỏ, riêng biệt. bạn phải xác định các quy tắc tạo nên một thành phố đáng tin cậy. Nếu bạn tham gia mô hình 3d, bạn phải suy nghĩ lại rất nhiều điều bạn đã học để máy tính có thể làm theo hướng dẫn của bạn trong mọi tình huống.

để không bị lỏng lẻo, bạn nên thiết lập nhiều toán tử chỉ chịu trách nhiệm cho các phần nhỏ của toàn bộ quá trình. điều đó làm cho việc gỡ lỗi, mở rộng và cải thiện hệ thống của bạn dễ dàng hơn nhiều. trong bước tiếp theo, bạn nên liên kết các toán tử đó và kiểm tra kết quả bằng cách thay đổi các tham số.

tôi đã thấy quá nhiều "máy phát điện thành phố" chủ yếu bao gồm các hộp có hình dạng ngẫu nhiên với một số họa tiết cửa sổ trên chúng: (


3

(Hơn 10 năm sau ...)

Tạo thủ tục chỉ có nghĩa là mã được sử dụng để tạo dữ liệu thay vì được làm bằng tay. Ví dụ: nếu bạn muốn tạo một khu rừng với nhiều cây khác nhau, bạn sẽ không thiết kế từng cây bằng tay , do đó mã hóa sẽ hiệu quả hơn để tạo các biến thể. Nó có thể là thế hệ của đồ họa cây, kích thước, cấu trúc, vị trí ...

Nói chung có một số loại interation với một vài quy tắc , thêm vào đó bạn có thể thêm một số ngẫu nhiên và logic của riêng bạn, kết hợp tất cả những kỹ thuật ... Bất cứ điều gì hơi lộn xộn nhưng không quá hỗn loạn có thể mang lại kết quả thú vị.

Dưới đây là một vài kỹ thuật đáng chú ý:

Một vài trò chơi nổi tiếng với thế hệ thủ tục của họ:

Video hướng dẫn về thế hệ Landmass thủ tục .

Hội thảo về tạo nội dung thủ tục cho các trò chơi, có rất nhiều video về chủ đề: mọi thứ đều được cung cấp

Chúc vui vẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.