Subscribe to:

The Kiwi's TaleWitchBlasterDerelict Blow Stuff Up

Syndicate content

Derelict and more bees

Another dark and moody screenshot for Derelict.

One weakness I have noticed with Derelict is that there is very little incentive for comradeship. Often I find myself bolting one marine to the exit while leaving the rest to die. After all, more often than not there will be other survivors in the next level.

The fix I have come up with is to add "Experience Points" (Represented by the Rank Insignia you see in the Screenshot) to the Marines. The concept is simple, all Marines start with one XP increasing by one for each level survived to reach a maximum of five. There are four stats that are increased by leveling up, to a total maximum of 120% of the base level.

  • Accuracy (Increased damage to enemies)
  • Endurance (Decreased damage from enemies)
  • Agility (Walking speed)
  • Dexterity (Skills like repair, hacking, reloading and healing)

Also, today Anthony drew three great new enemies for WitchBlaster. A Soldier-Bee, a Kamaz-Bee and a Queen-Bee. Check them out!

I think these Bees deserve a whole game to themselves!

Instant Boss

Since starting contract work from home, I have been really enjoying my freedom to start and stop whenever I please - especially since my midcity apartment offers quick access to most of the places I like to go. At first though, I did have a serious problem with managing the blocks of time that I worked in.

Now, 96 minutes is the length of time I work for in a continuous block.

Why? Two reasons. One is that I have seen the suggestion around that humans begin to massively lose concentration after working 90 minutes straight (I am not sure if that theory has been objectively tested by any means, but subjectively at least it 'feels' about right).

The second is that five blocks of 96 minutes add up to eight hours, my complete day at work.

Instant Boss is a tool I discovered via LifeHacker that manages my work day. It's ultra light weight and works brilliantly. Just set the number of sessions, length of work time and length of break time, and you're all set. You can pause the timer whenever you want to, and also skip breaks if you'd like.

It has really helped me work without worrying about tracking time, I definitely recommend it to anyone working their own hours.

The Fantastic Mr Star Fox

Words just, fail me here. Absolutely brilliant.


Widescreen issues in Blitz3D

Remember the bonus graphics controversy from Bioshock, where widescreen gamers were complaining about having "less graphics" than fullscreen gamers? Up until now I have had a similar issue with all of my Blitz3D games.

In Derelict, for instance, this is how it currently looks in fullscreen.

Compare with the widescreen render of the same shot.

As you can plainly see, the image is more or less identical except we've lost the top and bottom. The problem is, by default, the Blitz3D camera is set to always have a horizontal field-of-view of 90 degrees. Therefore, if you widen the aspect ratio without widening the horizontal FOV, the vertical FOV (normally 73.74 degrees) shrinks.

I have partially resolved this problem in the past by shuffling the GUI elements closer to the center of the screen, but asides from making the GUI look squashed, you still lose vertical view without gaining horizontal view.

Fortunately, I discovered it is possible to set the horizontal field of view in Blitz3D. Here is the function I put together for correcting the FOV based on aspect ratio (derived from the work of Blitz programmer Sswift).


Function FixCameraFOV(Camera,xres,yres)


Local FOV# = (2*ATan(Tan((73.74)/2)*xres/yres))

