Starfield PC Technology Discussion (Linux + Windows Benchmarks)

In my game reviews, I usually include a section I call “The Nerdy Bits” to examine a game’s technology. I have decided to separate this content from the game review to keep the size manageable. My Marvel’s Midnight Suns review showed me how an expansive technology section can inflate the blog post and maybe even distract from discussing the gameplay, the content, and the story, or potentially deter and intimidate readers because of the total length.

(This blog post is dangerously close to 3000 words 😉.)

I firmly believe that technology is a crucial aspect of a video game. Still, sometimes, I can get carried away and focus too much on it. Other people may not be as interested in that or as curious as I am, and they prefer an overview of the gameplay and a brief summary of the visual fidelity.

For me, a lousy running game can break the immersion. Take Elden Ring on the PlayStation 5, for example. My sister bought the game and thinks it runs fine, like many others who believe it to be the greatest thing since sliced bread. I took a 10-second look, turned the camera around one time, and concluded it ran like crap, and I did not want to play this way. Playing for ten to fifteen more minutes solidified this initial perception. This technology discussion is for gamers like me who are also interested in the technical aspects of a video game and base their purchasing decisions on that.

With this explanation out of the way, let me discuss what I think of Starfield’s technology. I will touch on the art style, the visual fidelity and technology, audio, and performance on Windows and Linux.

Please note that this is not a Digital Foundry-level inspection. For that, click here and here.

Read More »

How To Execute PowerShell And Bash Scripts In Terraform

The first thing to know is what Terraform expects of the scripts it executes. It does not work with regular command line parameters and return codes. Instead, it passes a JSON structure via the script’s standard input (stdin) and expects a JSON structure on the standard output (stdout) stream.

The Terraform documentation already contains a working example with explanations for Bash scripts.

#!/bin/bash
set -e

eval "$(jq -r '@sh "FOO=\(.foo) BAZ=\(.baz)"')"

FOOBAZ="$FOO $BAZ"
jq -n --arg foobaz "$FOOBAZ" '{"foobaz":$foobaz}'

I will replicate this functionality for PowerShell on Windows and combine it with the OS detection from my other blog post.

The trick is handling the input. There is a specific way, since Terraform calls your script through PowerShell, something like this echo '{"key": "value"}' | powershell.exe script.ps1.

$json = [Console]::In.ReadLine() | ConvertFrom-Json

$foobaz = @{foobaz = "$($json.foo) $($json.baz)"}
Write-Output $foobaz | ConvertTo-Json

You access the C# Console class’ In property representing the standard input and read a line to get the data Terraform passes through PowerShell to the script. From there, it is all just regular PowerShell. The caveat is that you can no longer call your script as usual. If you want to test it on the command line, you must type the cumbersome command I have shown earlier.

echo '{"json": "object"}' | powershell.exe script.ps1

Depending on how often you work with PowerShell scripts, you may bump into its execution policy restrictions when Terraform attempts to run the script.

│ Error: External Program Execution Failed
│
│   with data.external.script,
│   on main.tf line 8, in data "external" "script":
│    8:   program = [
│    9:     local.shell_name, "${path.module}/${local.script_name}"
│   10:   ]
│
│ The data source received an unexpected error while attempting to execute the program.
│
│ Program: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
│ Error Message: ./ps-script.ps1 : File
│ C:\Apps\Terraform-Run-PowerShell-And-Bash-Scripts\ps-script.ps1
│ cannot be loaded because running scripts is disabled on this system. For more information, see
│ about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
│ At line:1 char:1
│ + ./ps-script.ps1
│ + ~~~~~~~~~~~~~~~
│     + CategoryInfo          : SecurityError: (:) [], PSSecurityException
│     + FullyQualifiedErrorId : UnauthorizedAccess
│
│ State: exit status 1

You can solve this problem by adjusting the execution policy accordingly. The quick and dirty way is to allow all scripts as is the default on non-Windows PowerShell installations. Run the following as Administrator.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine

This is good enough for testing and your own use. If you regularly execute scripts that are not your own, you should choose a narrower permission level or consider signing your scripts.

Another potential pitfall is the version of PowerShell in which you set the execution policy. I use PowerShell 7 by default but still encountered the error after applying the unrestricted policy. That is because the version executed by Terraform is 5. That is what Windows starts when you type powershell.exe in a terminal.

