Blog

Dropping Snow

December 20th, 2012 (permalink)

I live in a house with a rather flat roof. This being Finland, that means said roof accumulates snow. Now, it probably could handle all the snow in the winter, but you really don't want to bet on it, so eventually there's enough of that white stuff there that you just have to go and drop it.

Dropping snow from the roof is not fun. It's physical. It's cold. It's wet. The safety harness isn't the most comfortable thing to wear. The life line always tends to be just a little too tight for what you attempt to do.

It's dangerous, and not in a thrill-seeking way. The roof is very, very slippery, meaning that, obviously, it's easy to slip, but also that it strains a lot of your muscles you don't usually use. You slip and fall on the roof, and you get bruised. You fall off the roof, and it's probably worse - haven't tried that one yet.

But.. there's something into it.

After working for a while, you develop techniques. You learn to chop chunks of snow without breaking them. You learn how to push them down the roof; push hard enough and you can do it far away from the edge.

Push just right, and the block of snow slows down, teeters on the edge, and falls over.

Or maybe it stops right there, on the edge. So you chop up another block of snow and try to push both of them over. Sometimes you succeed, sometimes not. So you chip another block of snow and give it a push. And another. And another. Suddenly you have a literal cubic meter of snow there, and regardless of how slippery the roof is, you know you can't get it to move.

So you chop up another block of snow.

Now, instead of just giving it a shove, you keep pushing it. It hits the other blocks of snow, and the whole mass starts to move, slowly, but move it does. You keep applying pressure, moving towards the edge. You know that if you stop, the whole thing will stop, and you won't be able to make it move again.

Which means having to chop it into pieces again, near the edge, and drop it down, piece by piece. Which is time-consuming, irritating, and it breaks your stride.

So you keep applying pressure. Eventually, the mass starts to drop over the edge, and you can feel the load getting lighter. It's an almost orgasmic feeling.

It's no wonder people fall off roofs.

Where Have All Speech Synths Gone?

August 21st, 2012 (permalink)

When I was a kid, we had a Bondwell CP/M machine that sported a speech synth that was 1:1 with the one used by U96 in their hit "Das Boot". We also had a Datel Vox Box for our zx spectrum 48k. Later I remember reading an ad on a trade magazine about a single chip speech synth solution so you could make your coffee maker speak.

This was, like, 25 years ago.

You'd think things would have progressed since.

Couple years ago I did a study on what's going on with speech synths, even did a presentation about it at school. Long story short(er), very little has happened.

Speech synthesis can be split into two discrete problems: the synthesis itself (which I'm interested in) and text to speech. Everybody seems to be concentrating on the text to speech part: plenty of publications, books on speech synth are 90% on TTS and mention some random things about the synthesis part.

This isn't because the synthesis is a solved problem. I suspect the situation is (still) such that nobody knows how to do it properly and is embarassed to state what they think is right as fact.

There's three main schools of synthesis: articulative, formant and concatenative.

Articulative tries to model how humans produce sound, which is (not surprisingly) very difficult, but interesting in a research point of view.

Formant synthesis kinda tries to reproduce how humans generate voice, but skips all that virtual anatomy and instead modulates signals. I may be way off base here, but I'd guess you reach formant synthesis by staring at FFT transforms of people speaking and picking out the strongest signals. Maybe.

Concatenative synthesis glues together shorter or longer pieces of digitized speech. This can range from "Train is arriving to the platform ..THREE" to extremely short clips like diphones (maybe -> m|ay|b|e).

The most advanced speech synths basically combine formant and concatenative synthesis.

So what's happened during the last 25 years? Most advances have been in storage: while the databases were tiny (definitely less than 64k - probably less than 4k) back then, we're talking about gigabytes today. Result is that some "speech synths" sound perfectly like a human until you reach a word that's not in the database..

So anyway, I would have expected there to be tons of source code for simple speech synths around, but this is not the case. Most speech synths are proprietary, and can be very, very expensive.

On the open source side we have mainly Festival, and its little brother flite. Festival is a rather heavy, research engine; I haven't checked if flite is easy to integrate (at least it has a sane license). Then there's espeak, under GPL, the MBROLA project which forbids use of their databases outside its own tools. There's a list of some others here, I haven't gone through all of them. One fun project is this 1k javascript speech synth, too bad its output is completely impossible to understand.. =)