CameraZoom Camera, 1.0 / Tan(FOV#/2.0)


End Function

The result of this can be seen below, and all of the GUI elements are placed exactly as they are in fullscreen. The area outlined in red is the new area that couldn't be seen before.

The horizontal FOV has been flushed out to 100 degrees, not a huge difference but it's good to have a little more peripheral vision without losing any vertical view. Out of curiosity, I decided to simulate having an extended desktop environment with three widescreen monitors. This is the result.

The horizontal FOV has been extended to a whopping 140 degrees, wider than the viewing angle of human vision (120 degrees). Unfortunately this causes some graphical artifacts and fisheye distortion at the edges, but we can see how useful this view would be in a heated combat scenario.

Edit - Just for the record, since the viewport at the end of the view frustrum is a flat rectangle, an almost infinitely wide monitor would have a viewing angle of 179.99999.. degrees. As far as I know it's not possible to render anything behind the camera.

Derelict update

Although I haven't had much spare time to work on it, progress on Derelict is going pretty well. I had an extended playtest session on the two player co-operative mode on Saturday, and it went much better than I had expected, so it almost feels ready. I expect to have the next revision out in a couple of weeks.

Two recent changes are demonstrated in this screenshot. One is a Call of Duty esque damage indicator showing the direction which you're being attacked from. The other is a new set of textures (that came from a free model pack on the Blitz3D forum) which give the ship a much better look and feel.

Also, Anthony did a cool bee for WitchBlaster on the weekend (though I haven't implemented it in the game yet). Check it out:

MSPaint.exe as raw audio

Maybe it's just me, but it has a distinct SID chip-esque sound to it.

Autonomy, Mastery, Purpose: The keys to a compelling game?

A few months back I watched a TED talk by Dan Pink on the surprising science of motivation, and I'm still pondering it today. To surmise, the talk suggests that three key elements are required for successfully motivating workers to their full potential:

  1. Autonomy
  2. Mastery
  3. Purpose

Which made me think - assuming the content of the talk is accurate - that the three elements are applied just as effectively to game development as they are to work. After all, a good game is merely one that compels a player to invest time in it.


My perspective on the three elements, in regards to games is:


Autonomy could be considered the "play" of games. Games with great autonomy drop the player into an elaborate, interactive, sandbox environment and let them explore and play their own way at their own pace. Games with greater autonomy still allow the player to create their own world and run it their way (Of course, games don't need to be that elaborate to have autonomy, simply allowing the player to progress through certain challenges in a non-linear order may be enough). A perfectly autonomous game will allow it's players to return again and again to make new discoveries, create new works and enjoy new experiences every time.

Mastery could be considered the "fun" of games. A game that is too difficult is frustrating, one that is too easy is boring. But a truly fun game is one that challenges the player in a gradual slope, forcing him to improve his skills along the way. I can't really say any more on this topic that wasn't already covered better in A Theory of Fun, so I suggest you read that.

Purpose could be considered the "rewarding" aspect of games. Games allow us to have thrilling experiences that we couldn't hope to have in real life, from flying dangerous vehicles right through to rescuing a Princess. They also allow us satisfaction of conquest when we can finish them. Sometimes they even offer more tangible rewards as tokens of our achievement, like collectible items, beaten speed run challenges, and of course "achievements".


So, that's my two cents. Thoughts?

Bill Gates in Doom

"Don't interupt me."


WitchBlaster in Monkey

The first public release candidate of the Monkey build of WitchBlaster is out, with both HTML5 and Flash flavours. This is now a 100% complete port of the Global Game Jam 2010 entry, with various enhancements. Most importantly, Anthony Lau has done a fantastic job on a new Witch sprite with dynamic animations. Please let me know what you think.

Edit - This is now the 'canon' version of the game. The old downloadable version is no longer available.

Edit 2 - It's also now available on the official Monkey App "Store" here


Monkey, the newest addition to Mark Sibly's much loved BlitzBasic series of languages, has just been released to the public.

Like BlitzMax before it, the language of Monkey is a Basic dialect that incorporates simple object orientation with classes, methods and inheritance. However, what makes Monkey special is the sheer number of platforms it can be used to create applications for. And all from a single codebase - write once, run everywhere! This includes, but is not limited to:

  • Windows
  • Mac
  • Linux
  • Flash
  • HTML5
  • Android
  • iOS (iPad, iPhone, iPod touch)
  • XNA (Windows, Windows Phone 7, XBox 360, Zune)

Unlike other development kits that target multiple platforms, Monkey does not compile. Rather, it translates into other languges, and you use the tools for those languages (Visual Studio, Xcode, Flex SDK etc) to do the compilation. This also allows you to make platform specific tweaks for the applications you develop, rather than being locked into the lowest common denominator of functionality.

The full Monkey application is $120 US. However, there is a free non time limited demo available, which you can use to develop non commercial HTML5 applications.

(P.S. I made an HTML5 and Flash port of WitchBlaster in a dev version of it months ago, but I'll see if I can get a more complete version of it up in the next few days)