Kobo Redux – Full Steam ahead!

Steam Early Access

As you may know, Kobo Redux was Greenlit last month, and the plan is to make it available on Steam Early Access as soon as possible. However, for legal reasons, the current version of the game code cannot be distributed through Steam, which means I have some work to do before that can happen.

Kobo Redux Greenlit!

Legal and technical issues

More specifically, the GNU GPL is incompatible with Steam, and I’m not in a position to grant Valve an exception, or provide the game to them under an alternate license. On the technical side, I’m making substantial changes to the game logic code, and I’ve also started running into issues that call for a fair bit of redesign and refactoring, as well as things that are simply not handled nicely in C++.

The solution

With these legal and technical issues in mind, I’ve decided to simply remove and rewrite the offending code, killing a bunch of space ships… I mean, birds with one stone. I’ve also decided to incorporate a proper scripting language, EEL, which is safer and friendlier than C++, and doesn’t need external development tools. EEL will be used for the new enemy and level definitions, and later also GUI code, game management, configuration files, theme files, level editing tools etc.


This is not all about avoiding legal issues or saving my hair, though! As a side effect, EEL will open Kobo Redux up to serious modding, way beyond graphics themes, without necessarily hacking the C++ code. It will likely be possible to add new enemies, new weapons, new level types, and new game modes, using only EEL script.

In the meantime

Since there is a bit of work to do before there is anything interesting to release with the new game logic, there will be one or two intermediate releases on itch.io, based on the current code base. These will deal with visual effects, graphics, and other things that are unaffected by the game logic rewrite. Some things I have in mind:

  • A third fire button, to avoid accidentally firing the wrong weapon
  • Improved health and charge bar graphs
  • Bigger playfield view
  • Realtime explosion/fire/smoke effects


Posted in Development, Kobo Redux, News | Leave a comment

Everything changes. Kobo remains.

What happened?

Although things haven’t quite turned out the way I would have liked, quite a few things have happened around here. However, apart from the usual random noise over at Twitter, I’ve maintained a rather low profile, as I don’t like to talk a lot about vaporware and long term plans.

Kobo IILong story short, Kobo II was too ambitious a project, especially considering that my “in-house tech” (EEL, Audiality 2 and ZeeSpace) was not ready for business by a far stretch when I started out. Things were taking too long, and I had to start taking on contract work to make ends meet, which of course slowed things down further.

I eventually stopped doing contract work, and sort of accidentally ran into a nice, local job instead. (Low level DPI stuff. I hack code that touches your data! ;) ) I figured this would at least give me slightly more time for game development, but I still decided to reschedule things a bit, which in hindsight, has turned out to be the right decision.

InfilterionI started designing Infilterion, a game with more “retro arcade” feel to it, and 16 bit style pixel art, rather than the procedural/structured ZeeSpace ultra-HD graphics I planned for Kobo II. You’ll be sabotaging bases from the inside, using a small, remote controlled drone. The gameplay I have in mind is some kind of blend of Kobo Deluxe, Paradroid, and Gauntlet.

First, however, my XKobo port, Kobo Deluxe, that I’ve been working on sporadically for too many years now… It’s about time to finish it! I initially intended to stay as true as possible to the original, but now my goal is to turn it into a smoother, less frustrating experience, with a more polished look and feel. The result is Kobo Redux, a commercial game running on a Free/Open Source engine. The engine, based on the Kobo Deluxe code, comes with Free themes, making it fully playable without any proprietary data.

Kobo Redux

What’s going on?

What’s happening right now is that I’m working on the final tweaks, fixes and features in the Kobo Redux code base (all public on GitHub), as well as the 16 bit arcade style graphics and soundtrack that will come with the commercial release.

What about Kobo II?

Kobo II will be picked up again when I have the time and resources to turn it into something I actually want to release. However, since it uses Audiality 2 and EEL, the work being done on those, for Kobo Redux and Infilterion, helps bring that point a bit closer. I will probably make occasional minor Kobo II releases along the way, just to keep the code base in sync with Audiality 2 and EEL.