PowerShell 7.4.1
PS C:\Users\lober> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
PS C:\Users\lober> Get-ExecutionPolicy
Unrestricted
PS C:\Users\lober> powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\lober> Get-ExecutionPolicy
Restricted
PS C:\Users\lober> $PsVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22621.2506
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2506
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Once you set the execution policy in the default PowerShell version, Terraform has no more issues.

A screenshot that shows the Windows Terminal output of the Terraform plan command.

And for completeness sake, here is the Linux output.

A screenshot that shows the Linux terminal output of the Terraform plan command.

You can find the source code on GitHub.

I hope this was useful.

Thank you for reading

How To Detect Windows Or Linux Operating System In Terraform

I have found that Terraform does not have constants or functions to determine the operating system it is running on. You can work around this limitation with some knowledge of the target platforms you are running on. The most common use case is discerning between Windows and Unix-based systems to execute shell scripts, for example.

Ideally, you do not have to do this, but sometimes, you, your colleagues, and your CI/CD pipeline do not utilize a homogeneous environment.

One almost 100% certain fact is that Windows addresses storage devices with drive letters. You can leverage this to detect a Windows host by checking the project’s root path and storing the result in a variable.

locals {
  is_windows = length(regexall("^[a-z]:", lower(abspath(path.root)))) > 0
}

output "absolute_path" {
    value = abspath(path.root)
}

output "operating_system" {
    value = local.is_windows ? "Windows" : "Linux"
}

The output values are for demonstration purposes only. All you need is the regex for potential drive letters and the absolute path of the directory. Any path would do, actually.

The regexall function returns a list of all matches, and if the path starts with a drive letter, the resulting list contains more than zero elements, which you can check with the length function.

You could also check for “/home” to detect a Linux-based system or “/Users” for a macOS computer. In those instances, the source code must always be located somewhere in a user’s directory during execution. That may not be the case in a CI/CD pipeline, so keep that in mind. Here is the result on Windows.

A screenshot that shows the Windows Terminal output of the Terraform plan command.

And here on Linux.

A screenshot that shows the Linux terminal output of the Terraform plan command.

You can find the source code on GitHub.

I hope this was useful.

Thank you for reading

Fedora 39/40 Switch Desktop Environment KDE Plasma To Gnome Shell

If you want to do the reverse operation and switch from Gnome Shell to KDE Plasma, I also have a blog post on that.

Replacing KDE Plasma on Fedora 39 requires only a couple of dnf and systemctl commands to convert the Fedora KDE spin into the Default Fedora Workstation with Gnome Shell. It might also work on earlier and later versions.

I have verified these steps on a fresh installation. Be sure to check the console output to avoid accidentally uninstalling any required software if you perform the desktop swap on a productive system.

Start with upgrading all packages. It is generally a good idea when performing such a massive system change.

sudo dnf upgrade

Next, you change the type of the Fedora installation. This is required because Fedora uses package groups and protected packages. You allow removing the KDE package groups by swapping them with the Gnome package groups.

$ sudo dnf swap fedora-release-identity-kde fedora-release-identity-workstation

Last metadata expiration check: 0:19:04 ago on Tue 02 Jan 2024 08:37:17 AM CET.
Dependencies resolved.
==============================================================================
 Package                              Architecture  Version  Repository  Size
==============================================================================
Installing:
 fedora-release-identity-workstation  noarch        39-30    fedora      11 k
Installing dependencies:
 fedora-release-workstation           noarch        39-30    fedora      8.2 k
Removing:
 fedora-release-identity-kde          noarch        39-34    @updates    1.9 k
Downgrading:
 fedora-release-common                noarch        39-30    fedora      18 k
 fedora-release-kde                   noarch        39-30    fedora      8.2 k

Transaction Summary
==============================================================================
Install    2 Packages
Remove     1 Package
Downgrade  2 Packages

Total download size: 45 k
Is this ok [y/N]:

And the second command.

$ sudo dnf swap fedora-release-kde fedora-release-workstation

Last metadata expiration check: 0:20:04 ago on Tue 02 Jan 2024 08:37:17 AM CET.
Package fedora-release-workstation-39-30.noarch is already installed.
Dependencies resolved.
==============================================================================
 Package                              Architecture  Version  Repository  Size
==============================================================================
Removing:
 fedora-release-kde                   noarch        39-30    @fedora     0  

Transaction Summary
==============================================================================
Remove  1 Package

