Friday 29 May 2009

In which Johnnie forces another work experience student to blog

Saddened as we were to lose Rhys at the end of last week, we've been buoyed somewhat this week by the addition of Ivan. Like Rhys, Ivan is here at Moviestorm Towers on a work experience placement. Also like Rhys, he's a keen Moviestorm hacker, his particular claim to fame being getting Moviestorm running on a sexy little netbook.

Ivan has done some great work in the QA department, including finding a bug which had gone unnoticed by the entire team for over a year. We asked him for his thoughts about Moviestorm now that his week with us is almost over.

Well, this has been a fine old week, and I have become a seer into the future of Moviestorm. What will happen is [CENSORED] will [CENSORED] and *stops talking as is being punched in the head by the censor machine*

Okay, that's me in crutches. Well, my time here started off very friendly, albeit very quiet and a little awkward. I ended up bringing in a set of headphones just to listen to the hum of the magnets. I've been doing QA work since i arrived.

I completely and utterly blame Johnnie for the mistake on Wednesday in which I spent the entire morning installing an incorrect (and broken) version of Moviestorm and then the rest of the day logging bugs that weren't of any consequence. In so doing, however, I got to see something great that I can't talk about but have to be cruel and just hint at.

One of the most interesting things I looked at was the new "hair" pack (I had a small inkling that it might be something from the musical but looks like it's not) in which the new options for hairstyles were revealed, i.e. morph sliders, different skin-head designs (how? you ask? wait and see, mwahahaha!), some anime styles and most importantly ... pink hairdos for men! Gasp!

I wasn't allowed to see the Pyro pack save a few glances over people's shoulders and some whispered comments now and then, but from what I have seen, it should cause some "ohhhs".

I'm not going to go on for too long, so I shall wrap up by saying "Johnnie did it!".

As a special bonus, here's a video capture I made earlier in the week, showing some of the morphing options available with the new hair deformation sliders.

Friday 22 May 2009

Breaking news: Work experience student forced to blog, threatened with no lunchbreak.

It's Rhys' last day with us. To celebrate, we thought we'd give him a treat. We know how much he loves blogging, so we asked him to write another blog post. After some kicking and screaming, and shouts of "You're not the boss of me!", "Yes I am", "Good point, well made", we can finally present Rhys' Work Experience Diary: Week Two.

In Week 2 of working for Moviestorm, its been slightly less ‘hardcore’ and more casual, in a sense. I've spent most of my time making videos for Andrew which may be used as templates for an upcoming Short Fuze project which I'm not allowed to talk about. Oh, and I went to Ipswich for a day with Johnnie to meet with Eddie Duggan – a lecturer at the University Campus Suffolk - and talk to his students using Moviestorm as part of their course.

This week has been a lot less erratic than last week, but certainly still changeable. Working with the latest development build of Moviestorm, often using features which are still being finished, has meant that I sometimes encountered bugs and errors which stopped me doing what I was trying to do. This has been frustrating but also relieving, giving me more time to help out with the website, watch some of the recently uploaded movies and give feedback, and submit feature requests and bugs.

The earlier part of the week involved yet more brain destroying, living with the (apparently dull) life of working in an office. But things started to turn up with my trip to Ipswich - it was very enjoyable, right down to the train ride for an hour and twenty minutes which I feel both destroyed my will of working, and bolstered it. Aye, ‘twas a very philosophical and thought filled journey.

No meetings to speak of this week though, which was a disappointment. The design meeting last week was a big insight into how Short Fuze gets things done (or not done - that’s a mystery which remains to be solved).

Undoubtedly, I have enjoyed this experience; all aspects of it. Perhaps for the fact that I haven’t been in school, or possibly because I feel it’s a glimpse into my future - though hopefully by then we'll have thought-powered computers which will make office life much less of a bore, and internal brain HUDs so I can tweet and (maybe) work at the same time. Damnit man, I’m a student, not an office worker!

I will miss this office. Maybe.

We'll miss you too, Rhys.


Thursday 21 May 2009

Moviestorm at University Campus Suffolk

The students on the BA(Hons) Computer Games Design course at University Campus Suffolk have been studying (and creating) machinima during one of the modules on their course. We were delighted that they chose to use Moviestorm as one of the machinima engines, and we've been keeping an eye on their progress for a while.

Yesterday, I hopped on a train to Ipswich and headed over to UCS to chat to some of the students on the course. I took Rhys with me, in an attempt to stop him attacking his own eyes with selected cutlery.

It was a very worthwhile trip. Chatting with the students on the course, and with Eddie Duggan the course tutor, gave us a lot of very honest and constructive feedback. We'll be adding all of their comments to our issues database.

My honed and trimmed physique, captured in full educational ebullience by Rhys's sneaky camera skills

It's great to see Moviestorm being put to use like this, and it's always great to talk face to face with people in the Moviestorm community - especially when, like the students at UCS, they have a lot of complimentary things to say!

Wednesday 20 May 2009

Moviestorm, Heel!

Earlier, Kate said she was hoping that "spikes" meant high heels, not spiky hair. As it happens, we already have a reasonable selection of high heels available in the existing Moviestorm content packs. Try these for size. Most of them are customisable too, so if you prefer Barbie pink to the tasteful colours we've picked here, then you go right ahead. We won't judge you. Barbie pink can be very nice in the right context, I'm sure.

OK, so they may not be the highest of high heels, but they're as high as I'd ever wear. But that's quite enough about my secret past in the Rocky Horror Show. Ahem. Maybe I should go with a different reference.

OK, so they may not be the highest of high heels, but I know I wouldn't want anyone stomping on my hands wearing these. That's not really much better, is it?

I think I'd better get back to work.


A couple of people asked us whether there would be a female version of the spiky hair we posted yesterday. Well, ladies, here she is!

And, just to demonstrate our customisation prowess, we've used the hair length morpher to give her somewhat shorter spikes, and given her a striking purple look.

How's that?

Tuesday 19 May 2009


Next in our series of everyday hairstyles, we present one of the more prosaic 'dos, the kind you see in every high street.

Oh yeah, see that "hair length" slider? Guess what that does?

OK, so that wasn't hugely entertaining, was it? Look, it's 5.55pm, and it's been a long day. You want witty puns, clever descriptions, and overblown prose? Call Johnnie. You want to look at hair? There you go.

Friday 15 May 2009

Workin' for the Man

As Matt mentioned earlier this week, Rhys is here at the moment on work experience. That means that I don't have to make my own coffee and my shoes have never looked so polished. In between serving as my valet and personal alarm clock (I make him shout "Johnnie is the king!" on the hour, every hour), he's also been hard at work as the newest co-opted member of Moviestorm's QA department.

We asked him to write a few words about his first week working for Short Fuze.

In my first week at the Moviestorm office, I’ve worked on various things: screenshots, user testing, the dreaded unit testing, making templates for videos and tests. I even attended a design meeting.

Working for Moviestorm is very changeable. Parts of it have been fun (making shorts etc.) and parts have been so dull I wanted to gouge my eye out with a wooden spoon just to have something more interesting to do. All-in-all it’s been enjoyable, though, and a lot more interesting (at times!) than school.

On the Wednesday, and half of Thursday, my entire view on Moviestorm changed. I was switching constantly between Moviestorm and Excel, testing every single aspect of the soon-to-be-released version 1.1.6 to see if it all worked. It destroyed my brain, and made me want to, as I previously mentioned, gouge my eye out with a wooden spoon.

The Meeting was enjoyable. It was focused around proposed improvements to the Cutting Room View. I decided to add my two cents where it could apply, which included discussing what effects, if any, should be added to make it easier to work entirely in Moviestorm, without the need to export to movie maker or Vegas. It made me feel slightly more important than I actually am. Sitting among people debating whether to go with “A” or “2” (which gives some idea of the contrast), was both daunting and fun.

I will admit, I have been learning a lot about Moviestorm as a user and understanding the way its developers see it, which makes being a lackey for Johnnie, Ben and Andrew bearable. I do sometimes feel intimidated being surrounded by what seems like accomplished individuals, who have their own fort├ęs, be it programming, developing, or whatever – whereas I am average Joe Public on work experience. On the upside, I feel that an adequate amount of responsibility and pressure is placed on me, which I think makes me work better.
I don’t know what I’ll be doing next week, and frankly, I don’t mind: work experience is shaping up to be quite enjoyable.

Bring on Week 2.

Thursday 14 May 2009

Faster, Pussycat! Kill! Kill!

One of the unending background tasks round here is to make Moviestorm run faster. I managed to persuade Julian to take a few minutes out to tell you what he's been doing. If you get bogged down in the techspeak, just skip to the last paragraph. ;)

Recently, I have used the small amounts of time not devoted to watching Russ Meyer films to attempt to make Moviestorm run faster. I don't even want to count the number of changes I've made, but it's quite a number.

One of the things about performance improvement is that not everything you think makes things faster actually does. In a previous job I was reliably informed by a Games Industry "Guru" that "I shouldn't need to profile my code because I should know where the bottlenecks are". Let's leave aside the distinct possibility that this was to avoid him having to buy me a profiler. The real moral of the tale is "what you assume makes an ASS out of U and ME". I'm frequently wrong about such things - most devs I know are, to err is human etc, and in a complex app with threads and the like such as Moviestorm, it is very easy for us mortal non-Gurus to miss the wrong end of the wrong stick.

So my life has involved the use of Java profilers for a 30,000ft view of what's going on, and an OpenGL debugger to see what the individual molecules are up to within our favourite application. First off, I've identified some of the critical code, the 10% that runs 90% of the time. (I say "some of" because Moviestorm is an open system, and adding props and characters with new materials and activities can drastically change the balance of the call state.) Once I know what they are, there are a number of strategies I've employed to speed things up:

* Open GL state management. I've written a GL wrapper that tracks state and rejects redundant changes. Using my magic tools, I've seen that the graphics card on the test machine was hardly breaking a sweat on a scene with 7 characters. Therefore I don't expect to see this optimisation making a big impact YET. I guess it's good news - we can do lots more pretties without hurting the frame rate provided they don't cost a lot of CPU to set up.

* Workspace variables in bottleneck systems. You'll see a lot of maths code using static variables named things like vWork1 to avoid the cost of doing eg

Vector3f pos = new Vector3f();

Yes, the code is less readable, but that's optimisation for ya (in more complex cases I've preserved the semantics so that instead of writing

Vector3f pos = new Vector3f();

I write

Vector3f pos = vWork1;

and hopefully the JIT can optimise, but who knows?)