Of course, the Kobo II Tech Preview licenses sold so far remain valid! As a small compensation for the huge delay, Kobo II licencees will also receive the commercial version of Kobo Redux as soon as it is released.


Posted in Development, Infilterion, Kobo II, Kobo Redux, News | 3 Comments

Random Olofson Arcade update

Although it’s been very quiet from around here lately, I’ve been back up to speed for a while. So far, I’ve mostly been cleaning up, refactoring and dealing with some more or less critical engine issues in EEL and Audiality 2 that I want sorted before I release anything again – but after that, there will be a minor Kobo II update (mostly just moving it to the latest engines, along with some bug fixes), and then I’ll dive into Infilterion properly!

For now, here are some temporary pixels from Infilterion:
I want it shinier and a bit more detailed than this, and the player should perhaps not be the same color as the floor – but you get the general idea…

I’ve also been having some fun with the Emscripten SDK:

Fixed Rate Pig
My ancient Fixed Rate Pig SDL programming example – now in your browser!

Audiality 2 a2test running in a browser
‘a2test’ running in a browser! Awful latency and will probably eat your CPU alive, but that’s actually Audiality 2 doing scripted realtime synthesis in the browser.


Posted in Development, Infilterion, Kobo II, News | Leave a comment

Operator Precedence Considered Harmful

OperatorPrecedenceConsideredHarmful at Cunningham & Cunningham, Inc:

Almost every ProgrammingLanguage supporting InfixNotation for expressions has extensive OperatorPrecedence levels. This outgrowth of the mathematical origins of programming languages has been the cause of countless bugs. The problem with operator precedence is that it’s yet another thing a programmer has to memorize about the language he’s using. And since the precedence levels for each operator vary from one language to another, it’s easy to see why this can cause so much problems.

Of course, this has never bitten me… *cough* But, “accidentally” creating a simple scripting language without operator precedence for Audiality 2, I realized I didn’t miss it one bit! In fact, having strict left-to-right evaluation just makes code easier to read and write, because the code simply does exactly what it says. No implicit behavior. Parentheses are the only way things can deviate from the left-to-right rule, and that’s pretty clear and obvious.

So, now I’m going to do something drastic:

As of 0.3.7, I’m removing operator precedence from EEL!

As a temporary hack in 0.3.7, I’ll have the compiler issue warnings whenever an expression would have been evaluated differently with operator precedence enabled. I’ll probably also add a temporary directive ‘noprecedence’ to disable this warning for modules that have been updated, so we can rely on warnings to ensure that all scripts have been updated.

See also the issue on GitHub.


Posted in Development, News | Leave a comment

More on Infilterion and Kobo II


Why Infilterion?

  1. Kobo II is too different from Kobo Deluxe. As a physics based twin stick shooter, it’s almost in a different genre.
  2. Smart AI is hard to implement reliably in the free-form, physics based world of Kobo II.
  3. I intend Kobo II (or whatever it’ll be called) to be a razor sharp HD experience with a level of detail rarely seen in any kind of game. The only realistic way of achieving that without a big team of artists is procedural structured graphics.
  4. Procedural structured graphics is mostly uncharted territory, and I need more time to develop effective tools and methods.
  5. In short, I could spend another year hacking engines and tools – or I could develop a game!
  6. I’d like to have a serious go at pixel art! Haven’t done much of that since the Amiga days.
  7. It would be nice to have another highly portable game with reasonable hardware requirements.
  8. I have a clear vision for Infilterion, and the design is pretty straightforward.
  9. I had plenty of ideas for Kobo Deluxe, but Kobo II was too different for most of them to fit!
  10. Retro games with pixel art seem really rather popular these days…

What is Infilterion?

Nothing much yet; just some notes, a 64 color palette (you wouldn’t believe how much work it is to create one of those…!), some concept graphics, a logo – and a pretty detailed vision of what I want to achieve.