Freed space: 0  
Is this ok [y/N]:

Next, fetch the Fedora Workstation packages and dump them on your storage drive (omitting output for brevity).

sudo dnf group install "Fedora Workstation"

Now that Gnome Shell packages are installed disable SDDM and enable the GDM login manager on boot.

sudo systemctl disable sddm
sudo systemctl enable gdm

At this point, I would log out or reboot and log into the Gnome Shell.

As the final step, you remove the KDE spin packages and the remaining stragglers.

sudo dnf group remove "KDE Plasma Workspaces"
sudo dnf remove *plasma*
sudo dnf remove kde-*
sudo dnf autoremove

Be careful not to mistype sudo dnf remove kde-*! If instruct dnf to remove kde*, it will catch more packages than you would like.

That is all there is to turn the Fedora KDE spin installation into the default Fedora Workstation with the Gnome Shell.

Read More »

Fedora 39/40 Switch Desktop Environment Gnome Shell To KDE Plasma

If you want to do the reverse operation and switch from KDE Plasma to the Gnome Shell, I also have a blog post on that.

Replacing the Gnome Shell on Fedora 39 requires only a couple of dnf and systemctl commands to convert the default Fedora Workstation into the KDE spin. It might also work on earlier and later versions.

I have verified these steps on a fresh installation. Be sure to check the console output to avoid accidentally uninstalling any required software if you perform the desktop swap on a productive system.

Start with upgrading all packages. It is generally a good idea when performing such a massive system change.

sudo dnf upgrade

Next, you change the type of the Fedora installation. This is required because Fedora uses package groups and protected packages. You allow removing the Gnome package groups by swapping them with the KDE package groups.

sudo dnf swap fedora-release-identity-workstation fedora-release-identity-kde

And the second command.

sudo dnf swap fedora-release-workstation fedora-release-kde

Next, fetch the KDE spin packages and dump them on your storage drive (omitting output for brevity).

sudo dnf group install "KDE Plasma Workspaces"

Now that KDE packages are installed disable GDM and enable the SDDM login manager on boot.

sudo systemctl disable gdm
sudo systemctl enable sddm

At this point, I would log out or reboot and log into the KDE session.

As the final step, you remove the Fedora Gnome packages and the remaining stragglers.

sudo dnf group remove "Fedora Workstation"
sudo dnf remove *gnome*
sudo dnf autoremove

That is all there is to turn the default Fedora Gnome installation into the Fedora KDE spin.

Read More »

My Year In Video Gaming 2023 – Game Of The Year And More

It is my third time doing a write-up of my gaming year. The third time’s the charm, right? Before I get into the games I played, I want to reflect on the year and mention and comment on a few subjects that happened throughout it.

First of all, 2023 has been an unbelievable year when looked at just in terms of high-profile releases. There have been so many great titles I cannot possibly remember them all, and as you will see later, I barely even played any of them. Despite that exciting time for game consumers, countless layoffs have shaken the gaming industry. So many people lost their livelihoods because of what often was mismanagement or just greed. This Polygon article summarizes the situation. It is an excellent and somber read.

Another sad topic, although irrelevant compared to layoffs, is the quality of PC ports. Cynical voices may call it business as usual and not any different from other years. Even if that were correct, it does not make it acceptable. This year’s worst offender is most likely Star Wars Jedi Survivor, a highly praised game overall. Although benchmarking generally shows high framerates, the moment-to-moment experience is probably not always flawless. Please note that I cannot speak from experience. I have avoided this title because of its technical issues. From what I have gathered so far, the 30fps mode on consoles might be the most consistent and fluid experience of them all. Sounds wrong now, does it? Just before I published this blog post, Digital Foundry posted their worst PC ports 2023 video summarizing what started as a bad release and was fixed and games that are still bad.

(Guess which game is still in the latter category.)

Adding to the 2023 pile of sad topics, there is no way to get around the current GPU market, and the subpar price-to-performance ratio NVIDIA and AMD have graced us with. NVIDIA is greedy, and AMD does not know how to or does not want to take advantage of the situation. Looked at in isolation, the performance of available GPUs is good to crazy fast. But products do not exist in isolation, and last year’s models in the mid-range are barely slower. Vendors have plenty of stock now, but shopping for graphics cards is still not fun. New system builders are probably better off than upgraders – depending on the hardware age, of course.

