code


The power to create – Little Big Planet 2, WarioWare DIY, Second Life and Unity3d

One of the most amazing developments over the past couple of years has been the explosion in creativity tools that are available to anyone and everyone, combined with the ability to share creations with others over the net. The creations can be businesses, presentations etc, funny things, appeals for help or art. Amongst all that there is also games. I grew up in a time when there were arcade cabinets that we drooled over and pumped 10 pence pieces into, we were then treated to the home computer boom. We were given the ZX81/C64/Spectrum, later the Amiga as tools that let us , should we wish to learn our craft create all sorts of things. We did not really have a distribution network other than word of mouth and posting disks around. Something happened to the homebrew market as the PC rose to power. Things got complicated, programming kits and licenses got expensive so we managed to lose an awful lot of homebrew to what became a massively monolithic games industry.
Now there is a shift again. The creativity tools are back and on the previously closed and expensive to licence too platforms that took over.
If you are a gamer or a content creator, a Second Lifer, a designer or any remotely interested in computing and animation or an engineer or teacher you really need to try the original Little Big Planet creator tools on PS3. The whole point of Little Big Planet is create.play.share They provided a palette of objects, rich 3d clip art if you like, combined with mechanical programming logic (motors, pulleys, switches, rods) which let you create all sorts of visually rich experiences with very very simple tools. Or you can just play platform levels with friends and have fun too. All those levels can be shared online. It has been a stunning success. As with all user generated content platforms the depth of human creative talent tends to astound the tool makers.
Now we have Little Big Planet 2 on the way and as a natural evolution of the tools we are going to see some fantastic creations in that. Take a look

The ability to combine things into an experience for others using gaming elements is not restricted to the PS3. The tiny little Nintendo DS (tiny only size not sales) has Warioware DIY. This is an extension of the minigame ideas of Warioware. You are presented with a quirky 5 second task with no real explanation and you figure it out. The graphics are often like something Terry Gilliam would do or are very cartoony, but the games work. Quick ideas executed well. The DIY game is really a collection of games but also the tools to create them yourself. A visual programming environment enabling you to create triggers and win condition combinations. For a programmer is may be annoying to go through the dialog pieces to get to the tools but for people who are not programmers it really starts to make you one. A small graphics and animation package and a music sequencer are also in the game/package. I have not tried it yet but apparently there is a Wii download that lets you get to and share/play you DS creations. That’s next to try.
The important thing here is an evolutionary path for talent to emerge from anywhere, for people to be able to find out if they are good at creating game ideas, combing graphics and sounds and having fun.
LBP2 and LBP approach it as aside to the basic game. Dropping you into a sandbox to play and helping you create amazing things right away. Giving a taste for creation and innovation not just consuming the levels thrown at you.
Warioware DIY makes you work a bit more, its a “go on then create a mini game then if you can” a bit of help but really a dressed up development kit.
UGC virtual worlds and places like Second Life or the more programmer extensible OpenSim also fit into this sort of homebrew model. Its a creation tool as much as a consumption tool with the added layer of events and people online thrown in.
These then can lead people who are interested and talented to tools like Unity3d. With that you are on a PC/Mac. You have all the tools available to you to write proper code, develop proper games from scratch. If you find you are a 3d graphics person there are lots of creation tools from free to very expensive, if you find you can do music or textures the tools exist likewise. Unity3d as a development environment lets you or a team work together to create things. The things created then will just work pretty much anywhere. The simplest being on a stand alone file on a website. Which of course means you have massive distribution potential.
As in a previous post the next large step of creating massive shared online experiences gets a little more complicated, but with people being able to do the things they can now with LBP2/DIY/SL/Unity3d in an out of the box type way is already amazing.
With a few tools, lots of middleware helping it is possible to create very engaging experiences and interesting art on any platform. The 4 way needs of programming, graphics, audio and story/game mechanics meet in various ways on all the creation platforms. The key though is that anyone, and I mean anyone! can have a dabble in any or all of them and find an outlet and talent they did not know they had, or fulfil their potential.
What are you waiting for go and make something somewhere.

Open source software really has come of age

The past few weeks I have had my head in an installation of Drupal 6.16 the content management system that sits very nicely on the LAMP stack. So I got to spark up another Ubuntu linux server off in a cloud somewhere,using the great apt packager on ubuntu/linux to go and fetch the extras I needed AND their dependencies. All the extra instructions I needed were on slicehosts forums for various pieces of config. So a full OS, all the extras I needed without having to trawl trough patches and dependency trees manually. In the good old days the stuff was pretty disorganised. If you came to it all fresh, or had been away for a while the “obviously you would have x, y or z” would be quite a pain.

