Category Archives: Programming

Day 2: Balancing and Rhythm

Now that I have (at least) solved my personally biggest gripe about Goldwingu, I’ll concentrate on something that is slightly more embarrassing from a game design point-of-view but slightly less embarrassing from a programmers point-of-view; balancing and rhythm.

As it stands now, Goldwingu has almost no rhythm to it. Balancing is purely just adding more stuff until the player or his machine croaks. The games needs to have rhythm to itself within a level and between levels. On the latter I’ve thought about adding a special level every 5 levels that really just offers a short breather and bonus points (and maybe a chance to calibrate your weapons).

Within a level I think the rhythm should be rising. It starts out slow and builds up, first slowly. On later levels the build up would reach absurd levels, dying down shortly before the end.  I wouldn’t put it past me that a level might contain a number of these build ups all within one bigger build up.  Done like this, the problem will seem almost trivial. I have a bad feeling this won’t be the case for real though. At least the order of the enemies (and shuffling of) will need thinking.

Balancing is, thanks to the many factors involved, slightly less trivial to solve. So far I’ve made the following choices:

  1. I made the first enemy and its bullets faster and more numerous.
  2. The difference between players ships speeds isn’t uneven. Currently the relative speeds are: 0.004, 0.016, 0.032. I just know I’ll get sleepless nights over this…

Part of the balancing is also the rewards, which includes the blessed explosions, plenty to tinker there. Also coming up are achievements or medals, which will provide a way to get better weaponry and equipment.

Day 0: Better Explosions!

I fire up Eclipse once again. Nothing has been gained so far and all my losses have only made me mad! But getting mad doesn’t mean you should lose your eye on the target. There is much to be done and multiplayer campaign mode is one of them but you have to start with essentials, better explosions.

When humans have a basic need for seeing that they make a difference in the world, the enjoyment a computer game can provide resides on its ability to give that feeling. When the most frequent form of interaction in your game is: push of a button -> the ship representing you emitting a bullet -> said bullet hitting an enemy -> explosion, it pays to make that interaction as rewarding as possible.

That means better explosions! Shit must get broken! This is what happens in the original Goldwingu, but it isn’t enough, it’s just random movement of the pixels that made up the enemy ship, there is no apparent force behind it. Better explosions should give you:

  1. An application of force (e.g. acceleration, perhaps affects on other entities)
  2. Awesome display of the color range from bright yellow to dark red.
  3. Badass sound effects.

Right now I’m concentrating on #1, with the others following in that order.

When Life Hands You Lemons, You Reboot.

I took a six-month-long leave of absence from my less than satisfying and respectable day job. Now I have pretty much all the time in the world to see what I can make out of this. I really have no excuses, I have the time and sustenance and skills as well (or the ability to aqcuire those skills).

Other than excersing body and mind I will come up with at least one game and publish it. I really don’t expect anything other from this but the satisfaction of creating something real and maybe a work example/experience.

I’m also planning on documenting the whole process here on my blog, tagged properly.

As my day job slips farther and farther away from actual software development, I’ve come to face a decision. Either I get myself a project or I slowly become an alcoholic. I’ve chosen to get myself a project.

I’ve used better part of this Sunday to setup a development environment in my old work laptop. It’s a fairly meaty machine so running Linux on it is no problem. Installing Linux was no problem either. I had an Ubuntu disk image I had downloaded earlier, I downloaded an USB installer-maker and now I have a USB stick from which I can install an Ubuntu. Now I have a laptop with an Ubuntu, Eclipse with PyDev (and PyGame) running nicely.

…Annnnd now I have also a git-plugin setup to work with my Eclipse. I almost feel like developer now!

One main reason for this post was to also capture the nice date that we are having. You might also want to check out the permalink for this post, I hesitated to give this post a subject line that would have erased it.

Finnish Game Jam, Pt.2

Okay, the jam is almost over, our game is finished. Fire! To deadify! Your rivals! I am quite satisfied what our team of three accomplished in just 48 hours. We hadn’t met before and there was nothing ready before the jam. I felt it kind of unfortunate that I, almost immediately after the theme for the jam and the voluntary accomplishments were announced, came up with the game idea.

Unfortunate in the sense that in a happening like this, it might be a bit risky to hang yourself on an idea right-off-the-bat. Fortunately the idea carried us to the end. And stop reading this and try out the game!

On Nerds

As part of my work duties and my past academic record, I’ve come in contact with many a person that are referenced as nerds. By themselves too I might admit. This experience lends itself for me to make some observations on the nature of these people.

I’m not a nerd. There would be some notoriety in being but I’m not. My life is a collection of being in the middle, not quite this or that. This has some drawbacks and advantages, among the latter might be the ability to make observations one otherwise couldn’t.

Many nerds seem to be interested in language but language as a system. As a collection of rules and exceptions to those rules. I’m also interested in language, but mainly as a vehicle for meaning, the different ways to portray the same meaning and different meaning with the same apparent utterances.

I think this fascination with rules explains the interest many nerds have with programming. Programming languages are a far cry from the vagueness of human language. My interest in programming is mostly pragmatic, it is a means to an end. Most computer games, even today, are still written in programming languages. If you are interested in realizing computer games, it pays to know programming. I also enjoy solving problems, which programming ultimately is.

The supposed onsocialness of nerds is a muddier issue. Some nerds are as sociable as consultants. Some seem to lack certain confidence that translates in some minds as awkwardness in social settings. Some possess some esoteric interests that might translate poorly into conversation topics in a more broad setting. I like to think myself as socially adept, I have a broad range of subjects I’m somewhat familiar with, I have a quick mind although I have certain hang-ups, I’m not going to go in detail here. Although I’m not that drawn to people as such, I find you humans genuinely interesting.

Technical Decisions

I have been thinking about more practical issues concerning my apprentice-project. I have always thought that something like this should be made in Java to allow as wide an availability as possible. I also think that something like this should be made as easy as possible to produce, even at the cost of efficiency. Especially since this project isn’t primarily meant to display my mad coding skillz. And there are plenty of computational resources on todays computers to squander.

Being as easy on me as possible means that I want to make use of existing components as far as possible. This means they have to be fitting licence-wise. Fortunately this doesn’t seem to be an issue for me, since most these components are released as Free software or at least Open source. I have been looking for a physics and a 3d-engine.

ODE (Open Dynamics Engine) sounds suitable for my needs, only it isn’t in Java. Versions of it do exist for the 3 major platforms, so I don’t consider this a major problem. It’s usability with Java is an issue, however. There exists a wrapper (ODEJava) for Java that provides a bridge to allow it’s use in Java. As this is a work-in-progress the price is unstability.

For the 3d-engine I’ve been considering jMonkeyEngine which seems more than capable for my needs and is Open source as well. And seems to have a interface for ODE as well. I’ll have to set-up these things and get experimenting.