Why movies look weird at 48fps, and games are better at 60fps, and the uncanny valley…

Posted on 12/20/2014 in Film Making, Game Design, Medicine, Technology

the hobbit

Damn you, Peter Jackson!

Let’s end this debate once and for all. Humans can see frame rates greater than 24fps (although plenty of people will argue that they can’t on the internet). I’ll explain more in a future post if necessary, but let’s take that as read.

Once you’ve accepted that fact, the next question is why do movies at 48fps look “videoy”, and why do movies at 24fps look “dreamy” and “cinematic”. Why are games more realistic at 60Hz than 30Hz?

The answer to all of this lies in two things – ocular microtremor, and center-surround receptive fields in the retina. And it predicts where the cut-off lies as well.


The Kebab of Destiny

Posted on 12/20/2014 in Business, Food, Me

Once upon a time, I lived at the Whitworth Park halls of residence in Manchester, when I was going to UMIST. I have a few amazingly great memories of that place (and a bunch of awful ones thanks to roommates who destroyed everything I had in the kitchen – thanks, dicks). One of the best memories is of the food.

You see, around the corner was Abdul Hadi’s. (There was also Gemini Pizza, which was alright, but Abdul’s was way better). Abdul Hadi’s had (and may still have!) amazing, succulent, perfectly marinated chicken kebabs. Sure, you could go to the Rusholme Chippy and get a half a chicken on a naan if you really needed to fill up, but Abdul’s was an art form – the perfect on-the-go drunk stumble-home food. Charred on the grill, the chicken skewers would go from bright yellow to orange and red. Naan bread was the base, then cabbage, tomatoes, the chicken, yoghurt sauce and chilli sauce.

It was heaven.


Why tripods have spirit levels and up should always be up in video games

Posted on 12/15/2014 in Film Making, Game Design, Science

This post is about designing cameras for video games, and for anyone who wants to shoot a movie. I think I’ve finally figured out why spirit levels are placed on tripods, why some people hate shaky-cam, why you need up to be up, and why dutch angles feel… well… off-kilter.

The reason has to do with your vestibulo-ocular reflex.


Cholesterol, with and without Statins

Posted on 12/14/2014 in Me, Medicine

So I’ve been entering medical info into a database for a good chunk of the afternoon. The cool thing is that by changing my diet, I’ve been able to get my cholesterol levels trending down to today, where they’re nearly where they were when I was on a statin (which I reacted incredibly poorly too).


How did I do this?


Screenwriting update: Brixton vs. Compton

Posted on 12/05/2014 in Entertainment, Film Making, Writing

So I’m happy to say that I’ve finished writing the first draft of the pilot episode of my reality mockumentary comedy tv pilot (wow, that’s a mouthful), Brixton vs Compton. It’s in the hands of my read-through crew now, which is a nice place in the process to be in.

Of course, it’s also only episode 1 of 12. (Which means I need to get my skates on and write at least another 3 episodes sharpish).


C!! – Data Tables and value maps in C bang bang (kind of)

Posted on 10/18/2014 in Game Development, Software Development

One of the things that I passionately hate about software development is defining the same data in multiple places. The reason for this is that it massively increases the chances of getting an annoying, hard to solve bug for no good reason.

The easiest way to explain this is with error codes. For error codes, you need:

  • An enum type of some kind, so that you can pass the error around (unless, of course, you’re using something like an HRESULT, but that has its own thorny class of problems akin to 4CC-registration on ye olde Mac OS).
  • A unique numeric value.
  • A text string that can be used to show the user.
  • A text string for the enum value so that you’re not guessing which error you’re actually dealing with.
  • One way we could do this is to give enums (and other types) a string representation. (And we should probably do that anyway – we can generate that data on the fly when we first use it in code). But that only solves for the error-message case, and it doesn’t really help with the human readable text string lookup.