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:
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.

David

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.

David

Posted in Development, News | Leave a comment

More on Infilterion and Kobo II

logo-shot-20140209

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.)

David

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.

infilterion-site-shot

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.

David

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!

David

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.

David

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

David

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.

David

Posted in Development, Kobo II, News | 3 Comments

Kobo II now on SoundCloud!

Decided to make some new recordings of the current versions of the songs in Kobo II. These are all full length versions, and I’ve made an attempt at actually improving the sound with the JAMin mastering tool, rather than just compressing the living daylights out of it. ;-)

And, these tracks, along with a bit of ingame sound effects (some of the new weapons, item pickup sounds, the soothing hum of the new spawn deck etc) are now on SoundCloud, which seemed like a good idea for various reasons. :-)





David

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

Kobo II: Tech Preview 4

The fourth Kobo II Tech Preview, Windows and 64 bit Linux versions, now available for download from the official site as well as IndieDB.

Direct downloads:

Highlights:

  • New bases in Campaign Mode!
  • New weapons! Powerup icons! Spawn Deck!
  • Mouse support! Relative and absolute modes.
  • Input grab – no accidental focus loss.
  • Splash damage shockwaves work again!
  • Sound effects and music volume controls.
  • Documentation via GUI hint popups.
  • Lots of other little details.
  • Various bug fixes.

Full ChangeLog.

David

Posted in Development, Kobo II, News | 1 Comment