Open Day and Procrastination

DSCF0729.jpg
First audience of 2013 – hope you enjoyed it

We had our first department open day of the season today. Great fun. We were talking at lunch about my latest Windows Phone project, soon to be in Marketplace. The great thing about Windows Phone is that I can describe an idea at 12:30 and have it running in the phone at 1:00 pm (even if it is a rather silly idea). I think it is fair to say that the audience were mildly impressed by the gameplay, I’ll let you know when it is available in the Marketplace.

Platform Initiative at Grimsby

WP_20130208_002.jpg

Mid-meeting

Today I went to the Grimsby Institute for the first time. We were having a Platform Initiative meeting, so Simon, Louis and I all boarded the Cube Express and headed over the Humber Bridge. It’s a great location. We had the meeting in a brand new building that even has an "atrium” in the middle. I didn’t embarrass myself by asking where the “btrium” was, but it was close….

Anyhoo, the meeting was really good, lots of constructive comments and plans for the future. Everyone was really pleased with how well Global GameJam Hull went (thanks to Tom and Simon) and they all want to have another one (and don’t worry, we will).

It is great working with these folks. It is like “pushing on an open door” in that everyone is keen to contribute and move things forward. We’ve got some great things we are going to be doing in the future. Can’t wait.

PEGI Game Ratings

image

If you’ve ever bought a video game from a shop then you will have already seen PEGI in action. This is the organisation that makes sure that you know what you are getting when you buy that copy of “Rabid Chainsaw Massacre III with Flame Thrower” for your six year old nephew (although with a title like that you should probably have a shrewd idea what you are getting, and it might not be a wise choice…)

PEGI implements a European wide ratings system for games which lets the buyer know what kind of content the game will have and also provides age ratings for purchasers. The big games publishers all use the PEGI ratings on their products and submit them for rating as part of the development process.

If you are making video games it is important to know how the ratings are applied. If you are making a kids game you might find it useful to have a PEGI rating, so that parents would be more inclined to buy it.

Today Ian and Gianni came over from PEGI to describe how the ratings process works and what you can do (and not do) to make sure that your content hits the audience you intended. It was a great talk with lots of “what would you do?” moments where the audience was invited to comment on the impact of game design choices. Good stuff.

Favourite Error Message of the Day

image

Now lets all give a round of applause the University Room Booking System….

Rather Useful Seminar on PEGI Game Ratings

image

We will be having the first in the Semester 2 series of Rather Useful Seminars on Wednesday 6th of February in the usual place (LTD in the Robert Blackburn Building) at the usual time (1:15 pm)

The subject will be of interest to anyone who is distributing creating games that they have made. PEGI (Pan European Game Information) will be here to talk about game ratings and how they are derived. If you are putting games out there for people to play then you should know what content fits into what rating category, and this session will show you how the process works.

3D Printing on Sunday

DSCF0708.jpg

Peter is building a  3D printer.He fancies a Rostock configuration. He has been doing some design work using OpenScad. Today he brought some designs round and we had a go at printing them. Lessons learnt, rounded corners are hard work. The printer builds objects layer by layer and if the edges are curved it seemed to make it harder to just print the outer layers. Peter was able to rearrange the drawing really easily and we had a go at printing again. The output looks like it might prove the basis of a print head. The next thing to do is print some of the side struts and the carriages that go up and down the pillars.

Password Panic

DSCF0680_1_2.jpg

Seems like my Twitter password, along with 250,000 others has been stolen. Well, not the password as such, but the encrypted version that Twitter store. This is probably not a huge problem for me. When I give my password to Twitter they pass it through a “one way” algorithm that turns it into meaningless gibberish. The idea is that it is very hard (or hopefully impossible) to take the gibberish and turn it back into the super secret phrase that I dreamt up all that time ago.

For me the biggest problem now is that I have to think up a new password. I’ve found that the best way to invent passwords is to think about them a long way away from the computer, maybe when you are doing the vacuuming, and then type them in later. If you can’t remember the password that you thought up a little while ago when doing the living room carpet it is probably not a good choice after all. My present approach, which works for me when a site will let me do it, is to run a bunch of words together. Perhaps “runabunchofwordstogether” would actually make quite a good password. Perhaps not. Anyhoo, I’ve changed my password and can now resume life.