The whole apache, mysql, php installation and config is also very straightforward. Yes you still need to know a few of the more arcane system command lines, or be able to look them up and editing even with nano or vi on a terminal is still rather annoying (terminals being a hangover from before we had more complex machines on the front end of servers). However, doing what would be the simplest task in a drag and drop world in a command line typing all the paths correctly etc makes you feel you are in charge of the whole thing. Which is why sysops are usually quite stroppy 🙂
Drupal’s install goes like a dream to. Again a whole set of extra modules are contributed to the let you do other things with your content, thinks like the CCK (content creation kit) which layers some new fields to be able to add to the page creation forms you make.
Back in 1998 I wrote content management systems, mainly in Lotus Domino, I know the problems and also the sort of things you need to do in the systems. So for me Drupal was great, once you get used to the naming convention of the template overrides and the ability to use views (SQL selects) on the data its all pretty slick. It is of course a long while since 2008, and it is interesting that whilst there were lots of commercial CMS packages that attempted to emerge none of them seem a patch on Drupal and even on WordPress. That is for most things, most web applications it is a pretty good fit.
Of course with any themeable template based system with a multitude of user contributed modules and gadgets there are going to be times when things just are not where you need them to be for your particular layout or information design. I spent a fair bit of time with one piece of data and layout trying to do it “properly” in the end I just changed the module, which let me put the class id’s in that I needed to make more sense of the display for the CSS. Not ideal but the point was it was there to do.
Commercial software has all to often been put in place to keep you away from the engine. Opensource be it opensim, drupal, wordpress, linux, freeswitch etc really do let you be the mechanic on the engine if you want, but you clearly don’t have to as the slickness of the design ethics in these applications through crowdsourced cooperation is quite stunning.
To do the full thing from commissioning a server to creating data structures in Drupal and then adjusting templates and style sheets is still a great swathe of skills needed, but when you have been in this for so long you know the patterns and roughly how things need to work. The ability to look up and search for problems, similar situations and generally fix on the fly though really helps to and can’t be understated. Much better than routing through a cupboard of manuals as we had to back in 1990!
Gotta love the web

Don’t they test software anymore?

This is not a rant about the constant patching of my PS3 everytime I turn the thing on, nor about the minor updates hear and there in various operating systems and platforms. Well actually it might be, but its not intended to be rant at all.
Whilst playing the wonderful Just Cause 2 on the Xbox I bumped into a few bugs and glitches. They all happened around the large radio antenna dish up in the mountains.
The first saw me accidentally get inside of the buildings. The buildings tend to be texture walls to climb so once you are inside they seem to be invisible as there is not texture to render. This was amusing until I realized I could not get out at all. I was not able to spoof an evac and had no ammo to self harm so I had to quit 🙁 Still these things happen.
I then popped back to the same place and found a little glitch with the top edge of a building.
Just Cause 2 Glitch
i.e. I am standing on nothing due to some odd collision detection.
For me I do not regard these are terrible flaws but it does raise the question of how, with such large expansive experiences it is ever possible to get enough test coverage and QA in place. Just Cause 2 has 400 sq miles of terrain, trees, building water. Vehicles moving around. Clearly the physics engine can be tested with a relative few vectors but when the place is built by hand, building placed its almost impossible to not have a few errors in place. Equally with a free roaming game its hard to tell when something is a bug.
I had driven a speed boat straight at a yacht. The speed boat was forced underwater with me still driving it, I had a submarine in effect. That is less of a bug a more an unintended consequence, the thing was it then became my mission to try and recreate it, which I eventually did.
Testing and coverage is actually not an instinctive thing to do as I have found with some clients. Where an atomic action happens with the same start and end conditions, but where it is held in a different part of a flow or sequence each time it is not always so necessary to run a test for every permutation and combination. Test the changes, test the extremes and test the critical path.
The software I used to build way back for internal corporate systems testing was a straightforward job in many respects, as we started to get more and more service, more and more permutations and many more functions it clearly has got a lot harder.
It is why I am not surprised that some tests really don’t get done in favour of patch later over the web, though at the same time I suspect some don’t get done because “hey we can patch it later”.
Anyway I am not moaning about Just Cause 2 as I am still in awe of its size and scale, just as I am with GTA IV and will no doubt be with Red Dead Redemption. Free roaming FTW!

Flocking Brilliant (fill in own joke here)

In my exploration of what unity3d does and how easy it can be to get things going I was about to set upon implementing the Craig Reynolds flocking code in the environment. I have done a fair few things related to using this flocking algorithm. Not all were published publicly, though I did about 4 years back create an organizational structure viewer where on selecting a person their related people would flock around them so that you could navigate through a organization based on relationships and drag flocks around.
The principle of the flocking code is very simple. Each individual in a flock has a motivation to aim for a destination, but to back from a collision with any other member of the flock. The code used is pretty much the same everywhere based on Craig originals. Flocking can provide some dynamic insight into relationships between objects, in particular when more than one flock, or the focus of the flock can be changed.
Before I set about my coding example I had a look around, and not surprisingly I found that the Unify community wiki had already done the work needed in both C# and JS.

Once set in motion the boids (as they are referred to everywhere) a cast out into the world. They then try and reach a point at the centre of the flock, never bumping into one another, as they get close they back off and then try again. An element of random direction provides an interesting display. Bear in mind these are simply acting under a simple rule, the path and shape of the flock is just emergent from those simple rules.

I have simply published a version of that on this page (it will do the plugin download for you) as you need to see the beauty in both the complexity and simplicity of movement.
As you can see a still just does not do it justice.
Flocking
So now I have this I can see what I can apply it to. (Flickr Flock of Photo maybe? )