Basically all operating systems provide some kind of speech synth, but it's kinda sad that there's no small, understandable, free speech synth source code out there. Kinda like the one I had on that CP/M machine. Too much to ask for?

Gear

July 27th, 2012 (permalink)

I've accumulated all sorts of development gear over the years, generally speaking to cover all sorts of game development related tasks. I don't claim to be expert on everything, but I want to learn bits about everything, if for no other reason, then to be able to communicate better.

It also means I'm better prepared for solo game development contests, but hey, that's a side effect. Not that I've even entered in any in ages.

Anyhow, I figured some people might be interested in my choises. I'll cover both hardware and software. I have a policy of not using any pirated software, so everything I've either bought, begged or gotten as a present.

Computer

A intel i7 PC with a nvidia graphics card and two monitors, running 64bit win7. Wife's computer is similar, only with an amd graphics card so I can test stuff if needed.

The exact makes and models don't really matter - you could come and swap my cpu and graphics card and I'd probably never even notice.

Microsoft Natural Keyboard Pro (which is sadly no longer manufactured, but I have three of them).

Some logitech mouse

Some logitech speaker system, although I prefer using headphones

Some logitech webcam

Putty, spotify, firefox, skype, dropbox, openoffice (esp. calc)..

virtualbox to run linux in a vm with hw opengl

Code

Visual studio 2010, no additional plugins.

UltraEdit (lightweight plain text editor)

Very sleepy (profiler)

cppcheck (static code analysis)

For a hobby, I usually code in c/c++ and typical libraries include OpenGL, SDL, cml.

Graphics

Adobe Photoshop. I've written some plugins for it.

A6 Wacom tablet which I rarely dig up, mostly doing graphics with the mouse.

Canoscan LIDE flatbed scanner

Some canon powershot digital camera

For 3d, I've used blender, but it's been so long since I last used it, I probably wouldn't know how to use it.

Audio

Audacity (sample editor)

Renoise, Reaper (tracker, sequencer - music making programs)

NI Komplete8 (virtual instrument collection)

SFXR (sound effect generator)

Alesis Q49 USB midi keyboard

Sennheiser HD25SP headphones

Evolution Shooter

July 2nd, 2012 (permalink)

First off: if you any way can, give Viridian a hand. Like a job. Or a contract. Something.

So. Evolution shooter. Some time ago I realized I'd spent all my free time by running through game after game on steam. I still have a bunch I haven't played, curse you steam sales, but I felt I had to start doing something.

I gave the codecademy thing a whirl, figuring it would be something resembling of productive behavior. What I found was repetition, sweatwork, broken correctness tests - it totally feels like school. I think it may be good for people who have never programmed, but for the rest of us, it's rather tedious. Still, I know more about javascript now than I did before trying that out.