The thing that really worries me about password breaches like this is that they provide a good context for these nasty “Your account has been compromised” emails that spammers send out to try and trick you into logging in to fix your account. Then again, that might be why the steal the names in the first place.

Ex NA

image

Things you might not know about me. I’m fluent in Algol 68. I know the George III Operating System (and its amazing editor) really well. If you ever need a VMS System Manager, I’m your man. I can write Modular II and Coral 66 programs, use Forth and Turbo Pascal with aplomb and and perform low level programming of the 6522 PIA (Programmable Interface Adapter chip) in 6502 machine code, should you ever need someone to do that.

Of course these skills are pretty much useless these days, as the above technologies are well past their sell by date. The good news, for me at least, is that all of these skills translate into useful ones using today’s technology. I know about operating systems, programming languages and low level interfacing. And although the relentless march of change has forced me to pick up new skills over the years, I’ve never lost sight of the fact that working with computers is just taking a machine that can do stuff and making it useful.

Today Microsoft formally started to pull the shutters on XNA. I was there at the start and I’ve followed the technology ever since. I’ve loved making games with it, and loved what other people have made with it. When Version 4.0 came out I remember thinking that they had put so much into it that the only way was down. My big concern was that they would keep on adding things until it became too complex and cumbersome to be useful.

XNA has done great things for programming and we’ve used it to good effect at Hull for many years. In reality it is not going away, it will still be possible to make XNA programs and distribute them, and the folks at MonoGame will take the XNA torch and carry it on to great things. However XNA will no longer have the seal of Microsoft support. It’s sad that Microsoft have moved on, but I think it was kind of inevitable. From a business point of view I never really understood how it could make a profit for the company, and in these tough times that probably spelt the end for the technology as a Microsoft product.

However, I don’t think that anyone who has built up a skill set in XNA has wasted their time. All games work in fundamentally the same way and all game developers need to address the same problems irrespective of the platform they are using. You just need to take a leaf out of my book (which I’ve had a while) and move the things you have learnt into a shiny new context. Take a look at Unity for some very interesting new directions. And find out more about MonoGame, which I think is wonderful.

Using Speech with Windows Phone 8

DSCF0579_80_81.jpg

I said yesterday that I’d submitted my latest version of Voice Music to Microsoft for certification.

It failed (sad face).

The reason it failed is interesting if you write speech applications for Windows Phone 8. It has to do with what happens if you interrupt the speech playback. One of the principles of the Windows Phone UI is that at any point when you are using a program you should be able to press the Windows Key on the phone and go off and do something else. Then, when you have finished doing the something else, you press the back key and return to the previous program. If your program doesn’t work like this it will fail certification, since this is a required behaviour.

It turns out that my version of Voice Music had a problem if the user pressed the Windows Key while it was announcing a message. They could go off and do something else, but when they pressed Back they did not return to Voice Music. This was a fairly nasty bug to spot, in that it only occurs when the program is running “in the wild”, i.e. when it is in the phone and not attached to the Visual Studio debugger. It also made finding the bug tricky, in that as soon as I tried to look for it the program started working again. Which was not very nice.

Eventually I used a technique that has worked before. I asked for help. And it turns out that the answer is quite simple. When a speaking program is interrupted by the user pressing the Windows Button (or generally moving away from the application) it will throw an exception when the program is next restarted by someone returning to it. The exception is thrown by the SpeakTextAsync method. If your program doesn’t catch this exception it will fail to restart. The exception has a particular type that you can check for if you wish:

try
{
    SpeechSynthesizer synth = new SpeechSynthesizer();
     await synth.SpeakTextAsync("Hello cheeky.");
 }
catch (Exception ex)
{
     if (((uint)ex.HResult == 0x80045508)) 
     {
        // System Call Interrupted thrown by Speech 
     }
 }

My program just ignores the exception, which seems to have fixed the problem. You can do more clever things if you wish. I’ve resubmitted it for certification. Fingers crossed….

Voice Command on Nokia Conversations

VoiceMusic

Last week Rob Crocombe, one of our students, was featured on Nokia Conversations, talking about the things that he has been doing with Windows Phone during his time in the department at Hull. Now it’s my turn. You can find the post here. It contains a fairly shameless plug for Voice Music, my little program that lets you select music on your Windows Phone 8 device simply by asking for it. A new version is presently working its way through Marketplace certification.

