Game Dev
I will document my journey learning game development on this page. My main interest is to make VR games, but in order to establish solid foundations, I want to make simple games of various genres first, to practice specific skills.
First tests and a VR island
First, I wanted to see if it was even technically possible to develop VR games for my Meta Quest 2 on my Apple M1 laptop, because there were several potential single points of failures in that setup. I wanted to use 3D programs that support Apple Silicon, because game dev is resource intensive and I'm on a laptop. Apple Silicon is only supported in pre-release or beta versions of Unity and Visual Studio, and is not supported for Unreal Engine (it works under Rosetta 2 though). And the Oculus app also can't be installed on Mac. It took a few days of configuration but I finally got functioning environments, for both Unreal Engine and Unity.
I know that Blender will be useful to learn at some point to create models, but I decided to focus on learning Unity or Unreal Engine first and use pre-made assets instead of making my own, since I am more interested in game development than 3D modeling at the moment.
Then I set up Unreal Engine because unlike Unity, the starting templates already provide some basic functionality out-of-the-box, like making a first or third-person game, and a VR template as well. I played around with the VR template, made some basic shapes, basic materials, and added basic logic using Blueprints to my scenes, to for instance play a sound when I hit a djembe in VR, program some simple AI to make a character move randomly, or add the ability to jump. I tried setting up a C++ environment with VS Code but it was not working well, so I haven't tried coding in C++.
I then tried Unity because it supports natively Apple M1 CPUs, and because it seems like there is a better official Oculus support. For instance Oculus provides scenes with hand models, and where you can grab items. It seems like it would have been a lot of work to get that working myself in Unreal Engine. Setting up Visual Studio was pretty straightforward and C# seems pretty intuitive so far with my JavaScript programming background.
In Unreal Engine, I created an island with a simple house, a dog, a radio that plays Bob Marley songs, and djembes that play a sound when you hit them. Then, in Unity, I made a similar island that includes the hands and physics management provided by Oculus.
I wouldn't really call these functioning "games", but creating a world and walking around inside it was fascinating and exhilarating.
Time spent: 7 days
From my very little hands-on experience, I like both Unity and Unreal Engine, but I think Unity is a better choice in my current situation (to develop VR games for Quest 2, and 2D games on an M1 Mac). So I will use Unity to ramp up my game dev skills.
Game 1: Sonic-like platformer
I created a basic 2D platformer with enemies that the player can shoot, coins to collect, and an end goal. It has a parallax effect, a static UI to display the number of coins, and a start screen. The character has different sprites depending on if he is idle or jumping. The player can die by touching enemies or falling off the platforms.
Time spent: 2.5 days
Game 2: Top-down city management game
I created a static-view 3D strategy game where you have to construct buildings and manage resources such as food, people, and energy to generate money. The goal is to reach 1000 money to win as fast as possible (my record is 44 days).
Time spent: 1 day
Game 3: Tower defense
I returned to my roots of using the web platform and created a tower defense game that works on desktop, mobile, and even VR thanks to WebXR.
Time spent: 15 days
Game 4: Mini Mana
MiniMana.io is my first real game. It's a multiplayer RPG built with React Three Fiber and uWebSockets. Creating this game is a dream come true. It combines the mechanics of some of my favorite games and has been an incredible learning experience. It was released in July 2023. Go give it a try!
Time spent: 5 months