Lastly, I need help understanding the buzz around Call of Duty. How can it be that this franchise is a top seller every year? It is a short, bombastic, and action-oriented campaign of less than 10 hours, so people must be interested in the multiplayer component. But how does that warrant 60 to 70 bucks purchases every year when offshoots like CoD Warzone exist that are ongoing service games? In any case, I hope that Microsoft’s acquisition of Activision Blizzard King positively affects the company’s work culture.

Read More »

How To Add Microsoft Store Games To Steam

As a gamer, you likely prefer Steam as a game launcher over everything else, notably the Microsoft Store. Steam supports adding non-Steam games, but Microsoft makes it stupidly complicated to run their store content from anywhere else – at least if you do not like Windows shortcuts.

I wanted to add Gears of War 4 to Steam, a game only available in the Microsoft Store. Here is what I did and what should also work for other titles or applications.

First, there is no way around a shortcut. However, it is only temporary and serves as the starting point. If you are lucky, it is all you need. You can delete the shortcut after all is said and done.

Read More »

Upgrade Intel Core i5 12400F DDR4 to AMD Ryzen R5 7600 DDR5 – Worth It?

Intel’s Core i5 12400F was and still is a capable budget gaming CPU. When I bought this chip at the end of summer 2022, DDR5 memory was still costly, and the benefit in gaming was not worth the price by a long shot. In 2023, Intel’s 13th-gen CPUs benefit significantly from faster memory, and DDR5 prices have reached their equilibrium where DDR4 was last year. I could have taken advantage of slotting in a Core-13000 model, maybe even a 14000 variant, but I am too much of a tech enthusiast to ignore the performance I could be leaving on the table with DDR4.

As you will see, I probably would not have noticed the difference and potentially benefitted the one game that triggered the upgrade thoughts. I recently took advantage of AMD’s Starfield bundles and received a new GPU with my game purchase. I knew of all the discussion around this game’s performance profile. Intel owns this game despite it being an AMD-sponsored title. Nevertheless, the 12400 had issues in the CPU-heavy areas, like New Atlantis.

(It appears that AMD or Bethesda forgot that AMD also makes CPUs, which is baffling since AMD makes the Xbox chips and Xbox owns Bethesda…)

Anyway.

The Ryzen 7600 should walk all over the 12400 with DDR4. The Intel chip is roughly equivalent to a Ryzen R5 5600X, and compared to that processor, the R5 7600 is 30% faster in games on average, according to Hardware Unboxed’s testing published on Techspot.

I performed several gaming benchmarks that compare the i5 12400F to the R5 7600 when paired with a Radeon RX 7900 XT.

Read More »

MSI B650 Tomahawk EZ Debug LED Memory and CPU Issues – Early Adopter Woes One Year Later

I have recently treated myself to an AM5 system on an MSI B650 Tomahawk WIFI. The R5 7600 has access to 32 GB of G.Skill 6000 MT/s CL32 memory, which supports AMD’s EXPO technology. Enabling EXPO worked fine for the first hour before the trouble began.

At first, the SSD wasn’t detected anymore. I wanted to reinstall Windows because of licensing issues since I chose the wrong edition at first. Then, changing settings in BIOS did not restart the computer. The BIOS just froze up. Finally, the CPU and memory EZ Debug LEDs were both active, indicating a fried CPU and RAM.

That was a fun experience.

The Debugging

For reference, here is the layout of the debugging LEDs.

I am showing you this because the image of the error was under bad lighting conditions.

Whatever I tried, the system appeared to be dead. No more BIOS, no CMOS reset, nada. A CMOS reset had no effect even when the system would still boot into BIOS. Cutting the power… you guessed it: did nothing.

In a last hurrah, I attempted to boot with only one memory stick installed. Maybe it was just a single DIMM that unleashed hell. Lo and behold, the system booted. Testing the other stick also booted. Trying both RAM sticks again also booted. What the devil?

Changing the RAM configuration from two sticks down to one triggered something in the BIOS to reconfigure itself. A BIOS often shows a message when changes to the previously installed hardware are detected. And suddenly, a BIOS reset also worked.

The Fix

This time, I ran the RAM at 4800 MT/s while I installed Windows and tested a game for good measure. After ensuring the system was stable, I dared to perform a BIOS update.

And this was the solution to the problem. My MSI B650 Tomahawk came with BIOS version E7D75AMS.160; the latest version is E7D75AMS.170. The changelog mentions several improvements regarding RAM support.

