Turbo Makes Games YouTube Channel
Johnny began publishing to the Turbo Makes Games YouTube channel in April 2017. It began as a way to document his progress developing video games as a solo, independent developer. Over the years, Johnny has now created over 350 videos for the channel on topics related to game development.
The channel has grown from its Devlog roots, and Johnny now covers more topics to help game developers sharpen their skills and stay up to date on the latest game dev news and technologies.
In early 2020, Johnny began publishing videos about Unity’s Data Oriented Technology Stack (DOTS) and their Entity Component System (ECS). With over 70 videos published on these topics, the Turbo Makes Games YouTube channel has the largest amount of video content covering Unity DOTS on the internet – including Unity itself!
Johnny’s DOTS videos teach the theory behind data-oriented design and showcase practical implementations using Unity ECS. He has also done multiple livestreams with developers who are working on games made with Unity DOTS to showcase the power of the technologies and give other developers a sense of real-world game development with DOTS.
Johnny has also appeared as a guest on other channels such as Infallible Code, Awesome Tuts, and The Game Dev Guru. He has also been a guest on multiple episodes of Jason Weimann’s weekly livestream: The Game Dev Show.
During GDC 2022, Johnny was a co-host for a DOTS Q&A Panel broadcasted to Unity’s official Twitch channel. Guests included Laurent Gibert, Lead Product Manager of Unity DOTS, Lauren Frazier, CTO of Ramen VR creators of the VR MMO Zenith The Last City, and Jonas De Maeseneer, Software Engineer at Electric Square, developers of Detonation Racing. The panel discussion was focused on the current state of using DOTS in production and Unity’s plans to improve development experience going forward.
Much of the tutorial content Johnny creates is focused on one specific topic. However, he has also done some longer form ones that display the full process of creating a game from scratch. Notably he created a 4-hour tutorial showcasing how to develop a top-down, twin-stick shooter using Unity from start to end.
He also created a 1-hour long tutorial where he remade the classic Unity Roll-A-Ball tutorial using Unity DOTS and ECS. The video has served as a great primer for many developers to introduce them into the concepts of ECS and how to think in a data-oriented manner.
Note: parts of the DOTS Roll-A-Ball tutorial are outdated by the current ECS API. Johnny will be publishing an updated version of the video after the next version of ECS is available in Q1 2022. For now, developers can reference this post that details the changes in the API: https://www.tmg.dev/tuts/roll-a-ball-entities-0-17/
Turbo's Game of Life
One of the projects Johnny created for the Turbo Makes Games YouTube channel is Turbo’s Game of Life. This project is a recreation of Conway’s Game of Life, developed using Unity DOTS and ECS.
Conway’s Game of Life is played out on an infinitely large grid of cells, each needing to reference neighboring cells to determine if it will be birthed, survive, or die. Each so called “generation” has each cell reference its eight neighboring cells, so as the cell count increases, the number of checks to other cells greatly increases.
Unity’s Data Oriented Technology Stack gives developers highly efficient tools to process large numbers of entities. As such the Game of Life is a great example of a practical project that can be used to push DOTS to its limits. The simple mechanics of the Game of Life also make it a great candidate to quickly test different ECS patterns, to get a better understanding of when and why certain implementations work best for certain situations.
Above is a video showcasing the development process of Turbo’s Game of Life, created with Unity ECS. A detailed writeup documenting Johnny’s development process, challenges he faced, what he learned, and plans for the next version of this project can be found on the Unity DOTS forums: https://forum.unity.com/threads/devlog-turbos-game-of-life.1194421/
Heroes League - Woogi Global
Heroes League is an educational game developed by Woogi Global targeting devices children have access to for learning, such as mobile phones and low-spec Chromebooks. Johnny was brought on as a technical contractor to identify and implement performance improvements in the game.
Before Johnny got involved in the project, the game had been in development for multiple years and had many existing and intertwined systems. Johnny was tasked with identifying areas in the project where performance could be improved and then implementing those changes without hindering the existing gameplay.
Johnny was able to implement systems that distributed work over multiple frames, executed work asynchronously, and reduced garbage collection allocations. These changes had noticeable performance improvements to the game, allowing it to run at a higher, steady framerate on the target low-end devices.
RayWenderlich.com - Tutorial Article Author
In 2021 Johnny joined the Unity team at RayWenderlich.com as a tutorial author and has published two 4,000-word tutorial articles for the site. RayWenderlich.com is a popular site for written development tutorials on various topics for several platforms.
Johnny’s first article, Introduction to TextMesh Pro in Unity, shows developers how they can make beautiful looking text very easily using TextMesh Pro. The article also covers some theory as to why TextMesh Pro is much more performant than standard Unity Text. The sample project he developed for this article is a spooky text-based adventure game, where the text is stylized to fit what is happening in the story. You can read the full article here: https://www.raywenderlich.com/22175776-introduction-to-textmesh-pro-in-unity
His second article, Introduction to Asynchronous Programming in Unity, is an intermediate level tutorial that discusses potential issues with synchronous code and when to use code that executes asynchronously. The sample project he developed for the article is a city-builder game where roads and houses get built using asynchronous code using the async and await keywords in C#. The article also features a comparison between asynchronous programming and Unity coroutines. The full article can be found here: https://www.raywenderlich.com/26799311-introduction-to-asynchronous-programming-in-unity
Johnny is an avid participant in game jams. His favorite is the Ludum Dare Compo jam where participants must make the entire game (art, code, etc.) themselves during a 48-hour window. Johnny appreciates the challenge of this jam and how it forces him to complete projects in short periods of time. Each Ludum Dare event (now held twice a year) draws together thousands of developers from around the world, so it’s also a great way for him to get a lot of feedback on the jam games.
One thing Johnny prides himself on is having a funny or unique take on the themes presented for the gam jams. For instance, in one Ludum Dare event, the theme was “Running out of Space” – many people made games where the room or play area of the game got filled up over time, making the game more challenging; however, Johnny decided to take a literal approach on the theme and created a game where you control a player who is literally trying to run to the edge of the universe to effectively “run out of space.” He later ported that game to mobile and published it on the Google Play Store: https://play.google.com/store/apps/details?id=com.homecookedgames.edgerunner
As Johnny has been working more with Unity DOTS, the past few game jams he has participated in have been made using Unity DOTS and ECS. This has proven to be particularly challenging as Unity ECS is still an experimental preview package and not yet thoroughly documented. Nonetheless, he has still been able to create a few ECS games for game jams that taught him a ton about practical applications for Unity ECS. Check out the videos below for some references to these projects and hear more from Johnny about some of the specific challenges he faced, how he overcame them, and what he learned along the way. Enjoy!