Browsed by
Category: Programming

Scene editing and ECS conversion

Scene editing and ECS conversion

When working with the DOTS framework and implementation of ECS, you’ll quickly realize that there is currently very little in the way of scene editing. Entities might render, but you can’t interact with them in the scene editor. The workaround for this problem allows for the conversion of a scene, into entities. However, any traditionally written code (using monobehaviour, that is) will be lost in translation. This article covers how you should write your code in ECS and attach it…

Read More Read More

Unity C# Job system and Burst Compiler/DOTS introduction

Unity C# Job system and Burst Compiler/DOTS introduction

The Jobs System in Unity allows for the execution of code across multiple cores at once, significantly speeding up heavy tasks such as pathfinding and similarly repetitive logic. Additionally, when something is set to run as a job, Unity supports use of the Burst Compiler, which will compile that bit of code into high-performance assembly code. Source material: https://www.youtube.com/watch?v=C56bbgtPr_w Reading instructions: This document is a follow-up to the previous article on ECS, as part of an introduction to working with…

Read More Read More

Unity ECS / DOTS introduction

Unity ECS / DOTS introduction

This article is an attempt to introduce Unity’s new Entity Component System (ECS) to those who are unaware of its existence. ECS is one part of DOTS – the Data Oriented Technology Stack, which also contains the C# Job System and the Burst Compiler. ECS can be described in two ways; ridiculous performance increase and/or compact size. It is a new way to code, utilizing all of the cores available. The other two components of DOTS allow for similar performance…

Read More Read More

Analyzing telemetry

Analyzing telemetry

I previously covered how to connect your Unity client to a Google Drive spreadsheet and upload your telemetry data. Which is cool but not very useful if we can’t retrieve that data. One solution is to go into your Drive and download the spreadsheet manually, but that’s not really awesome. What we want is a client which not only downloads the data directly, but formats it and does cool telemetry-analytical-things to it! Downloading the data: Luckily, accessing the data stored…

Read More Read More

Collecting telemetry

Collecting telemetry

I recently wrote about Subnautica’s development process, and how they handled player telemetry to streamline the development process. So I figured now would be the perfect time to show you how easy it is to actually send and store data – in this case object positioning – somewhere in a remote database. “But Dave, I don’t have a private database for hosting this kind of information!” – Fear not, for I have the perfect solution for you. We are going…

Read More Read More

Vertex and fragment shaders

Vertex and fragment shaders

Through my previous articles on shaders, I have worked exclusively with Surface functions to handle the shader logic. However, this function only handles certain aspects of rendering. What happens when you run your compiler, is that the surface function gets turned into what are called Vertex– and “per-pixel (or Fragment)”-functions. Compiling is basically like having a whole burger, then dropping it on the ground, witnessing its transformation into buns and patties before your very eyes. But what does vertex and…

Read More Read More

Shaders and lighting models

Shaders and lighting models

As I covered in the previous article about shader anatomy, there are a few different lighting models to choose from, if you are not creating your own. Depending on the model, you will have access to different properties in your surface function. But what exactly is a lighting model, and how can we use them for cool stuff? Because that’s really what we’re here for, all the cool beans. A lighting model is really just an algorithm, which looks at…

Read More Read More

Introduction to shaders

Introduction to shaders

In a previous article, I talked about cel shaders and how to make your own. In this article I will walk you through the basics for shaders in general, for those of you who want a deeper understanding and explore the subject on your own. However, the focus of the article will be on understanding shaders, more so than writing them ourselves. The writing part will be covered in later articles. Anatomy: The best place to start is with the…

Read More Read More

Weight-based randomization

Weight-based randomization

What do games using loot drops and games using AI driven by behavioural parameters such as sleep, hunger and happiness have in common? At first glance, not much. But it is very likely that both of them deploy the same algorithm. Let’s start by example: There’s plenty of games using loot drops today. It’s an easy way to implement a form of replayability in a game, where character progression is tied to the gear they are wearing. By not guaranteeing…

Read More Read More

AI sight and memory – finished!

AI sight and memory – finished!

It took longer than anticipated, but the prototype described in the previous post has been coded and documented! There were a few changes and additions along the way, but that just goes to show how nothing is ever really final, until you sit down and produce it. Most notably was the addition of a new class called TagClass, which is used to verify if an observed object should be memorized, and how the memory should be flagged. Before I outline…

Read More Read More