Game Dev Digest — Issue #27 - OpenUPM, UVs, Reducing Memory, DOTS, Sounds, and ML
Tags: gamedev, unity3d, csharp, news
Published: 2020-01-17 11:03:36

###Issue #27 - OpenUPM, UVs, Reducing Memory, DOTS, Sounds, and ML

![Issue #27 - OpenUPM, UVs, Reducing Memory, DOTS, Sounds, and ML](https://gamedevdigest.com/assets/social-posts/issue-27.png)

This week I discovered OpenUPM, you can check out the new Open Source Unity Package Manager below. I'm excited to discover new packages while making managing existing ones in my project better in the future.

Another great post by Rubén Torres Bonet on improving the performance of your game, if you are having memory issues his latest post should help.

Every week there seems to be more great shader related posts. If you read last week's newsletter with a great looking Cel-shading implementation, definitely follow up with the Cel-shading post from this week.

A bunch more great videos, assets and tips as usual too, so let's get on with it...

---

[**OpenUPM**](https://openupm.com/)  - Open Source Unity Package Registry (OpenUPM) is a service for hosting and building open source UPM (Unity Package Manager) packages. It's composed of two parts: a managed UPM registry and automatic build pipelines. The intention is to create an universal platform to discover, share and distribute open source UPM packages.
[_OpenUPM_](https://openupm.com/)

[**Distributing Svelto through OpenUPM**](http://www.sebaslab.com/distributing-svelto-through-openupm/)  - The Unity Package Manager is a good effort from Unity to distribute project dependencies similarly to what NPM does. UPM is still in its infancy and some problems are to be addressed.
[_Sebas's Lab_](http://www.sebaslab.com/distributing-svelto-through-openupm/)

[**Unity Memory Management: Scale Your Game Without Decreasing Quality**](https://thegamedev.guru/unity-performance/memory-management-scale-your-game/)  - Years ago, I went to the asset store and, credit card at hand, I got greedy. I couldn't stop buying good-looking assets at highly discounted price, so I kept stacking them in the cart. More content would be a great fit for my game, I thought. Only that I didn't really have solid foundations for proper Unity memory management techniques. And so I paid the price for my ignorance.
[_Rubén Torres Bonet_](https://thegamedev.guru/unity-performance/memory-management-scale-your-game/)

[**Deallocating Temp Memory: Part 3**](https://jacksondunstan.com/articles/5458)  - Continuing the series, today we look specifically at “overflow” allocations in the Temp allocator. We’ve seen that there’s no need to explicitly deallocate Temp memory because it all gets cleared every frame, but do we need to deallocate “overflow” allocations that didn’t fit inside the block of automatically-cleared memory? Today we’ll find out!
[_JacksonDunstan.com_](https://jacksondunstan.com/articles/5458)

[**Guide: Sci-Fi Stair Generator in Houdini**](https://80.lv/articles/006sdf-guide-sci-fi-stair-generator-in-houdini/)  - Another detailed guide from SideFX and Simon Verstraete. The tutorial will show you how to create a procedural staircase asset for sci-fi levels in Unity.
[_80 Level_](https://80.lv/articles/006sdf-guide-sci-fi-stair-generator-in-houdini/)

[**Simple Water Shader**](https://alexanderameye.github.io/simple-water)  - I created a basic stylized water shader, free to use. The shader is simple, but effective in creating an interesting stylized look.
[_Alexander Ameye_](https://alexanderameye.github.io/simple-water)

[**Cel-shading: some tricks that you might not know about**](https://torchinsky.me/cel-shading/)  - In this article I will write Unity cel-shader (also known as toon-shader) from scratch. I will show and explain some tricks that are quite useful, but not so many people know about them.
[_Andrey Torchinsky_](https://torchinsky.me/cel-shading/)

[**Quick Uvs for lazy people like me! **](https://twitter.com/danielsantalla/status/1216178256120029184)  - #under60sec tutorial. Here is an easy way to texture without the pain of unwrapping. Hope this helps!
[_Daniel Santalla_](https://twitter.com/danielsantalla/status/1216178256120029184)

[**UV-Based Nodes**](https://cyangamedev.wordpress.com/2020/01/14/uv-based-nodes/)  - This post includes an introduction to using the Sample Texture 2D node and UV-based nodes such as Tiling And Offset, Rotate, Flipbook and Polar Coordinates.
[_Cyan_](https://cyangamedev.wordpress.com/2020/01/14/uv-based-nodes/)

[**MaterialPropertyBlock**](https://twitter.com/darkstornGaming/status/1216123718092697610)  - Did you know with a simple Unity feature called MaterialPropertyBlock, you can change the properties of the same material for different objects at runtime? No more using tons of material instance, all eating memory. 
[_Ahmet Bugra Çetinel_](https://twitter.com/darkstornGaming/status/1216123718092697610)

[**Otto - Populate your public variables with a single click!**](https://bitbucket.org/snippets/samgates/GrorxX)  - Otto - Auto populate your mono behaviour public fields. Tired of dragging + dropping a bunch of assets in the inspector? Name them correctly and you won't have to!
[_Sam Gates_](https://twitter.com/Turmolt/status/1216818449659416579)

[**SmoothGameCameraMovement.cs**](https://gist.github.com/IRCSS/f4d4a274e7ac71dcaebef63bbe717a31)  - I was unhappy with how jiggly the camera movement was in the fog recordings. So went and reworked my camera movement to have filtering. It moves the camera in game view similar to scene view plus filtering. 
[_Shahriar Shahrabi_](https://twitter.com/IRCSS/status/1217420495328555010)

[**Launch the best game possible with these expert tips**](https://create.unity3d.com/nine-ways-to-optimize-game-development)  - Unexpected issues can plague a game’s development from start to finish. In this guide, we’ve collected advice from Unity’s expert team of support engineers so you can avoid many of the common pitfalls they see everyday. As part of the Integrated Success Services team, they’ve partnered with developers all across the industry to help ship their games successfully. Free e-book (requires email signup).
[_Unity_](https://create.unity3d.com/nine-ways-to-optimize-game-development)

[**Unity Releases**](https://unity3d.com/unity/beta/2019.3.0f5)  - Unity versions [Unity 2019.3.0 Release Candidate 5](https://unity3d.com/unity/beta/2019.3.0f5) and [2020.1.0 Alpha 19](https://unity3d.com/unity/alpha/2020.1.0a19) have been released.
[_Unity_](https://unity3d.com/unity/beta/2019.3.0f5)

## Videos

[![Kart Racing Game with Machine Learning in Unity! (Tutorial)](https://gamedevdigest.com/assets/images/08f70ba8a314d3aff6dad75388cf2e43.png)](https://www.youtube.com/watch?v=i0Vt7l3XrIU)
[**Kart Racing Game with Machine Learning in Unity! (Tutorial)**](https://www.youtube.com/watch?v=i0Vt7l3XrIU)  - A Kart Racing Game with Machine Learning Agents, or ML Agents in Unity - what does it look like? Let's take a look!
[_Unity_](https://www.youtube.com/watch?v=i0Vt7l3XrIU)

[**Dynamic Depth of Field in Unity - Game Dev Sandbox**](https://www.youtube.com/watch?v=7od2j4s85ww)  - This is the first of a new series where I explore and play around with experimental design and coding ideas.
[_Game Dev Guide_](https://www.youtube.com/watch?v=7od2j4s85ww)

[**How to make AWESOME Scene Transitions in Unity!**](https://www.youtube.com/watch?v=CE9VOZivb3I)  - Transitions in Unity are easy to learn - let's have a look!
[_Brackeys_](https://www.youtube.com/watch?v=CE9VOZivb3I)

[**Procedural Generation Basics: Randomize Scale (Creating Random Rocks Tutorial)**](https://www.youtube.com/watch?v=_n2Q-W1klfg&amp;feature=youtu.be)  - In this video we look at a basic technique of procedural generation in Unity3D using C#: randomizing the scale of an object. In our example project we randomize the scale, rotation and placement of a single rock to make some randomly generated rocky islands.
[_Matt MirrorFish_](https://www.youtube.com/watch?v=_n2Q-W1klfg&amp;feature=youtu.be)

[**Improve every SOUND EFFECT with this ONE TRICK**](https://www.youtube.com/watch?v=nYYlbI3PANs&amp;feature=youtu.be)  - In this unity audio tutorial learn the most important trick to get the most usage out of each of your sound effects. Making sound effects is HARD, and while individual sounds are inexpensive, they can add up fast. It's vital, especially for indie devs, to make sure you get the most out of a single sound, and one easy way to do that is to randomize pitch and volume values when playing them!
[_BMo_](https://www.youtube.com/watch?v=nYYlbI3PANs&amp;feature=youtu.be)

[**2D LIGHTS ARE AWESOME - Unity Tutorial**](https://www.youtube.com/watch?v=ZfJmfkjT00A&amp;feature=youtu.be)  - Introduction to 2D Lights. So 2D lights have been around for a while but I recently gave it a try and they are awesome! Decided to create a simple tutorial and show you the capabilities.
[_Gabriel Aguiar Prod._](https://www.youtube.com/watch?v=ZfJmfkjT00A&amp;feature=youtu.be)

[**Dynamic Buffers in Unity DOTS (Array, List)**](https://www.youtube.com/watch?v=XC84bc95heI)  - Let's learn about Dynamic Buffers so we can store multiple values inside our Unity DOTS ECS Components. (Array, List).
[_Code Monkey_](https://www.youtube.com/watch?v=XC84bc95heI)

[**Unity DOTS Physics - Handling Collisions - ECS**](https://www.youtube.com/watch?v=68sUTX7rQiA&amp;feature=emb_title)  - Dapper Dino
[_ProTonTech yt_](https://www.youtube.com/watch?v=f-ztZVj9UhM&amp;feature=emb_title)

[**Unity - 2 Dimensional Top Down Movement Tutorial (NO x1.4 speed when moving diagonally)**](https://www.youtube.com/watch?v=f-ztZVj9UhM&amp;feature=emb_title)  - I see everyone using this piece of code: transform.position += new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0); BUT IT'S WRONG.
[_ProTonTech yt_](https://www.youtube.com/watch?v=f-ztZVj9UhM&amp;feature=emb_title)

[**[QUICK TUTORIAL] Changing Gravity Direction in Unity**](https://www.youtube.com/watch?v=KV8wNSo91bM&amp;feature=youtu.be)  - Quick one minute tutorial on how to Change Gravity Direction in Unity3d . Works for both 2D and 3D games.
[_Basement Experiments_](https://twitter.com/gamesbyBAE/status/1216979972264345601)

## Assets

[![More Effective Coroutines [PRO]](https://gamedevdigest.com/assets/images/96905f1d6d1f15993f24ab6e947fab39.png)](https://assetstore.unity.com/packages/tools/animation/more-effective-coroutines-pro-68480?aid=1011l8NVc)
[**More Effective Coroutines [PRO]**](https://assetstore.unity.com/packages/tools/animation/more-effective-coroutines-pro-68480?aid=1011l8NVc)  - More Effective Coroutines (MEC) is an improved implementation of coroutines.  

When you use Unity's built-in default coroutines you will have to be very careful about how you use them or else they will allocate memory that the garbage collector later has to clean up. This can cause your app to randomly skip frames. MEC solves that issue for coroutines, while also making coroutines more powerful by running about twice as fast as Unity's default coroutines do and providing you with a host of new options that Unity's default coroutines don't have.  

Switching between MEC coroutines and Unity's default coroutines is really easy. They can even be used side by side in the same project. Advantages of MEC (both free and pro):  
- MEC doesn't require that your class inherit from MonoBehavior in order to run a coroutine. 
- Coroutines can be "tagged" with a string when created, allowing you to kill or pause coroutines individually or as a group. 
- MEC contains no pre-compiled DLLs, which makes debugging easier. 
- MEC contains useful extra segments, like SlowUpdate.  

If you love this package, there is also an add-on for using threads, [MEC Threaded](https://assetstore.unity.com/packages/tools/animation/mec-threaded-85569?aid=1011l8NVc)
[_Trinary Software_](https://assetstore.unity.com/packages/tools/animation/more-effective-coroutines-pro-68480?aid=1011l8NVc) **Affiliate**

[**Asset Store Coupon Code**](https://assetstore.unity.com/?aid=1011l8NVc)  - Through the end of January 31, 2020 (PST), new customers can save 10% off all asset store purchases. Please note, this coupon is only good on first time purchases by new customers. Use Coupon Code: 10OFF2020
[_Unity_](https://assetstore.unity.com/?aid=1011l8NVc) **Affiliate**

[**SpecularProbes**](https://github.com/zulubo/SpecularProbes)  - Bake specular highlights into Unity Reflection Probes, allowing baked lights to cast sharp specular highlights for free.
[_Zach Tsiakalis-Brown_](https://github.com/zulubo/SpecularProbes) *Open Source*

[**kPooling**](https://github.com/Kink3d/kPooling)  - kPooling is an object pooling system for Unity. It is based on a flexible generic typed API and supports creation and management of GameObject type pools by default. kPooling also comes with a simple but powerful Processor API for adding pooling support for any C# type in both runtime and Editor.
[_Matt Dean_](https://github.com/Kink3d/kPooling) *Open Source*

[**Smear FX**](https://codemanu.itch.io/smear-fx)  - Make your animations extra juicy by adding some smearing to them! Just a little touch of smear can add a lot of value to animations and makes them feel smoother. Do a jump animation, a weapon swing, item spawn, maybe a logo intro animation, the possibilities are endless!
[_CodeManu_](https://codemanu.itch.io/smear-fx)

[**Grayscale-Shaders**](https://github.com/GCodergr/Grayscale-Shaders)  - Grayscale Shader collection for Unity.
[_Dimitris Evgenidis_](https://github.com/GCodergr/Grayscale-Shaders) *Open Source*

[**SpriteSheetRenderer**](https://github.com/fabriziospadaro/SpriteSheetRenderer)  - A powerful Unity ECS system to render massive numbers of animated sprites using DynamicBuffers and ComputeBuffer.
[_Fabrizio Spadaro_](https://github.com/fabriziospadaro/SpriteSheetRenderer) *Open Source*

## Spotlight

[![Midnight Streets](https://gamedevdigest.com/assets/images/dba3de9ccb4825c9afb50538990a3140.png)](https://www.youtube.com/watch?v=uxP_v9Sslz8&amp;feature=youtu.be)
[**Midnight Streets**](https://www.youtube.com/watch?v=uxP_v9Sslz8&amp;feature=youtu.be)  - Dev Log 33 - Problem Solving to Improve Workflow [Unity Racing Game]  

In this DevLog I discuss some of the workflow challenges I've recently faced relating to implementing the traffic system into my large open world scene, and the problem solving approach I took. This eventually led to the creation of a few new tools and functions that greatly improve workflow and productivity.  

I spent the last few years prototyping and developing the core scripting systems that will be used to create the game. Much of the ground work is available on the Unity Asset Store, the package is called [Arcade Racer: Racing Game Development Kit](https://assetstore.unity.com/packages/templates/systems/arcade-racer-racing-game-development-kit-54173?aid=1011l8NVc).  

I'm currently planning to release the game for PC on Steam, it will be open-world and story-driven. It's being designed as a single-player-focused racing game. The premise is to race through the midnight streets against unexpected rivals in a fast paced story driven game. Don't get left behind..
[_TurnTheGameOn_](https://www.youtube.com/watch?v=uxP_v9Sslz8&amp;feature=youtu.be)



---

You can subscribe to the free weekly newsletter on [GameDevDigest.com](https://gamedevdigest.com)

This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.