An unreleased beta version also mentions stability improvements with EXPO enabled. I assume this also made its way into the latest release.

Since then, the system has been stable. I have run several benchmarks and played Starfield for about four hours straight without any stability problems.

The Disappointment

I am shocked that users can still run into compatibility issues like this about a year after the release of the Ryzen 7000 processors. The original installed BIOS was published in May 2023. That was already about eight months after the release of the AM5 platform, and it still had issues.

I hope this was helpful and saved you some time debugging a similar issue on the same motherboard or even a different one that behaves the same.

Thank you for reading.

The Order 1886 Review – An Underrated Game (PS5)

If you strongly believe in video game reviews, you likely took a wide berth around The Order 1886 when it was released in 2015. Metacritic says this game is not good, scoring 63 from critics or 6.8 from user reviews. Since I did not own a PlayStation then, I knew of the game but took little notice otherwise. I was only recently reminded of its existence by John Linneman from Digital Foundry as he revisited the game’s technology in 2023. And obviously, it piqued my interest.

The Order 1886 is a 3rd-person cover shooter like the Gears franchise and is equally story-driven. It also pushed the graphical fidelity like the Gears games usually do. So why did it fail?

It admittedly had a few shortcomings, like a story that seemingly ends prematurely and plenty of cutscenes that limit the player’s agency. At least the last part is a criticism that was also directed at Final Fantasy XVI, yet most people still loved it. The story aspect appears valid, but it’s also in the eye of the beholder. It depends on your expectations going into the game – or any game at all. The Order 1886 does not explain everything and leaves many questions open. It was clearly designed to have a successor, which might have allowed the developers to establish more of the backstory. But is that such a bad thing as long as the moment-to-moment action is coherent and enjoyable? I do not think so, which is why I liked The Order 1886.

Read More »

Final Fantasy XVI Review (PS5)

I believe this is the first time that I write an introduction to a review after all has been said and done. I don’t know where to start. It is only my second Final Fantasy game, so my expectations were simple:

  • A more fun combat than Final Fantasy VII Remake.
  • An equally good story.
  • Great visuals and music.

And all of that came to fruition. However, there is a But coming – a very stiff But.

(I better stop this metaphor before it gets out of hand.)

The technical presentation had some issues that could make side content unengaging for you despite the excellent writing. The author’s work was exceptional, and it is a shame that not all received the high-quality presentation it deserved. Did that make it a bad game? No, absolutely not! I liked Final Fantasy XVI a ton and finished it relatively quickly, given its length.

Let’s start the review before I continue beating around the bush.

Read More »

Marvel’s Midnight Suns Review – The Superhero Tactics Friendship Simulator (PS5 + PC)

When Marvel’s Midnight Suns was revealed sometime around the summer of 2021, according to this trailer, I found it to be an interesting concept. The trailer does not say much, of course, and I based my opinions on the first gameplay reveals that are harder to dig up now. My experience with tactics games is limited to the Divinity Original Sin series from Larian Studios, so I would hardly call myself a seasoned player. One of the two gameplay-focused YouTubers I subscribe to is, though, being an X-Com veteran, and he got to show off early gameplay and character deep-dive promotional content. He was even mentioned in the game’s credits, which is so cool. Therefore, I found myself exposed more to this game than I usually would.

As I always do with games I find intriguing but am unsure if I would enjoy them: I watch on YouTube and knew just the right guy for it 😉. I am not a deck-builder gamer, the gameplay loop looked like a lot of busy work, and some of the writing appeared… questionable. So, I stuck with watching, but the idea of the game never let me go. There was a lot to like, and I ultimately purchased a copy, as it occasionally happens in situations like this. Two, in fact 😅. When I decided to play for myself, the most affordable way was on the PlayStation 5, and this is where I finished the base game. After that, I wanted to play the DLCs and their story, and at that point, the Epic Games Store offered a deal for the Legendary Edition (base game plus Season Pass), which turned out to be as much as the Season Pass on the PlayStation store. With a 25% coupon Epic randomly threw my way as part of a Mega Sale, I obtained the Legendary Edition on PC for just under 38€. I think that is a perfectly acceptable deal 😁. It also allowed me to compare the console and PC versions in terms of performance and visuals, as I noticed a few things on the PS5 that I found curious.

(Three emoji in one paragraph 🙀. What’s my age again?)

