Các công cụ và kỹ thuật tôi ưa dùng cho phát triển game thủ tục
(cprimozic.net)-
Tổng quan dự án
- Trong vài năm qua, tác giả đã làm việc với các cảnh và màn chơi 3D chạy trong trình duyệt
- Ban đầu bắt đầu như các bản demo riêng lẻ, nhưng dần phát triển thành những dự án giống như game có liên kết với nhau
- Sử dụng các kỹ thuật thủ tục và tạo sinh để triển khai một số thành phần cụ thể
-
Shaders + Textures
- Phần lớn texture được thiết kế liền mạch để không lộ hoa văn ngay cả trên các vùng lớn
- Tạo shader tùy biến trong Three.JS để cung cấp thêm tính năng
-
Triplanar Mapping
- Có thể áp dụng texture lên mesh mà không cần UV map, rất hữu ích cho địa hình được tạo thủ tục
- Có thể triển khai đơn giản và áp dụng cho nhiều loại mesh khác nhau
- Dùng hàm
pow()để điều chỉnh trọng số nhằm cải thiện chất lượng và tối ưu hiệu năng
-
Hex Tiling
- Thuật toán che giấu sự lặp lại của các texture liền mạch
- Được port thành thư viện độc lập có thể tích hợp dễ dàng vào các dự án Three.JS
- Cần UV map và có overhead hiệu năng lớn
-
Depth Pre-Pass
- Ghi lại độ sâu của pixel bằng cách render cảnh hai lần để cải thiện hiệu năng
- Có thể cải thiện hiệu năng hơn 30% trong các cảnh có nhiều overdraw
-
AI-Powered PBR Texture Synthesis
- Nâng chất lượng cảnh bằng cách sử dụng texture do AI tạo ra
- Dùng DeepBump và Materialize để tạo các bản đồ PBR
-
Volumetric Fog/Clouds
- Phát triển shader để thêm mây hoặc sương mù vào cảnh
- Sử dụng tra cứu nhiễu LoD để bổ sung nhiều tính năng khác nhau
-
Meshes + Geometry
- Nghiên cứu các kỹ thuật tạo và biến đổi mesh trong runtime
- Chủ yếu tạo thủ tục các yếu tố trang trí hoặc hậu cảnh
-
LoD Terrain
- Tạo địa hình bằng hàm nhiễu và điều chỉnh độ phân giải động theo khoảng cách tới camera
-
Procedural Mesh Processing + Manipulation Pipeline
- Xây dựng pipeline để phân chia tinh hơn và biến đổi mesh low-poly theo cách thủ tục
- Việc xử lý normal đòi hỏi rất nhiều công sức
-
Future Work
- Dự định dùng Constructive Solid Geometry(CSG) để hợp nhất hoặc cắt mesh
- Mục tiêu là port sang Rust để hiểu sâu hơn
Tóm tắt của GN⁺
- Bài viết này giới thiệu nhiều kỹ thuật và công cụ hữu ích cho phát triển game thủ tục
- Các kỹ thuật texture như Triplanar Mapping và Hex Tiling giúp cải thiện đồng thời hiệu năng và chất lượng
- Việc tạo texture bằng AI và shader Volumetric Fog/Clouds làm tăng tính chân thực của cảnh
- Các hướng phát triển tương lai như Constructive Solid Geometry có tiềm năng lớn cho biến đổi mesh
- Các dự án có chức năng tương tự gồm có ProBuilder của Unity và Houdini
1 bình luận
Bình luận trên Hacker News
Từng có kinh nghiệm thử sức với tạo sinh thủ tục trước đây
Tạo địa hình tốt không hề đơn giản
Đây là một bài viết tuyệt vời về các kỹ thuật thủ tục trên web
Có trải nghiệm lẫn lộn với việc dùng depth pre-pass
Là một nghệ sĩ 3D, đây là một bài viết rất thú vị