When linking to these pages, please use the URL:
www.iki.fi/sol/ - it's permanent.
We've been playing a variant of a simple card game called "hunger" with Niklas. It has zero player agency, but it's a thing to play and it teaches numbers and comparing them.
The basic rules (that we've used) to play it are as follows:
Deal the whole deck more or less evenly to all of the players (three, in this case).
Each turn, every player plays the top card of their deck. The one with the highest value card (suit is ignored) gets the cards and puts them to the bottom of their deck.
If two or more players play the same value card, those players play another card until one has higher value card than the others. If a player runs out of cards during this process, they can pull a random card from another player.
Once one player runs out of cards, the game ends. The one with the thickest deck wins. We made this rule because playing this game one-on-one takes FOREVER.
So anyway, I decided to crunch some numbers, and made a monte carlo simulator for the game and ran 10 million games.
Aggregate results from a ten million random games:
|Turns per game (12-821)||90.744|
|2-way collisions per game||8.373|
|3-way collisions per game||0.236|
|Card pulls per game||0.101|
The shortest game played in this set is 12 turns! This is possible because 2-way and 3-way collisions are included within the turn. It's theoretically possible (but rather unlikely) to have a 1-turn game.
Having aces (the highest value card) in your deck at start is a deciding factor on how well you'll do, as we see from the stats. If you start with N aces, you'll:
You can still win when starting with 0 aces, by running out of cards in a 2-way or 3-way collision, and being lucky enough to pull an ace from someone else.
Not winning with four aces is easier, since it's possible that the other surviving player has a thicker deck than you have (even though that's not likely). Losing when starting from four aces is still theoretically possible if someone pulls one of your aces after running out of cards in a 2- or 3-way collision, but this is so unlikely that it doesn't even show in the results.
We had some stuff fried due to thunderstorm, including bluray player, game console and my wife's PC. We spent a whole day, a lot of money and favors from very good friends to get stuff back together, mostly.. I'm still a bit unsure whether our video projector got damaged or if the game console is broken, but we'll see.
Anyway, fixing wife's computer required a new motherboard, which is a move win7 doesn't like. The system tries to load drivers meant for the old motherboard and bluescreens, and then goes through a lenghty automated repair cycle that doesn't work.
I got it finally fixed by googling around and finding this resource, which describes a mystical spell you have to give to the command prompt to get things working. Kinda like with linux, actually..
Anyway, here's how I went with it:
Step one: try to boot, fail, try to boot, go to the automated repair thing, cancel, pick advanced repair options (or some such), pick command prompt.
Step two: insert the new motherboard's driver CD in the drive. If you don't have a drive, copy the contents to a USB stick on some other computer. If that doesn't have a CD drive either, download the drivers off the net. Just make sure the driver media is somehow plugged to the computer.
Step three: all of the drive letters are jumbled. You need to find the drive letter of your windows installation AND the drive letter of your driver media (the CD or USB stick).
Step four: Cast this spell:
dism /image:c:\ /add-driver /Driver:X:\ /recurse
..except that you need to replace c:\ with the drive letter of your windows installation, and X:\ with the drive letter of your driver media (CD or USB stick).
The command will go through the driver media and install all of the drivers to your windows installation; in my case that was over 450 different drivers. That takes a while.
Step five: reboot. This will also take a while.
Step six: wait for windows to rediscover all the devices in your system. This, again, will take a while.
Step seven: uninstall any applications related to your old motherboard (like cpu temperature displays or whatnot) that just throw errors if you try to run them.
Oh, and as a word of warning, I take no responsibility of any damage caused by following the above. I don't know what the heck the command actually does. It worked for me, though.
I have a slight problem with my audio gear. Namely, latency. Playing midi stuff through windows' normal audio interface introduces a huge latency. Using asio4all, I can get the latency down to below 10ms, but then I can't hear the system sounds, and getting asio4all going can be tricky when you're running a hundred apps and any of them might have audio open..
So I went and bought a cheap USB audio dongle, which I can use as a dedicated asio4all device. Which works quite fine, except that I have to move my headphones from one jack to the other, and I still can't hear system sounds.
The proper solution to this would be to buy a usb mixer (which will also work as a USB audio device), but those easily cost more than 200 eur which I don't have to spend. So I figured I might go with a low-end solution:
Googling around I found a bunch of schematics for simple DIY passive mixers. The values for the resistors vary a lot from one schematic to another, so I took a wild guess and went with 2kOhm resistors. The sleeves should be connected to ground, so I just tied them all together.
The result works. I do have to pump up the system volume a bit due to the additional resistance, but considering that I earlier had the volume at something like 2%, this isn't much of a problem. (I am happy, however, that I didn't go with 10kOhm resistors =)
The audio quality is probably also completely out the window, but I couldn't hear much of a difference. Your mileage may vary and all that.
Oh, the reason why those resistors are a good idea is that this way the different audio outputs don't talk (much) with each other, so frying electronics is less likely.
Since Google seems to be filtering all the crazy bits out of the recent search terms, I haven't had that to remind me to post here.
Anyway, to the subject at hand.
As I was working through my backlog of games on steam, I found myself weary at watching yet another intro animation that describes how the world is going to be destroyed by one evil force or another and only you can save the world by collecting an oddly specific number of magic thingamabobs from around the world, while everybody else (most of whom are more experienced than you) seem to be otherwise occupied.
Another thing that really tires me are shopping lists. I went through a bunch of games I had not finished at one point and realized most of them I stopped playing when I hit a "shopping list".
With a shopping list I mean that at some point of your quest someone tells you that in order to progress, you need to do a, b, c and d, or possibly to collect a, b, c and d, or, let's say, seven magic thingamabobs.
I understand where these kinds of quests come from. They give the illusion of non-linearity to the player, or possibly just encourage the player to explore the world a bit in the order the player wants. But the prime problem is the same as with the world-saving master quest.
All of these are relatively easy to fix.
First, I don't think it's always necessary to save the world. If you've played Full Throttle, for instance, the stakes are much lower, and by making them more personal, they have much more impact than your generic world-saving.
Infinity is boring. It doesn't matter if you're about to be crushed by an infinitely large boot or a half-ton one, but the half-ton one you can understand, and it feels much more threatening.
The second and third points can be solved by making the player feel like he's not the only one doing something, and also not necessarily giving the player the most important task. The Half-Life series actually does this at points.
Let's say a voodoo medicine is needed to cure the teacher of the village. Others go and find the exotic and dangerous ingredients while you're tasked to get water (and a bucket to carry the water in, and so on and so forth). While doing that, you also bring wet towels to ease the teacher's pain and discuss various matters with him.
By making the stakes more manageable, they become more personal and have stronger emotional impact. By giving the player a less-central role, the tasks again become more personal. While not the most important, the others' efforts would be wasted. And while not being alone, the player gets a feeling he's really helping, doing something he can understand.
Okay, it's been a new year for a while. Time to update the site..
First, here's the traditional new year's demo for the two of you who hasn't seen it yet..
I also started writing more "making of" articles, you can find those under the new Breakdowns category.
I cleaned up and published my TextGL code, which I used in "Litterae Finis".
And now, for no reason whatsoever, let's look at a game design.
There's a co-operative children's board game I've played recently. The premise is that there's four fruit trees. Every turn, players roll a die; if sides 1-4 come up, the player picks a fruit from the tree related to that side. If side 5 comes up, the enemy in this game, the bird, takes a step forward. The final side of the die lets the player choose which tree to pick a fruit from.
Oh, and if a tree is already empty, you don't do anything.
If the bird takes five steps, it gets to the garden and eats the rest of the fruit. If the players manage to pick all of the fruit before this happens, they win.
So I thought to myself, how much agency do the players actually have, and what's the probability that the players win..
So instead of working out the math, I wrote a small simulator for the game and ran a million randomized games to see what the result is.
The only place where the players actually make any decisions is when the final side of the die comes up, i.e, which tree to pick from. If you always pick from the tree with the least fruit, the likelihood of rolling empty trees gets higher, and thus the likelihood that you roll a bird comes up more. On the other hand, if you always pick from the tree with the most fruit, the reverse is true.
Now, if you do the good choice always, your chances of winning are about 63.1%, and if you do the bad choice, you end up winning 55.5% of the time. Totally random picks win at around 59.7% of the time.
Since it's a kid's game, it makes sense that the game is rigged to make the players win most of the time, but not so much that the bird doesn't have a chance at all. You also can affect how the game goes, but only slightly.
For the heck of it, I also ran some tests to see how the number of steps the bird has to make affects the results, and I'm pretty sure the game designers did the same, as the five steps is such a clear sweet spot.
As for new year's resolutions, I think I'll keep the trio I've used for some years now; let's see which ones I manage to upkeep this time..
There are of course other things I'd love to do, like code a zillion different projects and finish one of my indie game projects and get it out there and make SoLoud much better and.. .. but those will happen if they will, and since I really WANT to get those done, they have higher probability of happening than, say, getting in shape.
And no, round is no shape for a human to be.