Month: August 2014

What is “Fun” in a game?

I love the following definition of fun, as I find it matches perfectly my own game experiences. You can find the original reference here, with link to the MSc thesis of the person making this conjecture:

[…] enjoyment is based more on proximity to a performance “sweet spot” just past the win/loss threshold rather than on learning effects. Combining my results with Kevin Burns’ information-theoretic model for enjoyment , I conject that “fun” is based on goal-satisfaction under the conditions that the desired outcome is uncertain.

This is very important to know when designing a game. MUDs I use to play come to my mind: even though they were technically simple, they managed to hook generations of kids (and “less kids”) for years, hours over hours every day, just because they wanted to reach a final goal (being the most powerful, usually, but also social power in certain cases, or ascending to “Immortal-level”, ie becoming part of the MUD staff).

That was only one side of it of course: whenever the game administators decided to make certain goals more accessible (for example by probabilistically uniforming all combat styles, such that whatever style you choose would bring you, eventually, to perfect parity with any other opponent), usually many players stopped having fun and left. Same goes for promoting people to staff level too freely: they abandoned the game quickly after.

It’s a good lesson, one many game administrators know by heart maybe, but repetita iuvant doesn’t it?


KryoNet: very fast and easy to use network library

I’ve been experimenting a bit with this library and it’s a relief: I don’t have to maintain my own (crappy) one within ZenithMUD.

Easy to use, documented and very efficient, according to benchmarks I’ve found around. One can use the start() method that runs the library in a Thread and takes care of getting data from the connected clients and running user-defined actions on them, or just call the update() function in your own game loop (if you are more of a control freak :))

A good starting point, besides the README, is this Chat client-server example the author has provided.

Good job!