Why is this inefficient? Firstly, the memory allocation takes time; there are also THREE constructors called when you construct a Vector3f for instance - Vector3f, Tuple3f and Object; plus there is time to zero the x/y/z fields AND there is a hit on the GC side because lots of small short-lived objects can be a nightmare. In frequently-called code, this can accumulate and deferring the calculations to pre-allocated workspace saves these overheads.

As a general point of advice, it's only worth doing this if you know the code is causing a performance problem - ie you've profiled it some way (either using Netbeans' profiler or timing method calls manually). Early optimisation is the root of all evil, remember! (Donald Knuth, Mr Computer Science, circa 197x).

* In-place calculations. In some functions, the results are allocated dynamically (which exacerbates the problems mentioned above). So I've written versions that use pre-allocated arguments, and inlined the relevant code where appropriate.

* Removed redundant field settings in constructors. Eg in Vector3f(), the fields were set to 0 even though Java guarantees to have done this already.

* Caching of invariant state. Many bits of code do searches for things which never change, wasting valuable cycles.

* Lazy evaluation of dynamic state. Some states change at a significantly lower frequency than that which they are polled at. For instance the world transform of a scene object. This gives us an opportunity to only recalculate such state values when we really need to (in the SceneObject's case when its local transform is modified in some way).

* Map iteration. I've changed some iterations over hash maps to use the entry sets rather than the key sets as then the values and keys come for free (as opposed to doing a lookup for the value).

* Many of our skeleton operations are faster now that I've speeded up traversal of bones, and eliminated a number of tests that only need to be performed once.

The first item aside, these are all on the CPU side of things. I'm currently working on some graphics optimisation. I've changed the way our primitives sort and collected them up into batches. Batches require only one setup and teardown, so we win when the batches are bigger than 1 prim, and never lose (the overhead for batch generation being small). It's going well though it has required a big overhaul of the render code.

OK, so far, so much techno-babble. How has this improved speed? Well, on our test machine, we were rendering at 10.6fps on my test scene with 7 characters, lights and quite a few props. After 2 weeks of optimisation, the same scene ran at 32fps. Cool! But the machine is a monster, and it remains a priority to get the speed up on lesser beasts. Optimisation is a war of attrition: lots of small changes can be hardly noticeable; but put one more in, and suddenly things start to flow. Then again, when one bottleneck is removed, another will surely rise to take its place. Slowly slowly catchee pussycat (oh, how I love mixing antonymic metaphors). There are a number of areas we are aware of where we can make yet more speed gains; my notional target is 20-25fps for a moderate scene on an average PC / Mac, and I'm optimistic we can hit this. The only way is Up!

So there you have it. With luck, I'll get Dave to tell you something next week about the work he's been doing on the launcher, which is already giving us much faster load times on our test machines. We've obviously got to do a shedload of testing on the new code before we ship it to you, as there's always a risk that we've broken something major, so we've got this pencilled in for the release after next, assuming all goes well.

Oh, and please don't ask me what any of this means. All I know is Moviestorm runs a lot faster now.

Wednesday 13 May 2009

Parting is such sweet sorrow

I'll admit it: I'm running out of puns.

Here's another work-in-progress shot from the Hairstyles Pack. This is a short haircut for female characters. There's a parting on the other side of the head, which means that my title pun is just about tolerable.

I've still to show you the morph sliders in action on the new hairstyles. I'll post a short video capture of those in a few days time. Meanwhile, don't forget to take a look at the brand new Moviestorm website if you haven't done already.

Tuesday 12 May 2009

Short and very, very sweet

The Keep It Snappy competition produced some of the best Moviestorm videos we've seen yet. We didn't pick one winner. We picked ten. Here they are. Five minutes, ten very different movies. Fantastic.

Congratulations to all nine winners. (Yes, Overman got two!)

Funky librarian

Here's another of the upcoming hairstyles, and a first look at some of the customisation options.

No, you're not seeing things. That's all just one hairstyle. As well as changing the colour, you can trim the fringe and adjust the length all the way down to the shoulders to create many different looks from one basic template. This one cut gives you everything from schoolteacher to arts student and TV presenter.

Click on the pic for a real close look at the variations available.

Monday 11 May 2009

New faces at Moviestorm

In the midst of the absolute chaos of the day, somewhere between rolling out a Web site and releasing a patch, we'd like to say hello to two new people in the Moviestorm offices.

First up, please say hi to Paul Sumpner, who's joining the software engineering team. (Or programming team, as the rest of us call it.)

Paul says: "I've been making 3D editors for artists and designers in the games industry for about a decade. These editors allow users to create 3D content like terrains, roads and place objects. In the last few years I've concentrated on making cinematic editors for interactive cutscenes." Which, we reckon, makes him pretty damn perfect for what we're doing. We're expecting some amazing stuff from him as soon as he gets up to speed. So, no pressure there, Paul...

The other newcomer is young Rhys Kelland, who's spending the next two weeks with us on work experience.

Rhys was responsible for making Moviestorm run under Linux, which, we reckon, qualifies him for making coffee, helping out with filing, and all those other jobs that nobody else wants to do. Oh, OK, we'll let him do some testing, and make some movies, and so on as well. We'll also get him to blog about his time here. So far, all we could get out of him was "Just finished my first day of work experience working for Moviestorm . Its been a long day."

Moviestorm patch

The patch is now live.

This fixes a problem which was preventing some movies created in 1.1.4 from loading in 1.1.5; specifically, movies which featured a sound file attached to a loudspeaker set object. These movies will now load correctly.

(You may experience problems if you try to get the upgrade tomorrow - 12 May 2009 - while we're doing the Web site upgrade. If so, just try again after 6pm GMT. Cheers.)

Friday 8 May 2009

Moviestorm Web site upgrade

The Moviestorm website will be unavailable on Tuesday, 12 May, 2009 between 9am and 6pm GMT while we upgrade. This will include the forums, the main blog, and the store, and you will not be able to upload or view movies.

If you use Twitter, you can follow @MoviestormWeb for further updates.

A new look for the Moviestorm site

We interrupt Johnnie's sequence of posts about coiffures for this important bulletin.

As some of you already know, we've been working for a while on a new-look Moviestorm Web site. It's now being put through its final paces with some of our pioneers, and we're gearing ourselves up for the Big Day.

It's been a long while since I was involved in any major Web rebuilding work (in a past life, I was one of the team who set up and ran the ISP UK Online) and I've pretty much forgotten almost all I ever knew about building servers and setting up DNS. The new pages are all ready, all the copy and images are in place, and the new community features are looking good. Now it's down to the tedious business of checking and double-checking the hour-by-hour, minute-by-minute rollout plan, making sure all the backup and recovery systems are in place in case everything goes horribly wrong on the day, and getting the thumbs up from every single person involved in the operation. It's getting to be like Mission Control at NASA. Or, more accurately, like the Air Traffic Control sequences out of Airplane, with Lisa doing an increasingly accurate impersonation of Lloyd Bridges.

No, you're right. We didn't say when the Big Day would be. When It's Ready™.

Johnnie will be back next week with more pretty pictures of people with hair. No, it's OK, I don't have a complex about it. Going bald is perfectly natural for a man of my age.

Thursday 7 May 2009

Hair today, shorn tomorrow

Yesterday's screenshot gave you a taster of one of the longer hairstyles in store for you in the Hairstyles Content Pack. You seemed to like it, but some of you were worried that the only hairstyles we'd give you would be styles with long hair (and at least one eye obscured!). To allay your fears, let's go to the other extreme today and take a look at one of the shortest hairstyles we're working on.

This is a very short, shaved cut for male characters. There are several variants from which to pick, from the subtle ...

... to the, er, not-so-subtle:

I've got a few more images still to show you, and maybe even a video or two, so check back over the next few days to see some more of the work-in-progress Hairstyles Pack (and more terrible puns in the post title).

Click the images to see a high-resolution version.

Wednesday 6 May 2009

Fringe favourite

A little while ago we asked you what sort of hairstyles you wanted to see on your Moviestorm characters. The upcoming Hairstyles Content Pack contains hairstyles inspired by many of the ideas and images you sent us.

I've got an early development build of the Pack, so I'm going to sneak a few screengrabs for you over the next couple of weeks. Let's start off with this, which is one of the new female hairstyles:

There's a huge amount of variety and customisability planned for the Hairstyles pack, so keep an eye on this blog in the coming weeks to see if the hairstyle you asked for has made it into the Content Pack.

Oh, right, yes - I almost forgot: When It's Ready™.