The CPU in your machine holds probably 2-8x more computing power than you think, but the ubiquitous programming models we use make it difficult to access that potential. And while data-oriented programming and the Entity-Component-System pattern have been discussed time and time again, we still struggle with adoption. They seem like this weird, low-level thing that only AAA studios bother doing. This talk hopes to show that given the right programming model, viewing your program as a data transformation is not only easy, but - most importantly - fun, and isn’t limited to just AAA games and the Unity Burst compiler.
On the example of Unity3D, we will discuss the basics of server and client architecture, implementation of TCP and UDP communication and we will answer the question of why to write your own networking and explain the importance of the chunks.
All this will be summarized by the server overview in the context of multithreaded architecture also in the context of the Entity Component System in Unity3D.
Procedural rendering at big scale. I will show how to implement a system to procedurally render a galaxy of stars, as well its planets and moons. You will learn about various types of problems that are encountered during rendering such big worlds, we will deal with troubles related to precision of 3D calculations. I will present numerous techniques used to generate needed data, such as value noise and fractal brownian noise, as well how to use them to generate unique set of data required by the application. All of that working on Vulkan and GLSL.
Unity engine in the last few months introduced many changes encouraging multithreading and support for more complex game mechanics.
During this lecture, some new solutions will be presented, connected mostly with Entity Component System, Job System, Raycast Command and auxiliary tools.