darkjaslo.dev

I'm (finally) making a game! (Devlog #0)

I'm very happy to announce that I'm making a videogame!

I've thought about it for too many years now. The main roadblock I imposed myself all the time was that I didn't know enough yet. Turns out, I actually still agree with that: I wasn't ready until very recently.

This is devlog #0, so most of the information won't even be about the game. I'll talk more about decisions, issues I've had in the past and what I expect going forward. So, let's start...

Technology hell

I like to call "technology hell" to the sometimes overwhelming amount of tech stack choices you can go with when creating a videogame. There's too many videos and arguments for different engines and tools out there. I was also kind of biased because I used Unity very early for a high school project, before even actually learning how to code, and I also used Unity in university when I made a 3D videogame project, as it was the recommended choice to be able to get assistance from our teachers.

The thing is, I personally don't like Unity.

It can be nice to use for many, but I just don't like some stuff that also is at the very core of your workflow when you use Unity. Two decisive but quick examples would be:

  1. How physics and collisions work, and how little control you have over them. It's so bad I'd prefer making a separated system.
  2. C#. I really hate C# and being forced to use it hurts my soul.

So, no hate to anyone that likes Unity, but it's just not for me. There's other options, mainly the Godot and Unreal engines. Unreal isn't the best option for 2D games, and while Godot seems pretty solid, it kind of encourages you to use its scripting language. I just don't like to make one of the most important programs of my life (to date) in a language I don't really feel comfortable with. (And yes, I know there are some options to use different languages, but they aren't the intended way and there's always a price to pay).

Luckily for me this time, I've always liked how things are done (and can be done) in C++. To me it's the most expressive programming language out there and I just feel free using it. Also it's one of the few good choices for videogames, and most custom engines/games made practically from scratch have been written in C++. There's, then, one last question:

Do I want to make the whole thing?

This has always been the most important question in this matter to me. And I think I've always implicitly replied with a "yes". But there's a whole lot of downsides, such as actually knowing how to do the whole thing.

Short story

A couple years ago, I barely managed to pull off a board game from scratch. It's cool and complex, but it has no physics, and no player interaction, since players are programs that are linked in compile-time. It was a cool project that's helped me learn a lot, but it wasn't quite yet on the same level as a videogame, much less a full C++ videogame from scratch.

About a year later, I got my first internship. There, I polished my C++ skills to match what's expected in a collaborative, professional environment. This isn't just performative coding, it really helps make better stuff, even if you only work with yourself. After it ended, I just needed some experience with videogame-specific stuff, like more graphics stuff and some guidelines to program the main loop yourself.

Luckily, there was this wonderful elective course at my university called "Videogames". There, we worked on a 2D videogame from scratch and a 3D videogame using Unity. Of course, the 3D videogame resulted in a much better product, it was beautiful even (in my standards, at least). Shoutout to my partner, who's always had an excellent artistic vision. What matters most here, though, is the 2D videogame, as it did some groundwork for me. After I finished that course, I really started to think I was ready to attempt a videogame the way I wanted to.

Skip some months of great character development abroad and here we are.

Some info on the game

The game is still on the prototype phase, which is a bit longer due to not using an engine. I originally considered using Unity for the prototype and then switching to C++ only, but I ended up using C++ from the beginning because it's been helping me think about some "from scratch" stuff. Having to revisit systems like collisions and rendering when I get to start the normal game will surely improve them.

Some aspects of my vision are crystal clear, while others are completely mutable.

It'll be a 2D singleplayer fantasy action game, and its main aspects (for now) are a flexible, fast-paced combat system and a two character player: the player will control a character at a time, but there'll be able to easily switch to the other character when they want to. This will allow for cool combo options and flexibility, since each character will be tuned towards a specific skillset, with its strengths and weaknesses.

If I had to mention just one game that inspires my vision, I think it'd be Terraria. Not all of it, of course, mostly the combat and movement. I tend to think about modded versions of the game too.

Apart from that, I have thought about other creative aspects like fantasy, visuals or themes. It's unclear, and I'll go with what helps most while not compromising the quality of gameplay, but I've always had a small part of me that liked writing stories (and this is the reason why there's not a name for it yet!). On the visual side, I tend to like imagining stuff, but I still struggle bringing it to reality. I'm just not skilled enough yet.

Objectives?

To be honest, this project doesn't have many.

It's ambitious enough to eventually get to a point where it can be very good, and I could even release it in that case. That's an option, but not my goal. I'm doing it because I like it first, and then comes everything else.

The only actual goal is not to drop it, and at least leave it on some kind of finished state, which means at least I'll have interacted with all aspects of the development process. We'll see how it goes, and see you on the next devlog!

Tags: devlog, games