Welcome to Lazy Squirrel Labs’ blog. We are a studio focused on bringing years of professional (Unity) game development experience to projects with great potential.
On this blog, you will find posts we wrote about video game development, Unity, C#, and software development in general. The posts are listed below, from most to least recent. You can also visit our archive to see them categorized by subject.
If you would like to get in touch, check our contact information on our main website.
Recent posts
-
Creating and using a native iOS/iPadOS (Swift) library in Unity
Unity is a great tool to develop cross-platform games and interactive applications, but it lacks some functionality that is often delivered by native platform libraries. A good example of that is iOS/iPadOS functionality that is only available in native libraries... -
Tabs vs. spaces: the discussion that should not exist
I am a firm believer that the “tabs vs. spaces” discussion regarding code indentation should not even exist… because tabs is the only sane answer. And I don’t mean to joke with that punchline—I truly believe that tabs are objectively... -
Generating an icosphere with code
In this article, we will walk through the process of generating icospheres (spheres based on a regular icosahedron) with code. I started looking into icospheres when working on Terraced Terrain Generator (TTG) version 2, which added support for spherical terrains.... -
Adding more detail to Terraced Terrain Generator using Perlin noise octaves
This blog post details how the Perlin noise algorithm was reused to add more detail to terraced terrains generated by Terraced Terrain Generator (TTG). It is part of a series that documents the development process of TTG, containing the following... -
Adding custom terrace heights to Terraced Terrain Generator
This blog post details how custom terrace heights were added to Terraced Terrain Generator (TTG). It is part of a series that documents the development process of TTG, containing the following posts: Developing a Terraced Terrain Generator Terraced Terrain Generator... -
Asynchronous programming in Unity: Coroutines vs. async/await
This article aims to contrast two different strategies for writing asynchronous C# code in Unity projects: Unity’s Coroutines and C#’s asynchronous programming model via async/await/Task. We start by quickly introducing both concepts. Following, we discuss how game developers have a... -
Terraced Terrain Generator performance improvements
This post details the process of improving the performance of Terraced Terrain Generator (TTG), a tool developed to procedurally generate terraced terrains in Unity. For more info about TTG, check its website, and repository. This post is part of a... -
Developing a Terraced Terrain Generator
In this blog post I will discuss some technical details and give a glimpse of Terraced Terrain Generator’s (TTG) development process. TTG is a free Unity tool for procedural generation of terraced terrain meshes. It’s open source and it’s on... -
[Postmortem] Parker - the game
In this article, I discuss and analyze the development of my last project as a Game Developer at Fantazm: Parker - the Game, an online multiplayer turn-based team strategy game. After a quick introduction of the project, its biggest challenges... -
Game testing made easier: decoupling code
Most (or close to none) of the game projects I’ve worked in the past implemented automated tests. I was aware of the benefits this type of testing could bring, but I was also knew that implementing them could be quite... -
Finally, a proper Game Design Document (whatever that means)
A Game Design Document (GDD) is a famous and popular tool used by game developers to… well, to document the design of a game. Even though some say it’s an essential part of the development process, most of the projects... -
How Windows Mixed Reality’s poor reliability forced a kiosk game switch to HTC VIVE
In a previous article, I described the development of VoedingscentrumVR, an educational, kiosk, VR game for Windows Mixed Reality. Although at the time of writing it seemed like it was the end of that game’s development, some surprises crossed our... -
When software internationalization isn’t just about UI: a tale of how a parsing error crashed our game
Whenever we talk about adapting a game to different countries, the first thing we often think of is localization, but we sometimes neglect its sibling: internationalization. Wait, what’s the difference again? Internationalization is the process of designing and developing your... -
Null check and equality in Unity
In some programming languages – like C# – it is a common practice to use comparison operators and functions to check for null references. However, when programming in Unity, there are some particularities to keep in mind that the usual... -
Unity’s scripting duality and object destruction
The Unity engine provides users with tools and abstractions that ease its usage and hide its complexity. Although we often take these commodities for granted and completely forget they exist, we often face a situation in which they become apparent,... -
C#’s finalizer/destructor trap
Let’s talk about C#’s finalizers (also called destructors in C#) and how a common mistake when using them might lead to unwanted behavior, especially in applications made with the Unity engine. Finalizers A finalizer is a method that is called... -
[Postmortem] Developing an educational, kiosk, VR game for Windows Mixed Reality
In this article I analyze the development Voedingscentrum VR, an educational, kiosk-style and Virtual Reality game I helped to develop at Fantazm from October 2018 until April 2019. After a quick introduction about the project, the biggest problems that surfaced... -
FP: Currying vs. partial application
While learning Functional Programming, there were two concepts that for me, were really hard set apart: currying and partial application. One day, I finally decided I would dig deeper and learn what each one represents and more importantly, why I... -
Android 6 (Marshmallow) permissions and Unity
While working on Overclock, our team faced a new problem with Android 6 (Marshmallow): all permissions were requested when the app launches the first time instead of when the user downloads the app. Not only that, but the permissions are... -
Unity serialization part 3: Scriptable Objects
This post is part of a series about Unity serialization. Click here for part 1: how it works and examples or click here for part 2: defining a serializable type. On the last article, we learnt how we can define... -
Unity serialization part 2: Defining a Serializable type
This post is part of a series about Unity serialization. Click here for part 1: how it works and examples. On the last article, we discussed about serialization concepts and how Unity implements it, learning which types can be serialized... -
Unity serialization part 1: How it works and examples
This post is part of a series about Unity serialization. On this series of articles we will discuss a topic that is extremely important to Unity development: serialization. This subject may be a bit cloudy for beginners, but understanding it... -
How does Unity scripting work under the hood?
On the previous post we learnt how Unity exports to so many platforms. Now let’s talk about a subject that can sound unnecessary at first, but helped (at least me) a lot on the process of understanding how Unity works.... -
How does Unity export to so many platforms?
So for my first article I picked a not so simple theme, but one that has been extremely intriguing to me lately. This week a friend, during a talk about game development and Unity, asked me: “How does Unity export...