Author Archives: Juuso Hietalahti

Purchasing dvds is bit like… remember that Monty Python Cheese Shop sketch?

I’ve been finalizing my Infected card game, but also ordered some research material for future projects (and for bit of “just for fun” as well). I happened to spot Survivorman show and learnt there were several seasons of their show “available”. I decided to purchase, and of course since it’s year 2012 you’d think everything would be easy: just push couple of buttons and I could start watching the show, right?

Well, not exactly.

I learnt that Netflix had some survivorman episodes quite likely available. Netflix just arrived to Finland so I tried to signup. I got error “try again later”. I tried like 47 times, but no can do. I don’t know why, but I just could not sign up. Maybe I did something wrong, but well. That attempt failed.

But fear not, I could go to amazon.com and order it, right?

Wrong.

In Amazon.com, there was only Region 1 dvds, not 2. I looked into figuring out if my PS3 could play Region 1 dvds and learnt that quite likely not. Well that sucks a bit then.

Amazon.ca said “not available”.

Amazon.co.uk said “Region 1 import”, so no can do.

I then tried purchasing direct streaming through Amazon.com, just to learn that it was available only in “US store”. Of course. Sorry about trying.

Then I went to Discovery channel official store, where it was “no longer available”.

Then tried one online streaming system which told me to “view from Canada”.

Sucks to be me, I live in Finland.

Play.com could have it? It always has stuff I can buy.

Not today, no.

At this point I went to watch that Monty Python clip. You should watch too:

I then started thinking, that all this region coding requires plenty of work. Region codes didn’t just appear: these need to be programmed in the system. My playstation by default didn’t have region codes, no… those needed to be created.

So what essentially happened here is that:

Publishers put massive amount of work to ensure that I cannot buy the product.

It’s like…

I’m almost speechless.

Seriously.

I have money here that I want to hand over to you. You’ve spent your money to prevent me from buying.

Why?

Can somebody tell me why, because I’d really like to know.

(Oh, and in case you happen to know where or how I could watch – yes, I’m willing to pay – Survivorman full episodes, then please let me know. And no, I’m not buying into that “buy region free dvd player” madness just to watch one show, I have no room for that anyway.)

Valve will introduce a Kickstarter-like service, me thinks

Steam is the place to sell finished games. Greenlight is the way to get existing games to Store. What they are missing is development phase sales.

Kickstarter and different other crowdsourcing systems have created (or changed) market opportunitities.

Steam has all the resources, customer base and everything they’d need to compete in this market area.

If Steam (and greenlight) would be place to:

  • Fund the develop games (let’s call it “Steam Seed”)
  • Find existing projects & games to get to Steam (Steam Greenlight)
  • Then also release & sell games (Steam store)

I think there would be plenty of devs joining that bandwagon.

Not taking stance whether it’s for the good or the bad, but I wouldn’t be surprised to see this happening.

Valve will bring a Linux powered Steam Box to market, me thinks

My hunch and some deductive reasoning is telling me, this is going to happen. I wouldn’t be surprised to see some sort of modular linux powered “steam box console” on the market in the future.

Valve big boss Gabe Newell says Win 8 to be catastrophe. Earlier it’s been reported that valve is hiring hardware folks.

If we think about the market: Windows 8 creates a more monopolistic approach on software, with the Windows new marketplace (somewhat similar to Apple’s App Store). Of course that’s a big threat to Valve’s steam. That means Valve must adapt & change too.

Also: Valve has announced they are porting their games to linux. Specifically saying in their goals in their blog post:

- getting the Steam client onto Linux with full functionality
- optimizing a version of L4D2 running at a high frame rate with OpenGL
- porting additional Valve titles

Let’s think these for a moment:

  • Newell trashes Win 8 as crap, as it’s not open and aims to destroy their dominance.
  • Valve rumours bringing Steam & Games to Linux
  • Hardware folks being hired

Connect the dots and what you get: A Linux powered Steam box.

There’s couple of major IFs: first they must also get other major players to bring their games to linux. Indies alone won’t probably be sufficient. And also, linux has very many distributions and getting proper video card drivers there might be a challenge too. Valve has resources to make this stuff happen though… and they’ve been working with NVIDIA, AMD, and Intel to improve graphic driver performance on Linux.

Thoughts about balancing games: how to create a really big mess

