2. Procedrual Biome in game
<Farcry 6>
This is to demonstrate the process of a procedural biome system in <Farcry 6>, a
ubisoft entertainment game announced in fall, 2021.
I worked with another six technical artists and a ecologist on this system.
It procedurally handles around 95% virtual assets placement on 100 km2
game-
play world, with various micro-biome structures including coast area, rainforest,
submarine, volcano area and urban region.
I will mainly discuss its application in <Farcry 6: vass insanity> as an example.
4. terraforming infomation
terraforming information is the section that I was in charge of. The graphs below show the process of variant terrafor-
ming information generations.
flow
occulusion
slope
calculate normals and tangents
establish the 2D vector field for
simulation
heightmap
heightmap generate spiral sampler with 24
points
calculate normals and slopes
simulate drips flow motion along
surface, and leave its trail on
heightmap.
flow is useful for generating de-
bris, debris and adding visual
guidline.
occulusion region will be colo-
nized with ombrophyte vegeta-
tions.
steep region will be sent to proce-
dural cliff generator (handle rock
placement)
sample the spherical volume of
each points. calculate occulusion
by additive means.
result
5. population process
take a coconut tree as an example
community process
dominant individuals spreading influence (seeds) expand population amounts
(after 177 years in simulation)
region of macrophyte
high pass filter: grow
taro plants
low pass filter + worley
noise : grow fern
erosion of ferns, taro
plants: grow stones.
region of macrophyte
6. shape grammar: point of interest
Procedrual Space Narrative
This is an experiment I implemented in <Farcry 6>, and the result turns to
be satisfying.
Facing the problem that players were easily getting bored and losed their
direction in huge forest, I decided to use some procedural way to build up
some space narratives by existing procedural methods. The idea is to ar-
range trees to create some “room”s in forest. The “room” will take tall trees
as canopy, bushes and ferns as the wall, and it will intersperse some daz-
zling colorful plants as a location POI and encourage players to explore
shape grammar: tall trees as the canopy
shape grammar: bush as wall.
“Room“ is generated by level artist
hand painting and global worley noise
7. Some screenshots of our work
We publicly demonstrated the previous version of this procedural system
in GDC 2017. You can find out more if interested~
8. Constrain Satisfication Problem
a procedural constructing process
I implement this algorithm to test the expression
possibility on creating infinite procedural content.
This algorithm is introduced in my Artificial Intel-
ligence Course 2019 as a method to solve a general
constrained condition.
A classic Constrain Satisfaction Problem (CSP) is
Sudoku Problem, in which each column, row and
square function as constraints, imitating the pos-
sibility of blank slots. And with each slot getting
solved, the possibility of the rest slots shrinks or
collapsed and eventually approaching to the result.
The philosophy of this problem could be applied
general design cases.
The following three min-project <HyperG> <In-
finite 67>and <Cocoons Land>
9. This is a personal project that I imple-
mented using algorithem to solve Con-
straints Satisfication Problem (CSP). It is
a course Demo for a artificial intelligence
cource in 2019.
This 3D maze are fully procedually gen-
erated in real-time. I take the reference
from the architest Ricardo Bofill.
CSP x Hyper G
10. Preparation
prefabs
I created the most basic prefabs and coded their connectivity.
and their 24 variants
It is cumbersome to creat all of connectivity conditions prefabs. But
you could rotate the basis to achieve it. I immplement a generator to
procedurally generate all of their variants. It is a simple math prob-
lem...foreach prefabs, it has 24 variants which will rotate itself along 6
axis with 4 different phases.
My generator will give each of them the correct connectivity proced-
rually.
11. constraints: front constraints: right
Inference: constraints propagation
It will take up every single space...
constraints: right
new infereced type
constraints:up
new infereced type new infereced type new infereced type
constraints: right
constraints:up constraints:up constraints:down constraints:front
12.
13. CSP x Infinity 67
Habitat 67 is one of my farvorite architecture. I implement
<Infinity 67> with almost the same methods with CSP. It
takes the position of camera and dynamically fetches the
slots nearby region(100x10x100).
14. CSP x Cocoons Isolation
another project of CSP (personal project, May. 2020)
<Cocoons Isolation> is the critical project to show the state of the “filter
bubble” referred to by Eli Pariser. I constructed them with the style of
Habitat 67.
Each building is isolated.
Players seem to have complete freedom choosing their routes but could
never get out of Cocoons Isolation. Here, the entropy function functions
as the “personal recommendation” from social media.
I apply the simple “edge bundling” algorithm to it to shape more like
cocoons.
15. faded memory state
only structure left
no need
recommendation(the next
state)
existing memory state
fully shaped
with need
From: [ 0, 0, 0]
activity: left
To: [ 0, 0, 1]
From: [ 0, 0, 0]
activity: front
To: [ -1, 0, 0]
From: [ -1, 0, 0]
activity: up
To: [ -1, 1, 0]
From: [ -1, 1, 0]
activity: right
To: [ -1, 1, -1]
From: [ -1, 1, -1]
activity: back
To: [ 0, 1, -1]
From: [ 0, 1, -1]
activity: down
To: [ 0, 0, -1]
From: [ 0, 0, 0]
activity: left
To: [ 0, 0, 1]
From: [ 0, 0, 0]
activity: left
To: [ 0, 1, 0]
From: [ 0, 1, 0]
activity:
To: [ -1, 1, 0]
From: [ -1, 1, 0]
activity: down
To: [ -1, 0, 0]
From: [ -1, 0, 0]
activity: down
To: [ -1, -1, 1]
Reinforce action (possibiltiy += 10%)
From: [ 0, 0, 0]
activity: left
To: [0,0,1]
Reinforce action (possibiltiy += 10%)
From: [ -1, 0, 0] [-1,1,0]
activity: left
To: [-1,1,0] [-1, 0, 0]
Simulation of online searching and personal
recommendation.
Reinforcement
when a path meets the ancient needs and the next state collide with the previ-
ous decision, it will increase all the previous choices possibility. Hence, previ-
ous choice are reinforced. a thicker cocoon wall will be established
needs
white handle
16. Interest Range
The reinforcement will always converge the searching space with given in-
terest range, the graphs below demonstrate the growth with different inter-
est range.
interest range = 0 interest range = 0
interest range = 0 interest range = 0
interest range = 0
18. Joy of Binary Tree
(personal project Jun, 2021)
length: 0.2
degree: 20
tolerance: 7
I started this project when working on procedural plants
generation, L-system in a Ubisoft Game Development. I
gradually tweaked some parameters and played it for a
while. I just simply admire the simplicity, beauty of this
algorithm could show us.
The whole project was developed in Houdini.
19. The algortiehm is simple
and beautiful:
for each point:
1) grow a little bit (random(length))
2) checking nearby point
if too sparse (<tolerance)
branch out (random(degree))
if too dense (>= torlerance)
stop
Only three parameters :
length
degree
tolerance
length: 0.7
degree: 7
tolerance: 1000
21. Thanks for reading!
I am so poor in writing portfolio. Here is the video demo reel of
my work. I would appreciate so much if you take time to visit it!
https://iota11.github.io/