Catching Heartbeats with the Gadgeteer

image

I reckon the Gadgeteer has more interfaces than just about any other embedded framework. Including neat things like this Pulse Oximeter from Seeed. They make the point on the product description that you should not use this as a medical instrument but, what with the theme of GlobalGameJam being heartbeats, and me having one to play with, the temptation to use it in our game was very hard to resist.

Using it is very easy indeed. You can bind to events that fire when connected (i.e. someone has put their finger into the sensor), disconnected (when someone has pulled their finger out, so to speak) and on a pulse detected event. You can also read the sensor object to find out pulse rate, blood oxygen levels and signal strength.

This is my code to bind methods to the sensor events:

pulseOximeter.ProbeAttached += 
   new PulseOximeter.ProbeAttachedHandler(pulseOximeter_ProbeAttached);
pulseOximeter.ProbeDetached += 
   new PulseOximeter.ProbeDetachedHandler(pulseOximeter_ProbeDetached);
pulseOximeter.Heartbeat += 
    new PulseOximeter.HeartbeatHandler(pulseOximeter_Heartbeat);

The handlers then do all the work:

void pulseOximeter_Heartbeat(PulseOximeter sender, 
PulseOximeter.Reading reading) { sendMessage("P" + reading.PulseRate.ToString()); }

The sendMessage method takes a string and sends it on to the game via a serial port interface that is also connected to the Gadgeteer device. The sensor has proved to be quite sensitive and works rather well. It is quite unnerving to be playing a game and find that the gameplay matches your heartbeat.

Buying a Computer is Hard Work

image

Last week I decided that I needed a new computer. Specifically a Sony Ultrabook. While I love my Samsung Slate to bits it has hardly any internal storage and the behaviour of the USB drivers when you turn on hardware virtualisation is less than exemplary. So I went down to a well known computer store (they have a World of PCs there) and tried to buy one. This was not a good experience.

In the first branch I tried they had the computer I wanted proudly on display. But of course they had none in stock. And according to the salesman (I use the term loosely) there were none to be found this side of York (although he could order one for me for delivery – just like I could from Amazon).

Of course, when I go on to the internets and check stock levels I find lots of local branches showing the item. So I head for one of those. Yes, they have one in stock. No, they can’t sell it for the price advertised. This is because, as a special service to customers, they’ve taken it out of the box, set it up and then made a backup CD. Which costs twenty quid extra. So they want me to pay for a service I don’t want or need. When I refused to pay the extra they were miraculously able to track down another device that hasn’t had this treatment, and so I actually managed to get the one that I wanted at the price advertised. At this point I thought I was out of the woods. But no.

I now had an experience not unlike the uncomfortable ones that I used to have at school when I went to see my headmaster to be told off. The salesman sat at one side of a desk and I sat the other side feeling defensive. He then tried to sell me services that I didn’t want for a computer that shouldn’t need them, implying that I was taking a risk in not going for the extended warranty and other gubbins that they are all undoubtedly under great pressure to sell.

Finally I managed to escape with the goods. I’m loving the new machine. Very, very useful. I’ve been horrible to it already, plugging and unplugging devices, and using it as if I didn’t care how much is left in the battery when I charge it, and generally just opening it, using it a lot, and closing it again. And it has taken the punishment with aplomb. I’ve got an extra 4G of memory for it from Crucial and it fair whizzes along.

But I must admit that I fear for the future of shops selling hardware if my experience is anything to go by. At a number of points in the process I felt I was being told stuff that was at best a bending of the truth, purely to serve the agenda of the person and company I was buying from. I’m pretty sure I’d have had a much better experience buying from an Apple Store and of course if I’d gone to Amazon I could have cut out the person completely. And given the hassle that I had, there is now an even greater chance that I’ll do that.

GlobalGameJam Hull Results

Judging was a really frenzied effort. Two teams of judges, videos to take and show and final presentation right at the end of the day, with the coach for the Grimsby crew waiting outside with the engine running…

I went round with one of the judging teams and took some of the videos, Simon did the rest. If you want to find them and take a look at the wonderful stuff that was built you can search YouTube here. At the time of writing some of the videos were still being uploaded, but they should all be online soon.