Balancing games is interesting. It’s hard work. And difficulty of balancing follow the formula that I just invented:

Difficulty of balancing = Links between things ^ 2

For example, if I have a game of rock, paper and scissors. It’s pretty balanced: all of these attacks are equally good (well, of course rock always wins) – only the human factor brings slight variation on what is the best way the win (yes, there’s books written on subject: there’s some amount of skill that can be applied even in game of RPS)

Anyway, for the sake of argument, let’s agree that rock, paper and scissors is balanced if we look purely at their powers: each one wins 1, ties 1, loses 1.

Now, if you want to add a shotgun there as the 4st item. That means you gotta think how shotgun relates to 3 other things. But that’s not enough, after you got this figured out… you still need to rethink all 3 other objects that were linked to shotgun AND then also think how these affected objects affect other objects.

So, you cannot just say: “shotgun wins RP but loses S” to create a sensible game.

Since shotgun affects R, P and S, you must then look at these items too:

“okay, if shotgun wins R, should R then create tie with P?”

At this point you wanna use Excel or draw charts as textual description won’t be sufficient.

But the point is: “just adding a feature” immediately leads to following things:

  • Something will mess up
  • That something can be a bug that appears (like said, the more connected the object is the bigger chances there will be bug somewhere. This is one reason why programmers like to minimize the amount of connections between modules. If everything is linked to everything else, one change is a big mess)
  • That something can result in unbalanced stuff somewhere else (as pointed out: it’s not only links between NEW object to OLD objects, it’s also links between OLD object to other OLD objects)

Balancing is interesting and hard work, and requires healthy amount of *thinking*.

I made the decision to reduce the number of cards from 150 to 108, which helps fit cards in a small tuckbox (which reduces shipping costs, makes it more convenient to carry etc), but it also meant I needed to change some links. And the changes of these links caused me the need to change other things. It requires quite a bit of work, and I’m cleaning things one corner at time – and testing over and over.

My game isn’t a mess now, it still works even after link ends were changing. I know what’s going on there. I can see all corners, and I can move things. Just giving people a headsup on balancing: “small change” here might mean big change there.

To put it in other words: don’t even think about doing “minor balancing effort” or “just small feature” and uploading your game without testing it.

Something will break.

Less is much, much more

For a couple of weeks I’ve been going back and forth with the following options:

  • Release my game including only co-op mode
  • Increasing features: adding new things to bring more features that help deal with Traitor mechanism, which would postpone release.

The question I kept asking:

  • Would this level of quality satisfy me? Would the game be good enough for release?

In the core of my game is the idea of having one secret traitor in the party. You don’t know who it is, the same way as in Werewolf party game.

Playtesting revealed issues:

  • There should be more options for the “traitor” (aka the “infected”) player in the game.
  • There was something I didn’t quite like in how the game ended – but something I quite couldn’t pinpoint.

And also, the game box is way too large.

I spent week or two going back and forth stuff, and solo testing my game.

And today it hit me.

I was randomly browsing Game Crafter pages where I found out there’s 108 card tuckboxes available. This might sound strange, but… somehow I immediately thought:

  • My game doesn’t need more components: it needs less component.
  • My game doesn’t need more complexity/features: it needs less features if any.

It’s bit difficult to describe, but by deciding to reduce number of cards to 108 (instead of using current 150ish cards) made a huge difference. I immediately knew what changes I needed. I wrote 7-8 tasks for myself: one deck is getting smaller, another deck is getting additional use, there’s no need to add one additional deck which I was planning… and certain resource system might be simplified. And of course tweaks here and there and playtesting.

The game core still remains untouched: the basic mechanisms, the basic goals are still there, but by reducing features, reducing cards I now see that this game will be great.

I think the solo and co-op system already work, and with that in mind I can happily do the few changes that will change things a bit. After this, there’s more options for the traitor player, the rules remain very simple, there’s more options for all players.

To recap: from “let’s add new deck, new features, new complexity” (that leads to a hard-to-balance mess), I’m “removing features, moving meaning of one deck to another, removing number of cards” I aim to receive:

  • More decision making instead of luck
  • Better options for the secret traitor player
  • Cheaper & more convenient game tuckbox (which leads to smaller shipping costs, which actually might make game more accessible for non US-folks)

I wonder at which point had I forgotten that when there’s a bug in code, you usually end up having less, not more in code? Same seems to work for physical card game design as well.

