The dark side of solo development
In the last two weeks, unfortunately, I've been unable to work on Particular Reality.
What have I been doing? On one side, I had a bit of extra contracting work to do. On another, I had to dedicate a significant amount of hours to a hardware upgrade, which ultimately will also benefit the Particular Reality development.
I could skip another weekly update, but I thought it could be okay to do a post about the new system setup. While not strictly correlated to the game development, it's a testament to the fact that there's always some stuff to take care of that steals time from the effective development. If you're in a nice game development company with at least one "IT guy", you won't have to deal with any of this, but if you're flying solo, well, you'd better take into consideration that setting up a development PC takes time.
Hardware
I'm not a hardware enthusiast, so I'm not constantly aware of what's on the market, which are the best value parts that satisfy my requirements, etc. Still, I'm hopefully competent enough to make good choices if I do a bit of research when I need to buy something.
After that phase, when I had a somewhat precise idea of what components I wanted, I had to decide if I wanted to buy a pre-built PC approximately matching the configuration, use some online store where I could select the parts I wanted and let them put together the PC, or order the parts and build it myself.
I couldn't find a pre-built configuration I liked, and the "build configurators" on all the reliable online stores I know about all had some kind of problem that prevented me from completing the configuration I wanted: one wanted to force me to select a Windows version (but I had already bought a license), one insisted that the GPU would not fit the case I selected (but I had checked carefully the specs, and it would fit), another didn't have the GPU in stock, etc.
So, I decided to bite the bullet and order the parts to assemble the PC myself.
The build took me a couple of afternoons, definitely taking me more time that would be needed by a professional or a hardware enthusiast constantly swapping parts and fiddling with cables, cooling systems and LEDs.
Then again, proceeding slowly and carefully, checking manuals and videos when I wasn't sure about a specific step, paid off: everything worked properly when I eventually pushed the "power" button.
I won't go into the parts selection or the build process, because I feel it would be too off-topic for the DevLog, and it's not my field of expertise anyway.
So, let's go back to my comfort zone and discuss...
Software
As you might imagine, there's a lot of software that I use for development and basic system maintenance.
When possible, I favour open source software, but I'm not strict about it and try to stay practical.
While installing and configuring all kinds of things, I wrote some quick notes. Hope it helps, and if you have any suggestions or questions, leave me a comment!
Operating system
I installed Windows 10 Pro. I bought a retail license, to be sure that I will be still able to install it on other hardware (or a VM) in the future. I mostly go for the Pro versions to use BitLocker full-disk encryption, with password prompt on boot, to keep my data (and the data of my clients) safe in case a device of mine gets stolen. The Pro version was also needed to run the Hololens emulator, which I've also been using for a couple of projects in the the past.
Another reason to "go pro" is the group policy editor (accessible running `gpedit.msc
`), which helps in making the Windows user experience slightly more bearable. I'm definitely forgetting something, but two things that I always set are:
“No auto-restart with logged on users for scheduled automatic update installations.”
in "Computer Configuration > Administrative Templates > Windows Components > Windows Update"
prevents Windows rebooting your PC to install updates whenever he wants, which is something I find totally crazy and caused me to lose work in the past.
"Turn off the caching of thumbnails in hidden thumbs.db files”
in "User Configuration > Administrative Templates > Windows Components > File Explorer"
avoids the cluttering of folders with `
Thumbs.db
` files, which annoys me: if I compare folders (common for backup purposes), I don't want two folder to show up as "different" just because of the stupid `Thumbs.db
` files being there or not.
I briefly considered going with Windows 11, but then I read that there were problems with Oculus AirLink, which I absolutely need. Also, it looks like Microsoft is pushing onto Windows 11 things I prefer to stay clear of. Maybe Microsoft decided to stick to the tradition of alternating acceptable and horrible versions of Windows? Anyway, I'll consider again upgrading when Windows 10 will stop receiving updates.
I always install WSL (Windows Subsystem for Linux) to use some Linux command line tools.
Compilers, Tools and IDEs
I need `C++
` and `C#
` for Unreal Engine and Unity development. Nowadays you can easily install the relevant toolsets by Microsoft using the Visual Studio Installer.
`Rust
`, instead, quickly became my go-to language for small side projects. I still consider myself a newbie, but I enjoy working in it and I built a static site generator which I can consider "in production" because I've been using it for a while to generate both https://dario.scarpa.dev and https://www.particular-reality.com. More on this project in an upcoming DevLog entry.
I use Visual Studio Community Edition for most of my `C#
` and `C++
` editing.
Unfortunately, I have the bad feeling Visual Studio is getting significantly slower and cluttered with time, and I've recently been a victim of this problem. It might be time to consider alternative IDEs. I've heard good things about Rider, and also about 10x Editor (C++ only).
I've been using VSCode for `Rust
` development, and also for some non-Unity, cross-platform `C#
` projects that needed to be buildable on Linux too.
I also use it to do the very little web development I unfortunately need, which amounts to editing the odd HTML/JS/CSS file.
What else? Markdown editing with Mermaid diagrams and with PDF export, TOML, YAML... overall, thanks to the extensions system, VSCode is a pretty versatile and useful tool.
Of course, for my VR development, I also need the Oculus app and the Meta Quest Developer Hub.
Microsoft Visual Studio with extensions:
VSCode with extensions:
Game Engines
I've been using Unity for a decade (sigh) and, as you very well know, I'm using it to build the Particular Reality prototype.
Recently I'm also working on a quite challenging Unreal Engine project (which is the main reason I did a hardware upgrade).
I also have some micro-projects in my backlog that should be suitable to start testing Godot and Bevy. They're not urgent, so it might take some time to get there.
Version Control
I use GIT and Subversion repositories.
For GIT I've been using Sourcetree and GitHub Desktop for some years, but I recently switched to Fork, after hearing so many great things about it. It's early days, but I'm liking it so far.
For Subversion repositories (yes, SVN is still useful, don't get me started on that...) I've been using TortoiseSVN since forever, and it's great.
I'd like to give Perforce a serious try. But I need a strong reason (like, working on a project with people using it) to justify the effort.
Writing
For the documentation of my Unity Assets, and to write technical reports when required by clients, I've been using DocFX for a while.
I'm not crazy about cluttering the code with annotations to be used to generate the API reference, but it's the lesser evil when that's needed.
I like being able to write in Markdown, which lies in the sweet spot where the source text files are not awful to look at and write (cough cough LaTeX), but the feature set is good enough for most usages. I also like using Mermaid to embed text-driven diagrams.
Keeping text based documentation (with the odd screenshot or logo here and there) is great, because it allows to easily keep track of changes using versioning tools.
Around a year and a half ago I started using Obsidian to write and organize all kinds of notes. Similarly to DocFX, it allows me to write in Markdown and to keep data as text files in a GIT repository.
There are many sophisticated "personal knowledge management" tools, but I wanted something simple, and a basic Obsidian usage is working well for me. I can store files in arbitrarily nested folders, link between them, quickly add images, and easily do text searches.
Image Editing
I do a very basic usage of Gimp, Krita and Inkscape for the little raster and vector image editing that I need.
Video Editing
I do any "serious" video editing in DaVinci Resolve. It's an amazing piece of software and it offers a free edition which is more than enough for my basic usage.
If I just need to extract a clip from a longer video capture and add a fade-in/fade-out, as it often happens for the video captures I insert in my DevLog entries, I usually go for Microsoft Clipchamp, which saves me a few extra steps required by the more professional approach of DaVinci Resolve.
I'm ready to ditch Clipchamp and go all-in on DaVinci if they keep making it more annoying to use (login request, attempts to sell unwanted features etc).
For quick and easy transcoding, I've been using Handbrake once in a while.
3D Modeling
I like having Blender installed in case I need to export some (super basic) test model for something I'm doing. While I know a fair bit about 3D models formats and quirks, I'm not really able to do 3D modeling.
Cryptography
I use Cryptomator for client side encryption of data that I store on cloud storage. This should keep my data secure from both the companies providing me with these services and from any attacker which might hack them.
For removable hard drives, instead, I use VeraCrypt.
Virtualization
I use VirtualBox whenever I need a Linux VM or some old version of Windows. The plan is that, after completing significant projects, I'm going to start archiving VMs with all the tooling needed to prepare a build. That should help in case I need to go back and fix something after ten years, or something like that.
Networking
I use Putty and MobaXterm for SSH. I sometimes use TightVNC to access other systems on the LAN without leaving my desk.
To quickly switch between using the default DNS servers and the Pi-hole running on my LAN (which can sometimes be problematic), I use QuickSetDNS.
As FTP client, I've been using FileZilla since forever.
Other utilities
I use Notepad++ as text editor. In the past I used it more frequently, to take all kinds of notes, but now I have Obsidian for that.
I continuously search for files using Everything, an amazing little utility which does what the useless Search feature offered by Windows should have been doing since forever.
WinMerge is another great tool, great to compare entire directory trees and effectively work on the differences. It helped me many times.
In terms of system utilities, I always install the Sysinternals Suite, which contains a few tools that have helped me many times diagnosing and solving problems, or detecting unwanted behaviour.
Some of the Microsoft PowerToys are also very useful, like the Color Picker or the File Locksmith, to check which files are in use by which processes.
I've always hated getting the icons on my desktop repositioned because of resolution changes and things like that. I use DesktopOK to save my icons layout and restore it when bad things happen.
What now?
I'm at that stage where I can start using the new PC and take care of whatever I might have missed along the way. I'm going to keep the old system available for a while, before repurposing it.
I'd like to rant about why it's crazy that setting up a new PC takes so much time in 2024, but that would be a whole another post.
I'm still not sure if next week I'm going to resume the actual development of Particular Reality, or take another little detour first, because there's something about the DevLog editing and publishing that has been bothering me for a while, and maybe it's time to fix it.
I think I'm going to decide what to do on Monday afternoon, so I can't promise anything right now. Best case scenario, you'll get another post in a week - otherwise, you might have to wait a little more.