Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Sorry that it's been so very long since you posted!
Smoke & Sacrifice is indeed built on the Unity engine. The engine didn't provide much of what we need out of the box though, being a generic engine and Smoke and Sacrifice being quite a unique type of game.
So I built a lot of new technology to power S&S. The terrain itself is built from a 2k x 2k greyscale heightmap which covers the whole world. There's also a second map with colour which define the biome type of each heightmap pixel. Sub-types are also possible so you can have many different variations of swamp, for example.
As the player moves around, the heightmap is used to create 3D geometry in chunks, and the geometry behind you is removed. The geometry for the whole world is about 2 million polygons.
The enemies, obstacles, plants, bombs and so on are procedurally placed. The game uses perlin noise to generate organic looking patterns for objects, and our designers adjusted parameters to get the density and spread of objects that they liked. These use a fixed random seed, so that when you revisit an area, the objects generate in the same 'random' pattern again, so they appear in the same places they did before even though they were deleted and recreated.
For some objects, the player can have an effect on them. So you can kill creatures, pick plants etc. When the player interacts with an object, for example killing a creature, that event is stored in a database. When the player leaves and comes back, the random generation system generates the creature again as normal and the database is consulted to see if it was killed before. It if was, then the creature is removed. After a while, the data is pruned so the creature will then reappear. Because of this, you can, for example, kill all the creatures in an area and they will stay dead, even after leaving and returning, until the population recovers.
In additional to the random generation there are also custom laid out areas that a designer has created. This covers the drear camps, the recipe stones, world heart, boss battle areas etc. There are about 100 of these in the game. These are streamed in and out as you approach the area. The world database also stores any changes you may have made in these areas. So if you destroy all the manually placed barrels in the village, they stay gone even when the level is unloaded and then reloaded.
Creatures can fight and interact with other creatures over quite a wide distance. This means that sometimes you will come across a pile of resources for no apparent reason, because a creature has died there. Outside the player's view, creatures are processed less frequently, to allow for a simulation over a wide area without heavily taxing slower CPUs like on the Nintendo Switch. Even outside the simulated area creatures are simulated on a local population level.
Plants are actually simulated across the whole world. When you revisit an area, during the generation step the game looks at how long it was since you last saw a plant and makes it grown the correct amount based on how long it has been since you last saw it.
The organic blending textures between areas are a done using a custom shader that allows for a custom map that controls the blend, so that the shape of the blend between biomes can be controlled by the artist. So, for example, you can have rocks in one biome poke through the ground in another during the blend. It's quite hard to describe!
The mist effect is also a custom effect which uses the z-buffer, framebuffer distortion and a fluid simulation to make it look how it does.
There's also a ton of other tech to handle quest lines, a custom audio system, a cutscene editor, and loads of other things.
And it was all coded on my lonesome in 18 months!
I've been meaning to write a tech talk on all this for a while and have just realised that the above would be a good start on writing one, so thanks for the question!
We put a ton of work into the game and hope that player's enjoy it whether they know what's going on underneath or not!
Cheers,
- Neil
What an incredible reply!
Thank you so much, I loved the look and feel of S&S - the world was so organic and flowed together so nicely.
What I found most interesting was how seamless the transitions between biomes were because multiple textures faded into each other. I think I understand now how you did it based on your explanation.
The seperate database to store the "destroyed props" really shows because I noticed that items I dropped hours before would remain. I spent a lot of time planting dozens of glowferns around the wild child until the Switch started "chugging along" whenever I visited the area :D Eventually they disappeared, I assumed this was a failsafe put in for *just this sort* of eventuality.
The world you created had more object permenance than an Elder Scrolls game, which is no small feat.
I love the fact that the world NPCs are operating on your own homebrewed "A-life" system to steal a buzzword from the S.T.A.L.K.E.R. series.
I hope an S&S sequel or spiritual successor is in the works because I loved the framework that you've developed.