The making of FitB (Furries in the Backrooms)
07/23/2024Welcome to the first #devlog for FitB. In this devlog, you can't always talk of everything as it will pollute the timeline of furry.engineer. Therefore, I will only talk of the most notables timelines of FitB:
1. Finding free 3D models to use
The biggest slowdown of FitB is the search for a free 3D model to use ingame. There are many websites where you can download free 3D models but also several websites I wouldn't recommend like free3d.com because of suspicious uploader. I can't risk this in my game!
Instead, we have to think the furry way™: thanks to the creation of VRChat, a lot of furry model appeared on Gumroad which is very reliable to find a free model!
So far, the game uses a fox model from arrisx.gumroad.com and a hazmat person from benng.gumroad.com
2. Ideas
You might have the 3D models, arts, sounds, scripts and all you needed in the world, but if you don't know what you want to make into your game then it's all useless.
This game inspires from the Backrooms lore so I didn't start with nothing but a core idea of what the Backrooms are supposed to be. As every furry artist knows, there isn't an unique way to describe art. Interpretation of art is subjective so is the lore of the Backrooms too! You can already see on YouTube there are several visions of the Backrooms from different YouTubers.
One vision I would like to explore in the Backrooms lore and that is also very underrated is the Backrooms without monsters. While it's true I will add "monsters" into FitB, I want you to spend more time exploring my game than fighting or evading monsters.
But it's perfectly understandable for why a lot of content creator add monsters because this is what makes a game less boring and "enjoyable".
3. Where to find free sounds and textures?
ambientcg.com : great website with a very permissive license (CC0) for very high quality textures.
pixabay.com/sound-effects : less choice than freesound.org but this is also the only website (as far as I know) that won't require you to create an account to download (nor it will gossip to the sound creator you downloaded it) a sound and the license is alright (pixabay.com/service/license-summary).
4. Game engine choice
When you are a beginner, you wouldn't like to make everything from scratch. Even a professional one wouldn't as it is very time consuming and requires impressive skills to make a game engine. Not only that but also, you will need the expertise of everyone from programming to sound engineering to make sure your game engine is working for everyone from different fields.
Today, you have the choice between Unreal engine and Unity engine. Both of them are very good.
But me? I would like to work with a game engine that is open-source as I care for FOSS software. Unreal engine does provide you the full source code to their game engine (unlike Unity) but the license and ToS don't please me.
So Godot is the only serious direct contender to them.
Godot engine is great for its impressive lightweight size and export to Windows, macOS, Linux and more... while staying on Windows. But like each game engine, each one has its own way to work with designing a game.
5. Godot as a game engine
Godot is good, both in 3D and 2D.
Godot works on the principle of nodes: you are given a world, and in this world you build the tree "of life" with leaves (nodes) from a single root (node).
On the paper, it sounds good but then, when you move on with a very complex scene (FitB in this case) you start to realize all the drawbacks from a node-based system obviously: you start from a Root node and you are very far away from it, how do you deal with nodes being very far?
Also, how do you optimize the whole process with nodes having their own complex nodes within?
You will see from now on, progress and regression when working with the Godot engine.
6. 3D models
If any of you remember my first issue with Godot's animation retargeting then I will start with this one because it was my very first issue that slowed down significantly FitB development.
I used to have the very high quality motion data set from Bandai Namco Research Inc. for importing the animations so I wouldn't have to do them myself but I found out the hard way their animation file is extremely weird that even my math skill couldn't help find a rotation set that would work for each bone.
So I gave up and made myself a very simple walk animation within Godot for the fox.
Later on, when I had also to make myself a flashlight as I couldn't find better 3D model online: there was the question of how do I make the character wear the flashlight?
Usually (and almost every time), an experienced game developer would simply add a bone attach point where the object's bone attach will "snap" to the character's bone attach.
But as someone skilled with maths, I thought to be better than the game engine... At first, it worked fine then with the animation, no longer!
Life lesson for math fur out there: don't try to be better than the game engine even if you are a skilled math fur, you will lose!
So... what's the game engine's way to handle with carrying object? For Godot, you would add a BoneAttachment3D to the character. But mine has a problem: Arris_X's VRChat fox model didn't have a bone attach for object in hands.
The solution? Don't be a lazy game developer and add yourself the bone attach for object in a 3D modelling program!
Once again, me being a skilled math fur, I skipped the 3D modelling by adding 2 offsets ("offset" and "grab") in Godot but this is not a "compliant way" to achieve this so don't do what I did!
Footsteps sounds were added in the last minutes before the demo with lazy nodes which is why for some of you with accurate ears, you could notice how fake they were on the ground.
7. Bonus: UV maps
Don't do that.
Godot only accept 1 UV map for a mesh. If you needed 2 UV maps for a single mesh, you are likely doing it wrong.
In Blender, separate your mesh into multiples meshes for a body so that each mesh owns their own UV map instead of a mesh sharing 1+ UV maps that won't work in Godot and likely many game engines too!
8. Make the tools
In everything you do in life, be it sport, B2B, planning, gaming and so on: you need to test.
In a game development it's the same: you will be making animation, sound, texture, maze generation, localization, etc. that you need to check before publishing your game.
You will never see an experienced game developer release a game without having tools they made during the game development to test each specific part of the game.
What is FitB made of?
- Animations : tested by 2 tools I made (retarget and wear).
- Procedural generation (Backrooms) : tested by a tool I made for generating the Backrooms then look around. The same tool has a very useful feature to test how bad the lightning will be with more than 8 lights in the Godot engine (in "Compatibility" mode for older computers, Godot forbids you to have more than 8 active lights in a scene).
It will be also very useful to have a debug mode in your game for testing (remember my demo yesterday about it).
9. End notes
FitB is a very complex 3D game that require free 3D models to be made for it so that I would spend less time on modelling and more on programming the game.
There is also the common part with every developer that is struggling with the codes. For myself, it's more of a decision than a code issue like math for wearing an object VS. using the bone attach. Or better, what is the most efficient way to generate 3D maze?
Usually, it is true that premature optimization is the root of all evil but also not an evil if you are experienced. This game must run on everything and I mean it! For now, it's the hazmat person model that is slowing down significantly the game (not shown in the demo therefore).
So now my policy is: less code, more readability.
A lot of things that broke in yesterday's demo were all about too many lights and walls. For example, the floor and ceiling are blacks because Godot stopped rendering these when lights are hindering the performance.