Oh, and most of the code is already written. The EEL scripting engine with its SDL and OpenGL bindings, the Audiality 2 sound engine, and the Kobo II “engine” script code, GUI toolkit, configuration dialogs etc, pretty much cover everything.

So, this should be more like developing a game in Flash or Unity than coding it the hardcore way. A bit like my old Ludum Dare Jam entry, The Grumpy Pinball Ball, which was done in 72 hours, using an older version of the “K2 executive.” And, that included coding an isometric 3D engine and some 2.5D physics, because I didn’t have any of that… (Stupid design decision – but I had fun!)

No, I’m not planning on finishing Infilterion in 72 hours. I’m not planning on working on it for 72 months either, though!

When will Infilterion be released?

When it’s done.

Seriously though, I plan on finishing the game before the end of 2014. If the game turns out to have great potential, or if my pixel art or music skills turn out to be insufficient or whatever, plans will be adjusted accordingly – but there are no showstoppers here. If all else fails, I can afford serious professional artists these days.

What about Kobo II?

I want to finish it when ZeeSpace has matured enough to pull it off. That means the ZeeSpace 2.5D rendering engine itself, and a proper authoring tool to go with it. These are no small projects, but I really want to finish them eventually.

Wild speculation: What was going to be Kobo II will become Infilterion II, with gameplay elements from both Kobo Deluxe and Infilterion, fused with shiny HD graphics, epic soundtracks, and physics based twin stick single- and multiplayer action.

Infilterion specifications

Obviously, this is all in flux – but then again, I can’t keep changing and redoing stuff all the time, so I don’t think I’ll deviate all that much from this:

  • Graphics:
    • Hand pixeled, Amiga/ST “shiny” style.
    • Global 64 color palette.
    • 640×360 (16:9) native resolution.
  • Fullscreen resolutions:
    • 1280×720 (2x)
    • 1920×1080 (3x)
    • 2560×1440 (4x)
    • 3840×2160 (6x)
    • (Other resolutions are supported with black borders.)
  • Screen layout:
    • Dashboard with playfield, map/radar and info/chat views.
  • Sound:
    • Live synthesized music, weird noises, and massive explosions.
  • Multiplayer:
    • Of course!
  • Chain reactions:
    • Well, Infilterion is supposed to appeal to Kobo Deluxe fans, so…
  • Physics:
    • Maybe, but not so that you can really tell it’s there.
  • License:
    • EEL, Audiality 2, ZeeDraw etc are all LGPL or zlib already.
    • The GUI toolkit, config dialogs and other handy scripts will soon be released under zlib, along with EEL.
    • Graphics, sounds, music and level data will be proprietary.
    • The full game script code will be released under the GPL.
  • Platforms:
    • Windows (Primary target)
    • Linux (Development)
    • OS X
    • SteamOS
    • OUYA
    • Android
    • iOS
    • AmigaOS
    • …and anything else anyone decides to port it to!

(See also The Saga of Kobo continues.)


Posted in Development, Infilterion, Kobo II, News | Leave a comment

The Saga of Kobo continues

I may have reached a breakthrough in the saga of Kobo (Kobo Deluxe, Kobo II), suddenly realizing where all those stray bits of inspiration belong.

For various reasons, I’ve already decided to go back to the original plan for Kobo II, which includes structured/procedural HD graphics through ZeeSpace, and a lot of focus on physics. I just don’t see Kobo II turning out as something relevant and interesting without that technology. The world doesn’t need Yet Another Twin Stick Arena Shooter, and with the current engine, that’s pretty much all Kobo II could be.

(Well, maybe the world does need YATSAS? A really polished and well balanced one. But that’s a different story, and a different game.)

So, what’s new? Well, it looks like I’m abandoning the little retro sidescroller project I was planning on releasing in between. Instead, I’ve started designing a more true and more retro sequel to Kobo Deluxe: Infilterion.


