I’ve been playing around with procedural generation recently, and one question has repeatedly been nagging at me.
How can you randomly spice up a level while making sure you don’t accidentally block off the exit?
Blue Noise Particles
I’ve released a plugin generates a random arrangement of particles with a blue noise distribution. This is also known as Poisson Disk Sampling.
This distribution of particles guarantees no two particles are very near each other. It’s often considered a higher quality particle arrangement than Blender’s default uniform sampling. It’s particularly useful for organic arrangements, and randomly arranging meshes without collisions.
Axaxaxas
I’ve released a Python based string parser on GitHub. This was part of a much more ambitious project that fell through, but I extracted the good part.
Axaxaxas is a Python 3.3 implementation of an Earley Parser. Earley parsers are a robust parser that can recognize any context-free grammar, with good support for amiguous grammars. They have linear performance for a wide class of grammars, and worst case .
The main goals of this implementation are ease of use, customization, and requiring no pre-processing step for the grammar. You may find the Marpa project better suits high performance needs.
Documentation can be found at: http://axaxaxas.readthedocs.org
Celtic Knots
I’ve created a Blender plugin generates 3d beziers curves in elaborate “celtic” style knotwork, based off of a framework mesh. Tested with Blender 2.68a. It’s available on github.
Celtic Knots are a intricate decorative design found in Celtic and other cultures mosaics and manuscripts. The knots often include elaborate variations and unusual angles that the plugin does not attempt to create, so touching up the resulting path in blender may be necessary for some designs.
Refer to the tutorial for some instructions on how to use the plugin, and the gallery for some examples of what is possible.
Tileset Roundup
Following my development of Resynth Tileset, I’ve been doing some thinking on the nature of tilesets, and the possible ways to auto tile them – that is, to paint tiles as is with a brush and letting the computer do the tile selection. Let’s review a few possible ways of doing so.
Just to be clear, I’m only interested at the moment in square, non-rotatable tiles. Rotation is another discussion, but excludes the more interesting tilesets. Adding alternative tiles is also not considered, though it is pretty easy to add in.
Resynth Tileset
I’ve released a GIMP plugin on Github that allows you to create large tilesets really easily, like this one, based off of the Resynthesizer Plugin.
Meatballs
Made for TIG Jam UK 4 with Joe Bain.
X Gems of AS3 Language Design
Ok, so AS3 has its fair share of problems. It is slow, it has next to no support for templates/generics and somewhat sparse standard library. And yet still I love using it.
Why? It has managed to pull together some of the rarer features that I think every language should have. Language designers, take note of the following.
Release of Box2DFlash 2.1a
I’m releasing an alpha version of Box2D Flash 2.1. It’s got a shiny new website, too. It has may features that were lacking before, but you’ll have to discover most of them for yourself.
This move is prompted mainly by the announcement of Erin that Box2D 2.1 itself is going to be delayed for more features. Also, the wiki got wiped out, so documentation is at an all time low (frankly, I’m glad the wiki’s gone. I sunk much work into it, but it was still a useless reference source).
Code is still alpha quality, which means a) bugs, b) no guarantees for changes in syntax. The big stuff is out of the way though. If you find a bug, or have a complaint, please post it to the forum as a new thread starting, or the sourceforge issue tracker. Do not post it as a comment here. A comment amongst other comments is too easily lost.Bear in mind that I will almost certainly ask for a testbed demonstrating the bug.
BTW, I’m going away for a couple of days for TIGJam:UK, so don’t expect issues to be treated immediately.
Box2DAS3 back up to date
Yeah, so I finally caught up with Erin’s changes to the C++ version. It’s still not quite usable though – a few bugs remain to be found, not to mention the fact patches of functionality are missing or broken. I’ll be putting up a preview version soonish, though.
I also spent 10 minutes cutting out one of the more flagrant ways the engine creates too many objects (instead of re-using objects internally).
I measure the average benchmark time (using the newly created benchmark program) has decreased from 1537ms to 1378ms. That’s 10% faster (as a rough estimate). Not too shabby for just one quick change. I’ve attached the benchmark reports.
Performance of the engine doesn’t really excite me though (this is FLASH we’re talking about). But it seems the done thing in dev blogs, which this is rapidly turning into.