After the judging, we had prizes. I took pictures of most of the prize winners, but for some reason I didn’t get pictures of everyone, sorry about that.

First up we had the special awards. These are teams who have excelled in specific competition categories.

DSCF0554.jpg

“Heart Attack Team” with their Social Media awardDSCF0555.jpg

“3 Old Robots and an Englishman” with their Diversifier award

DSCF0556.jpg

“50 Shades of Simon Grey” with their Art award

DSCF0557.jpg

“Blimbu” with their Project Management award

DSCF0558.jpg

Lifeline team with their Collaboration Award

Now it was time for the top three teams.

DSCF0559.jpg

“Across the Border” came third with a lovely heart powered jetpack game. Well done guys

In second place we had the “Heart Attack” team with a single finger controlled sideways scroller that has the player boosting their heart and avoiding circular saws. Sorry guys, I didn’t get a picture of you all.  But you are in the one above for your social media integration…

DSCF0561.jpg

The winners were “50 Shades of Simon Grey”, who designed, built and then textured an entire haunted mansion for their terrifying game where a ghostly presence stalks multiple players as they search the rooms to try and exorcise the evil that lurks there. The game uses 3D sound to play the hearbeat of the avenging ghost as he comes up behind you for the kill. Great,and very atmospheric, stuff.

Then it was time to pack up and head out. Thanks to Simon and Tom for making it work, Hull College for letting us have the use of their amazing Hull Studio School venue and all the folks who turned up. A great time was had by all, and we will definitely do all this again. HullGlobalGameJam will be back. Once we’ve had a lie down….

Heart Attack Lives

HeartAttack

This shows a tense moment in the game, you can’t see the amazing shader ripple effect, but when the game is running it looks amazing. I’ll see if we can put a video up somewhere.

We got the game working. Thanks to Lewis for some stonking artwork and everyone else for the bits that they did. Which were many. It was really great to forget everything else for a while and concentrate on just one program. This is the first time I’ve actually done the development thing in one of our competitions. It definitely won’t be the last.

Saturday GameJam

DSCF0528.jpg

When David drove us home last night we noticed that the snow was beginning to pile up. This morning there was a lot of it about. We managed to get into the GameJam around 8:00 am anyway, to greet Simon who had been up all night making the game. And we had a game, with the not too original name of “Heart Attack”. Bad things move menacingly towards a beating heart, which fires antibodies to dispatch them. Things are made even more interesting by the way that the baddies are only visible as the “pulse wave” of the players heartbeat passes by them. Simon assured us he could write a really funky shader that would show the effect.

So we sent him home to bed and we set to work. The first thing to do was to get the heartbeat values out of the Gadgeteer device and into the game. Turns out that’s what USB serial ports are for and so after putting together a tiny serial protocol we had that working. Then it as just a matter of the two Davids and me creating assets and building gameplay and sound. Which was great fun. I did find time to take some pictures too.

DSCF0538.jpg

Where we are working

DSCF0543.jpg

Having our pictures taken…

DSCF0546.jpg

Oooh. Old school.

DSCF0533.jpg

Inflatable bed, 10 quid from Tesco. Guess who’s using it….

You can find more shots here.

Global GameJam Hull Gets Going

DSCF0509.jpg

Waiting for the theme…..

When we started off with Global GameJam Hull we were very worried that nobody would turn up. Every meeting ended with an anxious discussion focused on “Bums on Seats”. As you can see above, we ended up with plenty of folks, which was great. The competition started with a couple of excellent videos setting the scene (and reminding everyone about the power of deodorant) and then we got the theme. No pictures, no words. Just the sound of a human heartbeat. Genius.

Then it was off to form teams and get cracking. I ended up in a team with two David’s and a Simon. We named ourselves “The Simon Grey Glee Club” and started casting around for ideas. During the discussion I mentioned that I happened to have a Gadgeteer Heart Rate Interface, although I’d lent it to James to do some Imagine Cup stuff. Could we make a game which made use of the heart rate of the player?  The answer was yes, so I was instantly on the phone to James who was kind enough to swing by and drop off the hardware and his sample code.

By the end of the evening I’d got the interface working and verified that we could get heart beats and pulse rates from it. Tomorrow I’ll make an interface to get those values into the game. I’m not working overnight on this, but I will be there really early in the morning.