Then I figured I might as well see if one idea of mine works. And it does. Announcing (and hoping announcing it doesn't kill the project, like it usually does for me), the evolution shooter:

In evolution shooter, the enemies evolve based on genetic algorithm. Basically, best N enemies are selected from each wave (based on some criteria), and these are used to generate the next wave (by copying each M times and then running a mutation pass over all of them).

There's some constraints to make sure the game doesn't break, but apart from that the enemies are free to evolve towards being easier to hit or harder to hit, and yes, they tend to become tiny, strong, fast bastards. Of course you can try to fight that by keeping the weaklings alive as long as possible.. but that becomes a bit hard when there's enough firepower =)

Several people have mentioned that they love the powerup shop, and I've told them, like I'll tell you here, feel free to steal the idea. It was one of those "obvious" things that streamline the gameplay. I don't even claim that it's an original idea.

In any case it's still quite a bit work in progress, but that prototype already shows the idea works. And I find it rather funny that the player's ship evolves through intelligent design..

Finally, here's some Recent Search Terms.

best development environment for ludum dare

Whatever you're most comfortable with.

death rally remedy opensource

Unlikely.

heightmap sphere generate from code

Damn it, you're right, I never ended up doing that. Gotta try it at some point.

how to create a tunnel effect on a wall

The first thing that came to mind was some kind of cartoony thing where you paint a black hole in a wall and someone believes it's a tunnel and hits the wall.. no idea what the searcher was looking for, though.

i want a model so that i can draw my own stuff in it

Eww.

is there a way to see if someone is using hacks in a game

Depends. Sometimes, no. Sometimes, if the hack is not subtle enough. You can do statistics, spy on certain users somehow, run parallel simulations, etc. But if the hack is subtle and purely client-side, it may be impossible.

puppy ascii

Found this with a google search:

              __
         (___()'`;
         /,    /`
   jgs   \\"--\\   Joan Stark
sandwich illinois sunsets

What.

so you want to make an android mmorpg

What's next, so you want to make mmorpg with pants on your head?

what game company is looking for mmorpg ideas

None.

which way is length width and height

You're kidding, right?

why does sol update recent search terms so rarely

This is obviously gaming the sytem, but I'll bite. First, lots of searches tend to repeat (and I hate answering those mmorpg queries, but it's hard to resist..). Second, there aren't too many interesting searches to answer. It seems like the totally weird searches no longer happen, which may mean that search engines are improving. Third, I'm lazy.

write a c program that simulates a guessing game. each turn you choose among nine possible guesses

...aaand here's your schoolwork question of the month.

RST update

May 14th, 2012 (permalink)

Someone noticed I had not posted recent search terms for a while, so I figured I'll do an update. Here's a sampling of the ~7400 keywords that have found this site recently.

"why" make your own 3d game engine

To learn. Doing a minimalistic 3d engine isn't all that difficult, actually. Then again, that's what they say about raytracers too, but I haven't managed to make one yet.

best awy to render alot of cubes

Bake the cubes into one primitive, so you can render lots of them with one draw call.

best way texture map sphere

I'd go with a cube map.

can we hack dll

Yes. A "hack" dll is usually a DLL that has the same signature (i.e, same entry points) as the "real" dll, which passes the calls to the "real" one, possibly changing some values from the program's calls.

can you code a windows application in c? winapi -"c++"

Yes. Microsoft has, in the past at least, been careful to enable using plain C in windows applications.

game why split render and tick

So that your game "physics" will run at the same speed regardless of the computer speed by skipping rendering (which, traditionally, has taken more time thatn the "physics").

how do you win death rally

Finish before the others.

how expensive is smoothstep

Let's see.

((x) * (x) * (3 - 2 * (x)))

I see three multiplications there. However, compared to whatever you're going to apply smoothstep to, this is probably rather trivial cost.

how much is it to rent a sandwich kiosk

Over 9000?

how to find amplitude and period

In your sampling, find the minimum and maximum value. That'll be your amplitude. The time between two peaks is the period.

how to make a sphere using paper

First, find a sphere you can use, like a football or glass sphere. Next, tear the paper into tiny bits. Boil the paper bits for a while, and then, while it's still wet, cover the sphere with the paper. Let dry. You may need to apply some glue, but I can't remember how that bit went. Anyway.

i finished my army service how can i write in my cv

Assuming you weren't doing anything classified, just write truthfully and you should be okay.

i have an idea for an mmo how to get started

Get lots of money.

i need to start my own mmorpg game

You have a problem telling needs and wants apart. You NEED food, water and air. You WANT a copy of the latest pop single.

i really want to make an mmorpg

That's better.

object hanging at rest from the end of a spring

Hangman?

sphere tessellation algorithm without duplicate edges and vertices

I suppose you could detect the wraparound in a shader.. or use a cubemap..

things you can do with bit shifting

Shift bits.

unique development studios source code

Lost. Forever. Gone. Assuming an employee didn't steal it before it was destroyed.

what can i use l-systems for

To generate content procedurally. Plants are an obvious use, but with some thought you can apply the same idea to whole cities, for instance.

what does r6030 crt not initialized mean

The runtime library gets called before being initialized. This may happen, for instance, when DLLs get initialized in a wrong order. It's tricky.

which is faster operation bitmask or left shift operator?

Depends. Benchmark it. In most cases, it doesn't matter.

why do full screen old games conflict with explorer direct draw

Microsoft messed up. Most likely they just don't care.

why turn head toward faint sound

Survival instinct.

why was let it snow written

If we only knew. Oh wait, why would we care? Possibly for monetary gain, anyway.

In other news, I started this little tumblr photoshopping modern game screenshots.

Unity iOS Game Development Beginner's Guide... and stuff.

April 25th, 2012 (permalink)

Holy crap, time flies!

First off, here's another Unity book review:

This book does what the title promises: it walks you through the beginning of iOS game development with Unity.

Most of the book contents are very detailed step-by-step instructions on how to configure various things to get Unity talk to your iOS device and the App Store, as well as using the Unity asset store as well as some other sources for ready material, and several common gotchas and solutions to them.

Assuming reality remains constant and Apple, Unity or some of the other third parties don't change their offerings, the step by step instructions should be more than sufficient to get you up and running in no time.

While the book does cover some basics of Unity and scripting, you probably will want to pick up some other Unity book (such as Unity 3.x Game Development Essentials) for more detail on Unity itself.

What I felt was missing from the book was that it did not cover device differences at all, nor do you get any idea of how complex content the various iOS devices can run. But that you'll probably learn the hard way pretty quickly. Some performance hints are given, as well as an overview of iOS-specific scripting interfaces.

I'd recommend this book for anyone who just wants to get up and running with Unity on iOS without having to figure out the toolchain themselves.

I also got my hands on another book recently..

For those who have seen my Ludum Dare survival guide, the contents of this book are eerily familiar. It contains basically all the advice I give, but expands upon them, shows statistics and survey data, quotes from various game jam veterans, etc.

If you're planning on entering a game jam (such as Ludum Dare), picking up this book might not be a bad idea.

Talking of Ludum Dare..

The 10th anniversary 23th Ludum Dare contest was last weekend. I didn't make a game, but I made a few graphs. Ludum Dare has grown a lot - there were over 1400 entries this time. That's a big number, but to really comprehend it, you have to do some math..

Back when LD had around 50 entries, it was entirely possible, and actually expected, for all entrants to try out all the games. At around 100, this became rather difficult, but still possible. I applied my "30 second rule" and chugged through all the games. Twice. Rating them on the second run. It wasn't fun anymore. It was more of a job.

Now then.. 1400 entries. If you want to rate all of the games, and you do 4 hours a day 20 days straight, you get around 3.5 minutes per game. Including any time spent downloading, installing and troubleshooting.

But hey, 4 hours is such a short time, let's say you take a month's vacation and crunch 12 hours a day. That still gives you only 10 minutes per game.

So Ludum Dare has to adapt and change. LD has, for a some time now, used a randomized list of entries everyone should rate - everyone gets their own random list, so if everyone rates just 20 games, on average everyone will get 20 ratings. Can't force people to do so though.. some games will get more ratings than others. More accessible games get more ratings, prettier screenshots get more ratings. Famous people get more ratings. Some people won't rate at all.

A few things have been done and others are being considered, to help with this. First, you get a coolness rating based on how many games you rate. Originally you'd get a gold medal if you rate all games, but that would be a rather herculean task so now you "only" have to rate some number of games. I'm not sure how many, but 100 would probably be a good guess.

Second, when you rate games you can list the games by the number of ratings they have. In the last LD, there was a great push to get at least N ratings per game, and it was successful.

Third, having the combined "competition and jam" adds more voters for both the jam and the competition games.

Lots of things have been offered as solution - reducing the entrants somehow, like requiring an entry fee, are out of the question - the #1 priority is to get games done. Opening voting for public would mean wrecking the ratings whenever some famous person enters. Kicking out people who haven't rated at least N games would just lead to garbage votes. And so on.

But don't worry, there are things that are being done. It'll work out fine.

Unity 3.x Game Development Essentials Book

February 1st, 2012 (permalink)

Just one more unity book for now =)

This is by far the best unity book I've had the opportunity to read. It's well written, easy to follow, and covers a lot of ground. Unlike other books, throughout the book only one example game is made, but the game is far more advanced than if the author would jump from one game to another.

The book goes through all sorts of unity features, including the landscape engine, particle systems, animation, ui, HUD, physics, scripting (in both c# and javascript) - actually, plenty of space is dedicated to scripting, including a chapter that goes through basic concepts like variables, functions and logic structures, but this is all done in a way that's not dumbed down by any means.

Towards the end of the book you can find descriptions of things often forgotten, including doing finishing touches, optimization, steps to publish on the web or standalone, and so on.

If you want to buy one book on unity, this, in my opinion, would be it.

So.

In other news, the Ludum Dare #22 results were published some time ago, and here you can see the results for my 4.8 hour game. #6 in theme, #20 in humour - not bad by any means!

Unity iOS Essentials Book

January 20th, 2012 (permalink)

Our book review series continues.

If you have unity and feel like trying your luck on the iOS market (iphone, ipad), you might want to take a look at this book. It covers the major pitfalls and offers workarounds, as well as giving ballpark figures of what kind of content the devices can handle.

The book does a good job at educating the reader about what's different in developing for a handheld, with its limitations and different controls.

On the negative side, the book could be slightly better organized. As it is, it seems to jump back and forth between really useful information and game design advice which does not necessarily apply to any kind of game. The book also talks about the making of a couple different kinds of games, explaining issues related to them, but could have benefitted from a bare-bones example that would have explained the whole development flow.

So, if you're a unity veteran, and want a reference that covers the limitations and workarounds of the iOS target platform(s), this book might be for you.

MMXII

January 10th, 2012 (permalink)

Where to start..

The new year rolled on, and the world's still here. The new years' was much calmer here than back in Riihimäki, and our dogs actually got it in a relatively relaxed manner. They don't like the fireworks that much. It was also nice to notice that those damn kids didn't keep on using fireworks after the new years' - in earlier years we've had to bear that fun for a couple of months. You're taking your dogs for a peaceful walk, and suddenly something explodes, and then you have a couple of panicked dogs to drag along. Not fun.

As a tradition, I don't do new year's resolutions, but this year I figured I'd try to do some things as self-improvement. And as such, on normal days, I'll try to do a little bit of each of the following;

  • Some form of physical exercise
  • Some form of music
  • Some form of writing

And I mean these in the purest checkbox form. Tap a key on a piano. Do a single pushup. Write something. Of course, I write something every day in the form of communication, but in this case I mean something.. more creative.

I've given myself plenty of loopholes here and it's by design. There are plenty of abnormal days, and sometimes I want to concentrate on one thing or another.

Now, the exercise has been conveniently provided by the snowfall that's finally here, as well as taking the dogs out for walks in less-than-optimal weather. Additionally I should remember to do my back-strenghtening moves, which I've let myself forget way too often.

As for music, I can't compose, I can't play, I don't know jack about notes or whatnot, but it's fun to play around, and I hope to learn. I bought a 100e USB midi keyboard a while back (Alesis Q49) and at the suggestion from my brother (among others), I bought license to renoise as well. The keyboard did come with a lite version of ableton live, and I did do some stuff with it (including sound to some ludum dare entry), but I think I have some kind of feeling of what's going on in the tracker format of renoise.

I may post links to some stuff I've managed to record. Maybe. At least if I can figure out how to embed oggs in some sensible manner. I've managed to play with music instruments a bit every now and then, sometimes with Niklas playing with me, other times alone.

Writing is something I'd like to get back at. It's been ages since I posted a story, for instance, possibly because unlike my other creative endeavors, I've rarely if ever gotten any feedback for my writing.

I've been thinking of starting a project writing down memories from the Fathammer era, also inviting memories from other fathammerians, but for some reason haven't managed to start. Part of it is that when leaving Fathammer, I destroyed a literal metric cube of notes which would have been an easy source for a book or two, so for most part I only have my memory to go on with.

Another part is writing about funny things without insulting anyone overmuch, including customers and work partners. And of course there are painful memories there as well.

I've been playing a bunch of games lately too. Dead Space 2 was a "more of the same" sequel, so get it if you have to continue the story. In the first game everything was new, there was plenty of mystey and so on, the second ties basically all loose ends, wrapping the dead space universe in a neat little box which means any further games with the same name will be just generic zombie shooters with nothing really special about them. Need zombies to shoot? Take your pick.. Evil god, virus, nanomachines, alien technology.. who cares, they're violent, brainless, anonymous and go into pieces when shot...

The steam sales came and went, and I surprised myself by not buying lots of games. Reason being, everything I wanted I already owned, or were still over 20e, and I can wait.

Still, I have a bunch of AAA titles already installed, so guess what I've been playing lately? A freeware visual novel/dating game called Katawa Shoujo, which translates rougly to "cripple girls". Note that the game contains plenty of.. well, "adult" material, so take this recommendation with several grains of salt. You can disable the most offensive material in the options menu though. If you like the genre, or are curious as to what's it about, do take a look. I haven't played much of it yet, but what I've seen has been excellent.

Visual novels are more or less like choose your own adventure games, where you've presented a situation and then a few options as to where to go. As these go, Katawa Shoujo doesn't give you a lot of options, but enough. And there's a lot of content in there.

Ludum Dare #22 came and went, and I managed to put 4.8 hours into an entry - one of over 700 in the contest - and as such I'm more than happy to get 6th position in theme and 20th position in humor (rather ironically, considering I've tried to kill that category several times now)..

I'll just leave you with a walkthrough youtube video of the game. It shows over half of all the content in the game.

(that's enough creative writing for the day..)