My favorite tools and techniques for procedural gamedev
Casey Primozic shares his procedural game development techniques, focusing on seamless textures, custom shaders, AI-generated textures, and volumetric effects, while exploring future applications like Constructive Solid Geometry for 3D manipulation.
Read original articleCasey Primozic discusses his favorite tools and techniques for procedural game development, focusing on various methods for enhancing 3D scenes and levels. He emphasizes the use of seamless textures and custom shaders, particularly highlighting triplanar mapping, which allows for effective texturing without predefined UV maps. He has improved this technique to enhance visual quality and performance. Hex tiling is another method he employs to eliminate visible texture repetition, although it requires predefined UV mapping. To optimize performance in complex scenes, he utilizes a depth pre-pass, which can significantly reduce rendering costs.
Primozic also incorporates AI-generated textures into his projects, finding them beneficial when used judiciously. He has developed a versatile shader for volumetric fog and clouds, enhancing the dynamism of static levels. His work on procedural mesh processing aims to create more realistic structures from low-poly meshes, while his terrain generation system employs noise functions and a level of detail (LoD) approach for efficient rendering.
Looking ahead, he expresses interest in exploring Constructive Solid Geometry (CSG) for manipulating 3D space, which could allow for creative effects like simulating decay in structures. Overall, his blog serves as a resource for those interested in procedural game development techniques, with insights into practical implementations and future explorations in the field.
Related
Homegrown Rendering with Rust
Embark Studios develops a creative platform for user-generated content, emphasizing gameplay over graphics. They leverage Rust for 3D rendering, introducing the experimental "kajiya" renderer for learning purposes. The team aims to simplify rendering for user-generated content, utilizing Vulkan API and Rust's versatility for GPU programming. They seek to enhance Rust's ecosystem for GPU programming.
Total Annihilation Graphics Engine (2012)
The article details Jon Mavor's work on Total Annihilation's graphics engine, overcoming hardware limitations and implementing optimizations like caching units as sprites and improving image quality. Mavor's dedication and technical insights are well-received.
How Spore's Creature Creator was made, 2003-2008
Chris Hecker's website showcases his detailed insights on Spore's creature design, covering skin mesh, texturing, animation, and AI. He explains challenges in real-time mesh generation, texture atlases, implicit surfaces, and procedural paint systems.
Understanding 3D Graphics: Terms and concepts useful for starting with 3D
This article explains key concepts in 3D graphics for beginners, covering shape, color, shaders, textures, PBR, UV mapping, materials, and normal maps. It discusses trade-offs between geometry and texture quality.
Introduction to Realtime Fluid Simulation for Programmers and Technical Artists
The article introduces real-time fluid simulation for programmers and artists, focusing on geometrical concepts in Unity 3D. It discusses fundamental behaviors, initial flaws, and encourages developing a more accurate simulation.
In theory CSG can fill this niche, but it can be a bit difficult to think about the problem in that way (for me, at least) since you can no longer view it as just for looping to add vertices, but you instead need to model everything as a 3d shape.
I tried building some routines to take two loops of vertices and connect them through heuristics by adding faces, but I had a hard time getting it to work well (choosing which vertices should connect was much harder than I expected, it was easy to get really bad looking connections).
What I really want to do someday is make a game where there is a system for different modular procedural generation systems to work together in a way that allows for spontaneity. So e.g., systems could "claim" slices of the world, delegate parts of it to other systems (e.g., put some plant here) and connect with other adjacent things.
Dwarf Fortress for example starts with basic midpoint displacement but then does a lot of custom massaging.
Im gonna give a try the Three.js
If anyone is interested in a WIP procedural RPG level editor, check out https://github.com/gamedevgrunt/3D-Action-RPG-JavaScript
To be fair, my experimentation was within the context of a CAD/CAM application rather than a game. The scenes were quite different from typical game environments, with minimal textures and very high-poly geometry.
Related
Homegrown Rendering with Rust
Embark Studios develops a creative platform for user-generated content, emphasizing gameplay over graphics. They leverage Rust for 3D rendering, introducing the experimental "kajiya" renderer for learning purposes. The team aims to simplify rendering for user-generated content, utilizing Vulkan API and Rust's versatility for GPU programming. They seek to enhance Rust's ecosystem for GPU programming.
Total Annihilation Graphics Engine (2012)
The article details Jon Mavor's work on Total Annihilation's graphics engine, overcoming hardware limitations and implementing optimizations like caching units as sprites and improving image quality. Mavor's dedication and technical insights are well-received.
How Spore's Creature Creator was made, 2003-2008
Chris Hecker's website showcases his detailed insights on Spore's creature design, covering skin mesh, texturing, animation, and AI. He explains challenges in real-time mesh generation, texture atlases, implicit surfaces, and procedural paint systems.
Understanding 3D Graphics: Terms and concepts useful for starting with 3D
This article explains key concepts in 3D graphics for beginners, covering shape, color, shaders, textures, PBR, UV mapping, materials, and normal maps. It discusses trade-offs between geometry and texture quality.
Introduction to Realtime Fluid Simulation for Programmers and Technical Artists
The article introduces real-time fluid simulation for programmers and artists, focusing on geometrical concepts in Unity 3D. It discusses fundamental behaviors, initial flaws, and encourages developing a more accurate simulation.