My decision to do this will mean I will be needing more testing, which again delays the game (I think instead of August… it’s maybe couple of months more. Might need to use valve time too). I think then I’ll have a game I’ll be really proud of, a game that will work great.

Game for werewolf party game fans – that’s what I was aiming for in the beginning.

But anyways.

Less is much, much more.

Prototype code must be ugly, filled with bugs and smell bad – my #7DFPS post mortem

Recently, the 7dfps prototyping challenge got tons of attention. The idea of the challenge was to prototype a 1st person shooter in just 7 days. I participated, sort of. Since 7 consecutive days didn’t fit my plans, I decided to work on my prototype on 7 days scattered around a few weeks of time.

I brainstormed tons of ideas and started doing a multiplayer prototype.

What went right
I used some of my old code, and was able to knock together plenty of things (but not first person… and not shooter… but well, something)

In this very short period of time (bearing in mind 1 day meant few hours of work to me) I was able to put together very simple level loading system, animated character, raknet system for multiplayer (handled movement, animations ok enough) and some other stuff.

What went wrong
What I couldn’t get in shape: playable prototype. The most important part of prototyping is that you do something you can prototype. In retrospect, I can find that the main reason fort not being able to do playable (with some sort of goal, now it was just moving objects) prototype was this:

Using multiplayer library (raknet) meant some hours was spent making it work, and working on my own server-client system. Perhaps too much for a contest like this. It would have been okay, if I had earlier used the raknet library. Now it was too bit much work (for this prototype). Raknet is damn cool, and it made the difference that I even had any network system in place at all. It was hugely easy & fast to implement (just few hours), but for this prototype, it was few hours too much.

Second important thing was that I perhaps wrote bit too classy code. When I code, I nowadays usually try keep the code clean. I try get rid of useless methods, useless classes and keep things tidy. I believe that in all serious projects, that’s the best way to go. I’m too lazy to try clean the code just before the release.

But that’s quite wrong way to go with small prototypes. In prototyping, the code must be ugly, filled with bugs and smell bad. The shittier the code looks, the more copy & pasting you do, the better… as long as the code does the thing it’s supposed to do.

I think it requires talent to write messy code for prototypes. Refactoring & cleaning can come later.

What next time?
What is cool that I managed to try out raknet and even get it to work. That was the biggest thing for me. I could test the code with a buddies in different parts of this planet.

For the next prototype… I can consider writing smelly code, but it might be hard. I’ve spent more than half of my life writing/designing/thinking/doing-something code related stuff, and going back to very messy coding (even for a short period of time) can be difficult.

We’ll see.

While waiting new Infected art, I made this

My Infected card game is getting new characters and more art. While waiting for art to finish, I participate in 7dfps.org challenge (some claim it’s ended, but I’m on day 3 now, after realizing nobody said it’s “one week challenge”…).

Here’s what I managed to put together yesterday:

9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 0 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 8 8 8 0 8 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 9
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9

Looks pretty damn good don’t you think?

Since some ppl prefer 3D over ascii, here’s a screenie on how it looks in-game

Bastard traitor zombie, #7dfps and some zoo information

The 7 day FPS challenge has begun. To those unfamiliar with the subject, check out 7dfps.org.

Challenge begun a few days ago.

And so did neighbour renovations. It’s bit strange to sit in toilet, wearing those anti-noise things you put on your head, while the floor is shaking. This took 2 days.

So, this means first 2 days of my 7 day project went traveling. We traveled with kids around the city and I was so exhausted couldn’t get anything done for the project. Well, a bit of thinking happened, but not really much anything.

(Off-topic: I learned that group of 3-5 year old kids in one small place… it’s… it’s like monkeys in a zoo. Except there’s no fences anywhere. It was crazy action. One kid hide under some stuff, one other kid threw stuff around and 3rd one tried to jump on top of the first one. I’m surprised everybody got there alive.)

Anyway, back to the FPS challenge topic.

3rd day: I was about to code, when I got super nasty headache. I believe I have some sort of air pressure meter there. When thunder storms approach, my head hurts. So, 3rd day went there, nothing done. Couldn’t even think.

Now we are in day 4. I knocked together a page for my game (due time constraints I spent about 2 seconds thinking the name), put together some existing old code, threw in raknet and got server & client running there.

So, looks like I have bit of catching up to do… but we are good to go.