2026-07-07 14:02:10
諏訪子
rant
gamedev
webdev
corporate
foss

【企業】Differing mindsets between game developers and web developers

At my dayjob, me and a coworker were given the same task, but we had to make it independently.The other guy has a background in frontend web development, and I am known as the game developer who also runs their own game studio.I can't talk about the contents of the task, since it's meant for a real client, but it's a desktop program.The other guy chose C# + .NET stack, whereas I chose C++ + Raylib + ImGui.

The way we worked was telling.From the beginning I kept the end user in mind, whereas the other guy kept the developer in mind.Whether he did this consiously or not, I have no clue.The result was that his was feature complete quicker and easier to compile, but the UX is unintuitive and confusing.Mine took longer to complete and is not as easy to compile (because I use CMake), but it's very easy to use, and I even added in a 3D visualizer just for fun, which both the employer and client really liked.

Build experience

Having worked in web development as well, I got reminded to how web developers worked in my previous employments; easy for the developer, but hard for the end user.Then I got reminded to the fact that open source has this exact same problem.In fact, most web developers are also open source developers, and there seems to be a big overlap.You only need to take a look at all the ActivityPub servers or even clients to see what I mean.The use of suboptimal programming languages, a database that keeps breaking that's also the only option, requiring 400 manual steps to install, maybe even require the use of Docker too, litter their repositories with completely unnecessary files and directories (CODEOFCONDUCT.md, .github, .editorconfig, .vscode, and many more) for no reason, and their (accidental) hostility towards the BSD's, or any OS other than SystemD/Linux (and specifically Debian or Fedora) rather.

One recent example is PeerTube.Nice software, but then their developers decided to replace Yarn with PNPM, which didn't work on FreeBSD.So for a while I continued using the outdated PeerTube version, but then serious CVE's started to be released, and I had no other choice but to discontinue my PeerTube instance.My PeerTube server ran on FreeBSD, and all their developers did was put the blame on FreeBSD rather than on themselves.The worst thing you can do as a developer is to intentionally break things, and then put the blame on somebody else for it!It's too bad that otherwise good software gets ruined by bad decisions...

In contrast, every time I make software, even if it's open source, I make sure it's as easy to both compile and use as possible.In fact, especially if it's open source, I make it extra easy on the user, because I know they may want to compile from source.I even go a step further by releasing pre-compiled binaries that are either fully statically linked, or depend only on what the OS is guaranteed to have and has no breaking changes, like OpenGL or LibC.All to make sure that people have a painless experience every time.

For example, you'll see that in my recent projects I bundle all dependencies with the source code.This is because I learned a bitter lesson: you cannot rely on Linux or Illumos package managers, neither can you rely on BSD ports, or even direct from developers.In the past I would give instructions on what libraries to install.But what if the developer of a library decides to fundamentally change it?Exactly, you can no longer compile the code!I don't remember which library that exactly was, but it was one that used to be guaranteed to compile against, until it wasn't.

This is even worse for Windows users, where libraries can be installed into whichever directory a developer deems appropriate.So by including all non-system dependencies with the code guarantees my software remains compilable forever, as not only do I eliminate the extra steps, I ship the exact version I built against.I'll even include pre-built .lib and .a files for each OS if in my own experience compiling was a complete pain in the ass.

User experience (UX)

I can't help but wonder why web and open source developers think it's a good idea to make software as hostile to use as possible.I can get it from the perspective of a 1990s computer user, where computers were so unreliable that you had to become a true computer nerd in order to use one.Guess what?Back then I was a kid with plenty of time on their hands.Today I'm a grown adult who is both a full time employee of one company, and the president of another company.I don't have the time, resources, and willpower to learn how to troubleshoot your tool, fix its bugs, and submit pull requests that will probably take months before anyone takes a look at it if at all, I just want my tool to work!

Even for me, by making UX horrible, you're deliberately wasting my time that I should have spent on what I'm supposed to do instead.This is why I prefer proprietary software nowadays.

Imagine if you'd give a construction worker a drill that has 100 different buttons, you have to press a combination of buttons like if it's Mortal Combat in order to start that drill, only for it to suddenly crash, and the drill just shows "Error Code 0xDEADBEEF".Do you think the construction worker will fork the source code of the drill, modify it, and give you the fix on Microsoft Github?Fuck no, he'll just go buy a better drill that costs more, but at least it works.

When I incorporated 076 into 076スタジオ合同会社, I moved to Windows full time for the first time in my life.The OS is slow and annoying, but it does a few things that every single Linux distro, BSD system, Illumos distro, etc. fails at:

  1. It just works.
  2. Compiling and distributing software isn't a hell full of pain.
  3. Backwards compatibility is fantastic.

I have debloated Windows 11, disabled all AI anti-features, and I'm using a local account.With that done, the OS surprisingly stays out of your way, and you don't have to dig deep into configuration files or deal with the system breaking for no reason either!

And the best part is, it has Visual Studio.I don't mean Visual Studio Code, I mean the real thing.As a Vim user, I really didn't want to use it at first, but what I got was an editor that just works, doesn't suddenly break after a package update, and features the best C++ debugger I've ever used.Combine Visual Studio with CMake, and the developer experience is unmatched!

Different environments

Web developers and game developers live in different environments.Game developers often work with a team that consists of people that either programmers, or not.The non-programmers also need to be able to work without constantly asking you how to do things.Additionally, the end user is always going to be a gamer, who may or may not be familiar with technology.So programmers make internal tools and end products easy to use, even if that means at the cost of making it harder to develop.

Web developers on the other hand work often work with people who are just as technical or more technical than they are.Their end users are other corporations, most likely those with technical skills.As a result, their software is easy to develop, but difficult to set up, unstable, and difficult to use.