The basic idea is that we get to experience Kobo Deluxe from the perspective of an infiltration droid – The Infilterion. This remotely operated droid is sent in to infiltrate and destroy bases from the inside, as a (hopefully) more effecive alternative to the brute force Kobo Mk1/Mk2 attacks that we used to resort to.

A bit of Kobo Deluxe, some Xenon, plenty of Gauntlet. Maybe not so much of the physics feel of Kobo II.

And, retro styled graphics. I’ve started playing around with the C64 palette (16 fixed colors), aiming at a “native” screen resolution of 640×400 (320×200 fullscreen mode pixels on a 30″ screen are… big), but that might evolve into something closer to Amiga/ST style. But first, gameplay and levels!

Registered Kobo MkII pilots will automatically be admitted to the Infilterion program.


Posted in Development, Infilterion, Kobo II, News | 1 Comment

Audiality 2 – Now on GitHub!

As of a few weeks back, Audiality 2, the sound engine of Kobo II, is hosted on GitHub! This means anyone interested can now track the latest developments, and browse the tickets to get an idea of what’s coming down the road. The license is of course still zlib, meaning that the engine can be modified and used free of charge for any purpose, even in commercial closed source applications.

Audiality 2 is a realtime audio and music engine, primarily intended for video games. While it supports traditional sample playback as well as additive, subtractive and granular synthesis, the distinctive feature is subsample accurate realtime scripting.

Some of the changes since 1.9.0:

  • Subvoice spawn and event timing fixed – now truly subsample accurate! (For granular synthesis etc.)
  • Added generic stream API for wave uploading, audio streaming etc.
  • ‘filter12′ no longer blows up at high cutoffs.
  • ‘filter12′ supports 2 channels/dual channel mode.
  • More accurate pitch control in ‘wtosc’.
  • More logical unit autowiring: Now wires outputs to any inputs down the chain by default; not just the next unit.
  • ‘run’ statement removed.
  • Comma as a statement delimiter now deprecated.

Next few upcoming changes:

  • Command line player.
  • Boolean and comparison operators.
  • Normalize, crossfade and reverse mix processing for wave uploads.
  • Render-to-wave, for creating complex waves.
  • Buffered taps/inserts, for easy implementation of GUI oscilloscopes and the like without realtime callbacks.

Official site: audiality.org

Kobo II: kobo2.net

See also: Audiality 2 1.9.0 – Refactored, renamed, rearmed!


Posted in Development, Kobo II, News | Leave a comment

2012 postmortem and 2013 goals

Over at the indiegamer forums, we have this annual tradition of someone starting a thread where we report our activities and progress during the year that passed, and our plans for the coming year. This is an adaption of my post.

So, these were my goals for 2012:

  1. Add more fun and do more marketing for Kobo II, to hopefully sell more than symbolic numbers to mostly Kobo Deluxe fans.
  2. Actually make some money, one way or another. More contract work, most likely.
  3. Get a proper toolchain for ZeeSpace going, for less work, better results and smaller downloads.
  4. Find or write(!) a simple but effective Linux MIDI sequencer that doesn’t crash all the time, or just frustrate me to no end. The state of these things is just ridiculous…
  5. And, well… I dunno? Anything fun I can come up with, that might make some money, directly or indirectly.

And, the results:

  1. FAIL – I did release three tech previews that were increasingly “playable”, but didn’t get anywhere near what I had in mind. “Lost” at least half a year to engine coding and…
  2. SUCCESS – …contract work! So, at least I’m not bankrupt. Things are going to take even longer than originally intended – but I’m still in business.
  3. FAIL – Basically gave up on structured/procedural graphics for this game at some point, as it just seemed to require too much engine and tool development. However, doing anything reasonably good looking in GIMP is rather time consuming too…!
  4. FAIL/SUCCESS – Actually, I didn’t even bother. Turned out just hand-coding the music in Audiality 2 (formerly ChipSound) script worked better than expected, so I just kept doing that.
  5. FAIL – No time for that…

So, all in all, I only got about halfway to my goals for 2012.

