Jul 15, 2018

Why are you making this so hard Microsoft?

All I want to do is pass a #define on the command line to msbuild. Why does MS make this so hard? Why not have a simple /DFOOBAR option? This kind of pointless complexity drives me crazy. I'm sure some nerd at MS was super pleased with their wicked powerful solution... fine... but provide a simple solution for the thing 90% of people want to do.

Sorry, I just needed to vent.

P.S. Apparently you can do the following kludge:

set CL=/DFOOBAR

Before you call msbuild.

Jul 02, 2018

Git Question

I have a Git question. I kind of know how to do this but in a horrible brut forced way and I'd like to know if there is a "better" or more "elegant" way to do it.

The letters A-I are misleading. The actual repository has around 600 commits (and close to 1000 files/directories).

I have a master branch (A-F) and I created a new branch (G,H,I) and have been actively working on it. The master branch has had a few commits since the branch, but not a lot.

What I'd like to do is create a 2nd repository that only includes E,G,H and I. The old repository is getting huge and the new branch (G,H,I) has become significantly different from the master branch.

Is there a clean way to do this? I assume it involves --rebase, --reset, --hard, --or-your-fucked flags. I really love Git, it's amazingly powerful and equally as confusing.

Given there are hundreds of commits and close to a thousand files and directories, I want something that doesn't involve me having to interact with each commit or rechecking in files. The history from E-I is important to keep (and is way more than 4 commits).

Jun 26, 2018

Penny Wise and Pound Foolish

Not sure where the phrase "penny wise and pound foolish" comes from. I suppose I could look it up on the internets, but that seems like too much work. As a kid, this phrase made no sense to me, it was only later when I realized that a "pound" was a form of English money that it kind of fell into place.

We did a lot of things right when building Thimbleweed Park. We also did a few things wrong. It goes with "making games".

One of the things I messed up on was not integrating FMOD. For those of you not in-the-know, FMOD is a cross-platform music and sound middleware engine and it's quite impressive.

When Thimbleweed Park started, one of the decisions I had to make was what to do about sound. I was using a thin layer of SDL to create windows and pass along input events (rendering didn't use SDL for performance reasons). SDL also has a minimal sound system called SDL Mixer. It was bare bones, but it got the job done for the simple prototypes I was working on at the time..

When Thimbleweed Park pre-production started, I looked into sound systems. The two big choices were Wwise and FMOD. At the time, FMOD was charging $5000 for the first platform and a few thousand for each additional platform. They did have Indie pricing where the first platform was free if your budget was less than $500K.

Since we raised $560K+ on Kickstarter, this was just out of reach. I suppose I could have fuged the budget, but I don't like to do that kind of stuff (and the Kickstarter amount was very public), plus I always knew there was the possibility that we might raise more money. $5000 + the additional platforms would bring the licensing cost of FMOD to just over $10,000. I was pretty paranoid about the budget and not having enough money to finish the game. I really didn't want to be one of those Kickstarters that runs out of money due to poor planning or scope creep.

So I made the decision to stick with SDL Mixer. It got the job done. I was being penny wise.

SDL worked great on Windows, Mac, and Linux, but when we started the Xbox/Win10 port we began to run into issues and ultimately decided to ditch SDL for that port. Along with ditching the main part of SDL we also lost SDL Mixer. In the beginning, it didn't seem like too much work to recreate the simple backend sound system of SDL Mixer and like most things (about to get crazy fucked up), it was up and running pretty quickly.

On the PC side, David and I started to build the game and with that came wiring in sound effects. In the beginning, it was pretty simple, but as we proceeded we got a lot cockier and wanted more complex features in the sound system. So I added them. And added more. And then added more.

Evolving the sound system became a large chunk of work for me and each time I did that, we needed to make sure the Xbox/Win10 version was on par. This was the beginning of warning signs I should have caught, but like boiling that frog (which is a myth, btw) before you know it, the water is boiling.

There were a couple of times I thought about FMOD but figured integrating it at that point would be too much work (how wrong I was).

When we raised some investor money to do new ports, we also had a little extra money so we hired Elise Kates to create sounds. This only complicated matters because her sounds were a lot better than our "programmer sounds" and she wanted to do more complex audio. So I added to our homespun sound engine. More work for me (and everyone else).

Then we started the Switch and PS4 ports, neither of which could use SDL out of the box, so we had to get the sound engine working on those new platforms.

Yeah, in the end, we spent way more than $10,000 on sound coding. Penny wise, pound foolish.

A month ago I was bored (when I run into creative blocks, I build tech) and thought "Hey! I'm bored. I'll integrate FMOD into my engine. It took me two days and FMOD was fully functional.

Plus... FMOD changed their license, so it is now it's a flat $5000 for all platforms (and still free if your indie budget is less than $500K). Not only would FMOD have saved us a bunch of money, we would have had much better SFX too boot.

If I look back on the three big things I regret about Thimbleweed Park production, not integrating FMOD is one of them.

Next