Marvel’s Midnight Suns captivated me in a way such that it became an evening routine after work, workout, and dinner. It does have its flaws, as expected. However, the positive elements outperform the downsides, and since you seem interested, I will tell you about it.

Read More »

Gamers Do Not Want to Buy AMD and NVIDIA GPUs

It is June 2023, and gamers are still waiting for NVIDIA or AMD to release a GPU that is a no-brainer for any of the different price points of the mainstream market. I accept that the RTX 4090 and the RX 7900 XTX are halo products with an accordingly high price tag. Especially the RTX 4090 is impressive in all aspects. But what about the people who do not have over 1000 Orens to burn or do not want to spend that much? The controversy and discussions about NVIDIA’s sub-1k lineup down to the RTX 4060 Ti got me thinking. These cards would be a significant or even gigantic performance upgrade for me, yet I am not interested in them. What about AMD? Seriously, what about AMD? When are they moving their butts and joining the fray?

I am aware that it is about maintaining margins and keeping all their Scrooge McDucks happy. I also know that gaming products do not sell for as much as professional workstation- or enterprise products, with AI being the new hotness.

(Let’s hope it turns out to be more useful compared to the mining energy waste.)

How much time did NVIDIA dedicate to gaming hardware at Computex 2023? But is this really worth antagonizing a vast and vocal audience that has enabled AMD and NVIDIA to get where they are? From the looks of it: Yes. When considering a younger Jensen Huang’s statements, NVIDIA’s position is especially curious.

Read More »

Horizon Forbidden West: Burning Shores DLC Review – More Great Horizon (PS5)

Of all the games I played last year, Horizon Forbidden West was my absolute favorite. I love the lore, the lead character and supporting cast, the storytelling, and the combination of action combat and adventure-like exploration and exposition. It should come as no surprise that I was very excited about the Burning Shores DLC when it was announced last year.

With that being said, expansions are usually not my thing. Most spin their own standalone tale within the framework of the main game but do not extend it or move it forward. Unless the gameplay is outstanding and the sole driver of the experience, DLCs face an uphill battle trying to convince me. And even in those gameplay-is-king cases, like Control, the expansions failed to entertain. I want more lead protagonist, more main story. Random side content that may or may not have ties to the main events rarely tickles my fancy. The issue comes down to the importance and meaningfulness of the new adventure. What could be significant enough to jump back into a game when the main objective is completed and the big bad boss is defeated?

(Rhymin’ and stealin’)

Horizon Zero Dawn’s expansion, The Frozen Wilds, was a new adventure, yet it also laid some groundwork for what would come in Horizon Forbidden West. Together with the fact that I just really enjoyed Zero Dawn, I happily played it. Forbidden West was an even better game, and I expected something similar from its DLC. In fact, it was my most anticipated “game” in 2023.

Burning Shores did not disappoint and delivered more of what made the base game an extraordinary experience: gorgeous visuals, entertaining combat, a couple of new machines, new skills, another Zenith threat, and a new side to Aloy’s character.

I immensely enjoyed my time in the destroyed and flooded future Los Angeles, and I want more Horizon because of that.

(Tomorrow, if possible. Kthxbye)

I think I can keep this review relatively short since the game’s core is still the same. We’ll see how it went when I write my famous last words 😉.

Read More »

CMake Multi-Project Template With Library, App, Tests

CMake is a powerful tool but can also be very complicated and daunting when starting out. Much of my C++ career took place in Microsoft’s Visual Studio on Windows, so I am mainly used to the IDE maintaining the build system and relying on a graphical interface to configure dependencies. I started my WorkTracker utility this way – Visual Studio in combination with the Qt plugin.

Eventually, I migrated to Qt’s build system, qmake, and after that, to CMake. This is how I managed to build WorkTracker on macOS. If I am honest, though, I took a minimalist approach and learned only as much as was necessary to get it working. I like building an application, not knowing about build tools.

As a result, the resulting build script was mostly a hodgepodge of somewhat modern and outdated CMake. My lack of more profound knowledge – which I still do not claim to have – and the convoluted CMakeLists file of WorkTracker somehow presented a mental obstacle for me to start improving it or build other C++ tools.

To remedy this situation, I started looking at the bare minimum modern CMake. I set up a template repository containing a library, an application based on that library, and a Googletest-based testing application. This should provide a good starting point for new projects and give me enough knowledge to slowly start dissecting parts out of WorkTracker and create one or more libraries from it.

Read More »