Official logo from digitaldragons.pl
May brings a special event into gaming industry in Cracow. For the fifth time Digital Dragons Conference is organized! I’ve just returned from the first day of the conference. Here are my notes.
- Rendering and Post Processing Pipeline of Bound
- id Software’s Early Days
- From start to ship: Lifecycle of a game on Oculus
- The tools used in the development of Life Is Strange
- How to improve the freedom of movemet in FPP...
- Debugging Multiplayer Games - Lessons from Warframe
- Gameplay Programming in The Assassin’s Creed Syndicate Experience
- Diversity of Ideas
As a reminder Digital Dragons Conference is about promoting games:
Digital Dragons is one of the biggest B2B event dedicated to digital
entertainment sector in East-Central Europe.
Digital Dragons promotes the games sector, one of the fastest growing sectors in the digital entertainment industry. Digital Dragons is where you can meet the most important players of Polish and global game development. Thanks to the presence of a vast number of games producers, publishers, venture capital funds, and representatives of the games industry media, Digital Dragons provides a perfect opportunity for business contacts, staff recruitment, and product promotion launches.
I am really pleased to see that Digital Dragons is growing. In 2014 there was 822 people, in 2015 there were 1100 participants! The pace is decent so I wonder about the number from this year.
Here are some more facts and figures
Another great thing is to see more topics about programming. To be honest, I am not that much interested in B2B and marketing. I am looking for good tech reports, new programming techniques… and maybe a substitute of GDC? :) In 2016 there is a whole track of programming/tech presentations so I cannot complain.
Notes from the sessions:
Rendering and Post Processing Pipeline of Bound
Michał described how the rendering process - especially the postprocessing pipeline - works in their new game Bound. I’ve never heard of the game, but I must admit it has a unique visual style and sounds like a great game/experience.
One more article about the game: blog/playstation
- They use dynamic, procedurally generated content.
- Most of the time the geometry is just boxes with simple diffuse like materials.
- In order not to lose details, the pipeline uses dynamic GI techniques: especially SSAO (SAO by McGuire, Mara)
- Since colours and sharp edges are important part of the visuals, the engine cannot show any ugly aliasing effects. They use 4x MSAA, also with temporal reprojection.
- 4 cascades for sunlight, separate shadow map for the main character.
- HDR in RGBA16 render targets, Bloom, Depth of Field effect.
- The game uses Screen space reflections. Also because of the style, developers aimed not on blurry glossy reflections, but pure mirror ones. They developed a very interesting and advanced technique that uses Hierarchical Z buffer to improve the speed of finding collisions with the geometry in screen space.
- Volumetric lighting is achieved by using Bart Wroński techniques
- The final composition is quite heavy because of using 4x MSAA, but they take advantage of FMASK texture on GCN/PS4. That gives a huge performance improvement over naive methods.
id Software’s Early Days
by John Romero (bio on wiki)
The legendary game developer has given a nice (but short) keynote about early days of game dev. I won’t go through the history - you can read it in the book Masters Of Doom: How Two Guys Created an Empire and Transformed Pop Culture or on wikipedia - Id Software.
Some interesting parts of the talk:
- Lots of good tips for game development: like
- Or another one:
- Lots of stories about weather in different US States (and why you should the research first before moving to some other part of the country), doing games 24/7, development speed. They made two games every two months!
- John Carmack invented a smooth scrolling effect that could be implemented on PC and that revolutionized the games. They could even sell engine to other companies.
- More about the effect itself: Quora: How such smooth scrolling was achieved in games like Super Mario and Commander Keen?
- Their code was super simple, C mostly.
- Wolfenstein 3D was done in 4 months + 2 more months of the final touches.
- Good tools are essential, so they invested in having the best machines they could. Even Cray workstations!
- With less then 10 people in the team they created 28 games in 5.5 years!
- That was done mostly without version control system! or at the beginning even without internet connection. Floppies everywhere!
From start to ship: Lifecycle of a game on Oculus
by Andy Borrell (@AndyBorrell), Oculus
It’s a shame to admit, but I’ve not played with any VR hardware that is out there. The presentation given me some interesting ideas and concepts behind creating games for VR platforms. For example I wasn’t aware that the movement in the game must be controlled in a really great detail. If something wrong is done, then the player will feel not comfortable and won’t enjoy the game. Andy given examples of two games:
and Lucky’s Tale:
Designers and programmers need to be aware of the camera movement problems. The best way is to actually block the camera! In AirMech you see the battleground from the top and only when your main commander moves to the edge of the map it will also teleport camera to a different place. In Lucky’s Tale camera movement is super smooth, without much vertical movement and without rotations.
Also there is a really interesting problem of proper placement of audio sources. In VR we need to get great immersive experience. Human brain is aware, even subconsciously about all the sound effects (positioning, audio transfer delays, …) so they have to be recreated in the game.
The tools used in the development of Life Is Strange
by Sam Hocevar (@samhocevar) Dontnod Entertainment
Sam described how a relatively small gamedev studio with limited resources could achieve success with their game Life is Strange
- The key is the automation
- Automate as much as possible, invest in creating internal tools
- Use open source/external tools if possible (to limit maintenance)
- Nimp (internal) tool used heavily to automate build process, unify syntax between different versions of compilers, platforms. Additional wrapper on top of devenv from Visual Studio.
- Buildbot (external) for build.
- The company uses a lot of data analysis (datamining) on logs from the builds. They can find some compilation problem, bugs, warnings.
- Since the tool is developed for more than 13 years not the knowledge/documentation is very well known and it’s easy to fix any problems with it.
Parkour. How to improve the freedom of movemet in FPP games in 20 simple steps.
by Bartosz Kulon from Techland
Moving in a city area is not an easy task, especially if zombies try to kill you all the time! Bartosz described some problems with creating realistic and fun experience for parkour style of movement in the game.
- Ledges that the player could use to climb couldn't be placed manually. There were far too many objects in the game world. They used dynamic approach and each potential spot is found procedurally.
- Some players jumped too early, some too late. In order to create a smooth experience the team needed to correct that.
- Tweaks for the animation system and the proper display of hands/body position was needed as well. Hands coudn’t just grab the air - they have to be really on the geometry.
- Some people could feel a bit sick after playing early prototypes. The developers focused on solving potential propblems with motion sickness (like giving a dot in the centre of the screen, adjusting camera movement so that it does not jump back and others)
- When running through narrow places, or small obstacles the main character automatically jomps or manuver so that you don’t end up easily on some wall.
Debugging Multiplayer Games - Lessons from Warframe
by Maciej Siniło (http://msinilo.pl/) Digital Extremes
Maciej described some of the techniques he uses to find a bug in Warframe. The game has around 23mln users, and usually 50k players online at the same time. If I am correct, they got like 7..8 crash reports evey hour!
- Updates for the game are released frequently, every week. Major patches every several weeks. Plus content.
- They own a full technology stack, so they have control over most of the parts of the process.
- Challanges: how to find a cause of the crash in such dynamic environment. We can make an analogy for debugging multithreaded code. There is a bug in one thread, but you don’t know what other threads were doing at the same time.
- Knowledge is the key: it’s probably better to log more than less. You could just write some tools to reject/filter the data. It’s a problem when you have to little data.
- Maciej mentioned a really good book:
The Pentium Chronicles: The People, Passion, and Politics Behind Intel’s Landmark Chips . With one quote about using the data not your intuition.
- They usually focus on X top frequent crashes.
- Assembly knowledge, minidumps, custom exception handlers are they key things.
- If you want to know what other side (client, server, threads) were doing sometimes you can make them to sent some packets of data from the crash handler.
- Sometimes you can even find a compiler bug, like rot16 bug in VS 2010.
- If you have too much time (or if it’s a Christmas time) you can for instance binary patch a third party library that causes a problem! :)
Gameplay Programming in a Rich and Immersive Open World - The Assassin’s Creed Syndicate Experience
by Bartłomiej Waszak (@bartwaszak), Ubisoft Quebec
Bartłomiej make a really nice introduction to techniques his company used to create open world in Assassin’s Creed. The presentation focused on horses, carriages and trains! He covered object model, wehicles, data driven approach, state machines, animation system, event handling and multithreading.
- The world: London from the 19th Century.
- Object model consist of entities and attached components (AI, physics, visual). Each object contains some sort of a state machine.
- The world contains world components like Railway system
- Usually one object means one entity, but for carriages they needed to use something else: at least three entities (main body, tractor, at least one horse). That messed up in the code a bit.
- Train are modelled with a custom physics solution. Every wagon is an entity. The tracks are designed with bazier curves and with some special event points on it.
- Thanks to a smart creation of carriage pool, with just 20 unique cars they can make an illusion of simulating 512 different objects!
- Artists have a lots of controls and flexibility thanks to using curves in the editor for controlling all the dynamic properties.
- Events are send directly to other objects or using observer/channel system. An object sends a message to the channel. Everyone interested in a channel need to subscribe and fetch messages from it.
- Entities are updated in parallel but with some exceptions. Objects that are on the same hierarchy (like a carriage) are updated linearly (one by another) on the same thread, This saves a lot of problems with the syncing.
- At the end Barłomiej showed a use case that crosses through all the mentioned systems: how to decouple two wagons! What’s the process from getting the user input, through applying animation, playing sounds, effects and do the physics.
Diversity of Ideas,
by Michał Staniszewski (@bonzajplc), Plastic
I was a bit tired at the end of the day. It was a pleasure to get such a powerful and refreshing presentation at the end!
Michał basically portrayed a system for inventing new ideas. It was sort of a philosophical, abstract mathematical presentation. As a base he told that most of the games currently seems to be recreating the same ideas over and over, so how to look for something else?
- We should take from other media: theater, cinema, books.
- What if ideas were just numbers?
- One core idea is a prime number: a dog, a meadow, a cat…
- You can multiply those ideas: a dog x a desert = a dog on a desert
- So any number (like 120) can be factorized to find the basic ideas (the prime numbers) that is composed of.
- Some ideas are magnified (2^n)
- We can invert ideas - inverse of a desert is a jungle for example.
- We can shift ideas.
- Like Room movie, 2015. It’s a deep, hard topic, but shown mostly from the eyes of the child.
- There are also some irrationals numbers: glitch rendering, goat simulator.
- There are also transcendental numbers: universal ideas like love, sadness, happiness.
- We can use operators on those numbers and create some new ideas. The question is will they be fun? Maybe we can create AI that would run through all the combinations and just generate games? We could just wait and verify results: if the game is fun or not.
- Michał believes there might be a new kind of audience for games: game developers itself. It’s not a little audience, there are for example 5 mln registered Unity developers (even if only 2% of them are the real people that makes still a decent number).
I am looking forward to the next day!