One thing that turned out better than expected though, is the Audiality 2 sound engine. (Formerly called ChipSound.) It’s now doing multichannel modular synthesis with subsample accurate scripting, has a proper unit/plugin API and stuff – and it’s all hard realtime. So, a few more simple DSP units, and that thing will do pretty much anything I ever wanted to do in terms of game audio.

New goals for 2013:

  • Keep working with my current main client. Less negotiations and research – more paid work!
  • Kobo II: Multiplayer! More fun! Proper levels! To speed things up without dumbing down the mechanics, I’m going to drop my custom physics engine for Chipmunk. A persistent scene graph rendering engine is going in, to improve performance and eliminate OpenGL from the scripting level.
  • New release of Kobo Deluxe! It’s had somewhere around 200k downloads, and is also included with a few Linux distros and other things – but few of those players have any idea there is a related game in development!
  • Finish a small sidescroller I started working on: Project Pixelfire.
  • Port at least one game to OUYA – probably Project Pixelfire. (Too heavy scripting in Kobo II, so that’s probably going to need a native compiler. Later…)
  • Get back up to speed with music! Almost dropped coding for music about two decades ago – but then I burned out, and this is about all I’ve done over the last 15 years. I’m beginning to realize I need to pick it up again to stay sane.


Posted in Development, Kobo II, News | 3 Comments

Audiality 2 1.9.0 – Refactored, renamed, rearmed!

Audiality 2 is a realtime audio and music engine, primarily intended for video games. While it supports traditional sample playback as well as additive, subtractive and granular synthesis, the distinctive feature is subsample accurate realtime scripting.

Audiality 2 (previously released as ChipSound) is used for sound effects and music in the game Kobo II. The name originates from an old structured audio and sampleplayer engine, originally developed as part of the XKobo port Kobo Deluxe. The old engine is no longer maintained, so the new one, which has similar goals but much greater potential, is now inheriting the name.

Key features:

  • Microthreaded realtime scripting engine
  • Modular voice structures
  • Subsample accurate timing
  • Designed for hard realtime applications
  • No hardwired voice/channel/bus structures
  • No hardwired “MIDI-isms” or similar
  • No hardwired instruments or songs – only programs
  • Lock-free timestamping C API
  • Audio I/O drivers:
    • SDL audio
    • JACK
    • Application provided drivers
  • System drivers:
    • libc malloc (soft RT)
    • Application provided drivers
  • Implemented in portable C
  • zlib license

Official site: audiality.org

Direct download: Audiality2-1.9.0.tar.bz2

Related; Kobo II site: kobo2.net


Posted in Development, Kobo II, News | Leave a comment

ChipSound becomes Audiality 2

Now official: The Kobo II sound engine, ChipSound, becomes Audiality 2.

This placeholder front page replaces the old Audiality site until the proper site is ready. There will be downloads, documentation, sounds, music and scripting examples.

The engine remains Free/Open Source under the zlib license. Version is bumped to 1.9.x for upcoming development releases, until the stable 2.0.0. C API prefixes become a2_/A2_, and the script file extension changes from csl (ChipSound Language) to a2s (Audiality 2 Script).

One reason for the name change is that loads of things are already named ChipSound and similar. Further, the old Audiality (formerly the unnamed sound engine of Kobo Deluxe) is no longer developed, while the new engine has similar applications but much more potential, so it makes sense to pass the name on instead of just abandoning it.

What to expect in the first Audiality 2 release (done and mostly working already):

  • Modular voice structures.
  • Various voice units, such as oscillators, filters, waveshapers, delays etc.
  • Public unit API for plugin (native code) units.
  • Subvoices can be “inlined”, allowing the parent voice to process their output.
  • New builtin waveforms: pulses and YM3812 style sine variants.
  • Stereo support.
  • Support for JACK and host application provided audio I/O.
  • SDL is optional – will build without it.
  • Scripts can have proper local functions.
  • Various other fixes and improvements.


Posted in Development, Kobo II, News | 3 Comments