Last year I learned about an algorithm called Hybrid A* (A star), which is what a self-driving car could use to navigate in a confined space like a parking lot. I decided to implement it in Unity, and it became very popular. I've sent the project to several PhD students from schools in US, Sweden, Japan, and Germany, who wanted to use it as well as to other people who have been interested in how to implement the Hybrid A* algorithm.
To display the search tree the algorithm is using, I used Unity's Line Renderer. It turned out that it was those line renderers that had the biggest performance impact on the final product, and I used techniques like object pooling to try to increase the performance without much success. But a few weeks ago I found something called GL which is a low-level graphics library used by Unity. And GL has a line function called GL.LINES which is much faster than line renderers if you want to display a lot of lines! So here's a pro-tip: Use GL.LINES if you want to display a lot of lines!
With that said I think this is the final version of the self-driving car:
Update 2. A New Beginning
Ludum Dare was on this weekend. It's a competition where you are making a game in 48 or 72 hours depending on how hardcore you are. You are not winning anything except fame and honor, so when I participate in the competition I always try to learn something new or experiment with a crazy idea.
Each competition has its own theme, and the theme this competition was "One Room." My idea was to maybe not make a game, but one of those "art installations" where you are in a traditional game, but it's not a game. If you don't know what I'm talking about you should check out Dear Esther on YouTube.
My art installation is called A New Beginning, and I'm not going to spoil it here because you should experience the game because that was the point of it.
Not everyone liked the game because some players didn't have the patience to play it through. Some players are used to those fast-action games and become bored if they don't get it after the first few seconds. But some players liked it:
I survived, don't give up! This game made me feel something, stuck in a room, facing an unavoidable threat. And I tried to move everything around in despair, soon the room was a mess, and soon it was to late. The narrator caught my attention about a second chance. That is interesting!
I don't know what to think about the narrator that teaches me life. Ok, and I didn't do anything to deserve surviving, or to deserve to die. To conclude this game creates emotions, well done. Thanks for making this game!
Update 3. Learn how to optimize your Unity project
If you are making a game you need to make a fast game, especially if you are making a game for mobile phones. Something you might not first think about from a performance perspective is how much battery your game is using, and you can actually optimize the game so it's using less of your precious mobile phone's battery. All this is a bottomless pit and everything about how to actually optimize is spread out across the Internet. So to solve this problem I decided to try to collect all links in one page, and you can find the collection here: Learn how to optimize your Unity project.