Archive | Dev part 2 RSS feed for this section

Making connections. On Twitter.

25 May

To people who stumble upon this blog or read it out of curriosity about my projects and thoughts, you might find this post a little odd and full of self grandure. This post is part of my degree requirements that say I need to act in a professional manner and seek out contacts in relevant fields etc.

With that in mind, heres some contacts I’ve started making!

Well, what I’ve actually done is start conversations on twitter and show off my work, hey, they tend to repost the stuff and get it seen by others too so, woo!

First off, I’d like to thank Ian Lobb, a talented flash game designer from the UK. He’s done some cool flash games for big names and currently co hosts the fantastic creative coding pod cast. What will I have to do to get mentioned on such a podcast? Who knows! But the first step is to get myself known to guys like him.

Well, that just prompted me to write a look back over the whole tech stuff behind my project. I think that these thoughts of why I did certain things and chose the tech I chose would be quite interesting to read anyway. So I wrote a rather lengthy post, I tried to keep it informal and a nice read, but it may have been too much for some.

Well look at that, Iain retweed me, great stuff! My blog got stormed that day, I had like 40 readers! Holy crap! Never had so many readers in one day on my blog. Interestingly, people stuck around for a day or two as well since I still had pretty high numbers the day after.

Gary (gsmokeyjoe.wordpress.com) is just showing off with the 300 he got when creative review tweeted about him.

Iain was even very nice and gave me some tips for the future.

I also got some mentions from older friends, the tech editor at activetuts.

I even started talking all tech with another dev who has dabbled in mind controlled flash:

So great! I’ve started to get noticed by some pretty awesome and well known flash devs. So what about work? Did I start contacting people about jobs?

Of course I did. I decided that I’d like to start developing flash games right now and do the more techy stuff as a hobby/side project type thing. So, with that in mind, I applied for jobs at a few places.

One of them being preloaded. They are a pretty awesome company. They dont just do flash games, they make iPhone apps, make installations and all sorts of crazy extra stuff. They are most well known right now for their flash games, they’ve won baftas for them.

I’m expecting to hear back from them soon in regards to an internship.

But thats not all!

I’ve applied to be a flash dev at Nitrome, a pixel art obssessed flash game studio. They are looking for a flash dev and also iphone devs, which is where I think my edge is.

The nice people on twitter told me so! So let’s see how that pans out.

There’s also the job that Lee lined up for me at Carbon Studios. This, however fantastic an opportunity, I don’t think is just right for me yet. They want a flash dev to handle all their work, and since I’m still quite unexperienced in studio flash dev, I would like to work with a team of devs so I can learn new stuff and pick up best practices rather than potentially be making a lot of industry mistakes and fumbling around by myself.

But wait! Theres more!

I’ve also applied to be a speaker at Flash on the Beach for 3 mins during what they call the “elevator pitch session” This is where they get 20 new comers and let them have three mins of stage time to talk about whatever they want. I’ve applied to show off my brainwave reading skills and to show people what can be done with the tech.

Hopefully I’ll get that, it’s sounding promising so far. I got a reply email with a positive response but I’ll have to wait till the end of June to find out about that one.

I’m pretty interested about being perceived as professional and I’d like to be known within the flash dev community for deving this kind of hardware + software crazy combo stuff. So being able to talk about it in a pretty large flash conference where people come from all over the world to hear people speak would be fantastic.

Loads of companies come to this event too, including preloaded!

So yeah, I’ve been trying pretty hard to get this project noticed by those who matter and trying to get myself a cool job. Will have to see what the future holds I guess.

neurosky’s mindwave – I have one now

24 May

Today I took deliverance of my very own Neurosky branded Mindwave.

An affordable brain wave reading headset.

It was super easy to set up too, I managed to get it up and running with the flash example within minutes. Great stuff. Weirdly, I noticed that acts exactly the same way as an arduino when you plug it in. You get a little message that pops up saying something about a network device when you plug in the dongle just like the ardunio, it accesses it in just the same way, and you even have to use a socket port to get information around your comp. Except this time, it comes nicely wrapped up in neuroskys GUI along with a nice little bit of software that helps auto connecting.

To stop it draining battery life, the headset will only connect when you are running an app thats trying to access it. The supplied software then connects the headset and disconnects it once the app is shut down. NICE! I like that, seems very handy to me.

The head set is lovely and comfortable and works exactly the same way in flash as my previous hack did.

Infact, the example code that came with it looked pretty much identical to my own code, proud moment for me there. I code brainwave flash apps like the pro’s.

I even got it up and running with my own game within minutes, I just had to slightly edit their example file to be accessed by my game in the way that I use it.

But it all works, and pretty damn well too, a lot easier than having that stupid buzzing box and messy port forwarders knocking about.

Interestingly, the online documentation for the mindwave for hooking up an arduino to it involves soldering directly to the usb dongle. Very hackerish! This company is all about the user made hacks, they clearly love the damn stuff, makes their stuff more popular I guess.

Because the headset is so nice and lovely looking, I’m quite skeptical about putting it in an arcade style game where I wont be around all the time.

I think that, for the pro evening, I’ll have the new headset there to use and on other days, I’ll sub it with the old tech. I don’t want to break my lovely new toy.

A technical perspective of developing Spaced Out

23 May

So, I’ve talked a lot on here about the whole process of Spaced Out, all the technical stuff is covered but it is dotted around in various places.

For those of you who are new to this blog/project and wondering what the hell I’m talking about, Spaced Out is a mind controlled arcade game that I made as part of my final project at university. It’s a game all about a giraffe in space who gains mind powers and has to battle his way home through various enemies including David Bowie.

The game is created using Adobe Flash, and for input I use a brain wave reading headset and a kinect. And this is how I did it.

In reflection, I developed four separate interface systems to control my game. One of course being mind control, that one was set up within the first few weeks, and I had it running, and running reliably which is something that I’m always keen on developing.

But the others? Well I only chose one of those in the end, the Kinect of course. But first of all I had other motion controls, both of them a bit ropey.

Let’s discuss.

Brainwave reading was an obvious first choice for me, it was something that would allow me to control flash games through the power of thought, and that’s just crazy, even now 9 months after I started this project. (9 months, holy crap. It’s just flown by). I can show this project off to people and they look at me like I’m actually using magic.

And that’s why I chose mind control. Who wouldn’t want to make a game where the go “Are you kidding me? What?!” when you tell them that you just have to THINK to control the game.

That was the simplest choice I had to make during the project.

It’s pretty straight forward in terms of its technology and implementation too actually.

I use a star wars force trainer, which I took apart and found some pins inside. I read up online and found out that you could hook a micro controller up to two of those pins and read serial data out from them. A little bit more digging and I found that someone had written up some code for the arduino so that it could read the serial data in through that micro controller. This was perfect for me, I like arduino’s and I know how to implement them with Flash and control things in real time.

To get the data from Aduino into Flash, I use Tinkerproxy, the mac version of serialProxy which is just a bit of java code that takes the data from arduino and sends it out on a local socket which you can then tap into with a bunch of programs, such as Flash.

I then use some pretty standard code for getting the data into flash.

private var arduinoSocket:Socket = new Socket(“localhost”,5331);

That’s how I set up a basic socket in as3, and then I split the incoming string to split up all the data which I store in an array so I can have the Concentration data, the Relaxation data and the Signal data all streaming from the headset.

var arduinoOutput:String = arduinoSocket.readUTFBytes(arduinoSocket.bytesAvailable);

output = arduinoOutput.split(“&”,4);

This code isn’t anything special, it’s just some basic AS3 socket code that can read incoming data from an Arduino. It’s the barebones type stuff that gets things up and running and working quickly.

NOTE: I have three items of incoming data, but I split my string up into 4 chunks. Why? To stop an annoying bug that was rendering my array useless a lot of the time.

When streaming data over sockets from arduino to flash, you tend to get an invisible character turning up every now and again, usually a carriage return or something like that. It’s just something little that can throw my whole game out of balance.

In my arduino code, I just add on an extra character, and then in flash split the string up into 4, this protects my first three data chunks from getting malformed by this bug. Annoying when it happens, but a relatively simple fix.

Now, that’s pretty much it for my brainwave reading dabbling, now I shall move onto an interface method which took up half of my total dev time. Head tracking.

This, on reflection was a silly mistake really, I’m not really sure why I spent so much time trying to get this to work instead of finding other methods.

What I did was mount IR LED’s on top of the brainwave reading headset. Then, by using a wiimote, I could track the players head position. They could then move their head side to side and rotate it to control a cursor on screen. This is old hat for us IMer’s, we’ve done motion controls with wiimotes before. When it came out and it was found to be hackable, of course we used it! Full on cheap motion controls for our installations. Brilliant.

Well, this method kind of worked, if you sat in the exact right place under the mounted wiimote(s). But even then, shift a bit out of place and the whole control mechanism goes out the window. That’s not cool.

But, I did learn how to make a wiimote to flash connection package that worked a hell of a lot better than wiiFlashServer. On mac, wiiFlashServer can spend ages not connecting your wiimotes to your mac, sometimes it just wont work at all. It’s really weird.

I found out about a neat little program called osculator. Now, this is for Mac only, but if you are a flash developer, with a mac, playing around with wiimotes, I’ll let you in on how I made instant connecting, wiimote powered flash games. It’s bloody marvelous.

What I did was create an osculator file that moves all the necessary data to the right place. It moves the data from the localhost port to 9000. This was a little tricky to set up, so if you want to use my files, you can. I’ve added all my files for connecting wiimotes to flash, including my AS3 code to github.

https://github.com/JonathanReid/Osculator-to-Flash—Wiimote

Thats the link right there, feel free to download it and maybe improve it, but it’s a nice little stand alone class that you can plug into your games and access instantly.

Right now, that code just deals with the IR sensor input from the wiimotes, but it can be easily adapted to use button clicks instead if you prefer.

The code uses FLOSC to get the data from OSC into flash and parse it correctly, my code takes the OSC stream and makes it more human friendly.

Anyway, that’s one of my more exciting moments in coding to date, developing that little system.

Back to wiimote head tracking. It became a little problematic as I found that people didn’t sit down the same as others. Also, I would have had to build a huge cabinet to hold everything in. Not fun for me, lots of hard work there.

So, after some time I decided not to bother with head tracking. I thought it was time to move onto something that I personally found quite exciting. Eye tracking.

Now, I had seen these projects where people had created really cheap ways of eye tracking, and I thought that with a little jiggery pokery, I could get that info into flash and control things with my eyes.

Well, I did.

I built myself a little eye tracking system based on the design from the guys over at the graffiti research lab and used their code as a base to start on.

They had built their code to track eyes with in Open Frameworks. And this was my first foray into the OF world. It’s confusing at first since if you don’t link up your files correctly, (theres lots of files, I dont know where any of them are) you can’t compile.

So after a long while trying to figure all that out, I finally got it to work, and then from there it was only a matter of time before I had it sending out the data in a flash compatible way. Didn’t take too long actually, someone had written an OF to Flash plugin for OF, all I had to do was send over the data that I needed, the X and Y co ordinates of your eye.

And I did, and I had a game that you controlled by looking at the screen. Cool ay!

Apparently not to anyone apart from me, others found it cumbersome and not very interesting or exciting. There was no magic, everyone could see exactly how it was done so it didn’t excite anyone.

Now the Kinect, that brought up all kinds of excitement.

I had the eye tracking running for about 2 weeks before I decided to ditch it. That’s just the kind of world I live in. So the kinect it is.

This was to be my final choice for input. This is the one that I would be exhibiting with. Luckily I had it up and running with my game in less than a day.

Now, to do so I used a program called TUIOKinect a little program by the makers of the reactable that detects hand sized blobs with the kinects camera and then broadcasts it over your computer in a TUIO friendly manner.

Luckily for me, there is so native AS3 TUIO code that can harness the power of blobs. After implementing that, I hand control over my game by waving my hands around.

This proved to be a much more intuitive interface than the previous two, which is good because at this point, I had run out of ideas to rely on.

People are also still wowed by the kinect, they can just put out their arm, and there it is, they are controlling stuff on screen. That’s pretty cool right?

I would talk more about the TUIO as3 client but I simply dont know much about it, I got it working by sheer luck really, It slots in my code and stores all instances of blobs on screen as an array which I can access and create cursors for everything in that array, which is what I did. I’m not sure what’s going on past that, I’m not much of a TUIO man, I’ve dabbled in it before, trying to see how it would work and I had never got it up and running before, it’s not exactly the easiest of things to get running to be honest. So, if you want to learn more, have a look at their site tuio.org.

And that’s how I went about creating four different interfaces for my game.

The game itself is quite a simple one, it’s my first steps into the flash gaming world, and now I know that I’ve made plenty of obvious coding mistakes while creating it, but hey, now I know what to do. I can code cleaner now and I’ve learned a lot about keeping your code manageable. All through my own proud mistakes.

The game is essentially a little tower defence type game, you have a bunch of enemies held in an array that get animated towards the left hand side of the screen. The enemies are generated based upon your meditation levels. If you are relaxing over a certain amount, an enemy gets generated. Simple stuff. But, as I found out while testing, this wont work for everyone, some people just dont relax, so as a fail safe, I added in an enemy that gets generated every 5 seconds or so to keep the game going.

Then, I use simple hit test structure with the cursor (generated by the kinect sensed hands) and the enemy. When that hit test is triggered, I also check to see if you are concentrating over a certain level, if you are, then the enemies explode!

so the in game process goes Point > Think > Explode.

Simple stuff in terms of gameplay, but’s it’s one that people enjoy due to the physical and mental aspects of the game rather than the exciting gameplay mechanics.

Hey, I taught myself how to make flash games while making all the rest of that stuff, what do you want from me?

being truly indie, I also drew all my own graphics which is fun. I love drawing so it’s nice when I get down to drawing and art again, I have a very distinct style of photos + vector outlines. It does mean that it takes me some time to do just one character since I draw them by hand first, but hey, to me it’s worth it to get that visual style. It fits in well with the whole surreal aspect of my game to. Handy that.

So yeah, learn to embrace the ports and sockets, because you can make some pretty fun stuff when you start streaming data all over the place. Get a wiimote and try it out yourself.


							

My mum says I make good games.

2 May

I got my mum to play my game and I watched from the side lines to see how she played it and how it worked with her.

I admit, I had to prod her along occasionally, but in my deffense, she had to take her hearing aid out to put on the hat and thus couldn’t hear any of the in game instructions.

Also,  she never ever plays games. So she didn’t really understand certain aspects of the game since she had no prior knowledge or frame of reference for certain things.

NOTES!

I took notes as she played and this is what I got from it:

  • Mum gets it after a little bit of confusion with the hat.
  • Mainly with putting it on, but that was always an issue, hence the new “about the hat” board
  • Slowly got better at the game, although I don’t think she quite knows what’s going on. (hearing issue, unable to comprehend story)
  • Problem with audio on videos again, sometimes it drops out for no reason at all.
  • Couldn’t get to grips with enter name screen, although she couldn’t really see the cursor much on my tiny laptop screen from a distance. Perhaps linked.
  • After two deaths, she finished the game and placed 4th on my highscore list.
It’s one of those things that when you know how to do it, you just want to keep doing it.
She got the hang of it in the end which was good. She seemed to enjoy the whole game experience and the kinect + hat interface was really intuitive for her. She picked that up with in seconds.
Only thing was she didn’t seem to quite get the concentration bit for a minute or so, but then on the second try she was a dab hand at the game and understood how to blow things up, so that’s positive I guess.
Considering my mum get’s scared when my dad moves icons around on her computers desktop, I think I’ve done well here.

Things to hand out

2 May

I felt that having just some postcards to hand out wouldn’t be much.

So, since I had a pack of “clear” sticker paper left over, I made a bunch of stickers! Now everyone can take a Mr Space Giraffe or a Bowie and stick them on their computer or wherever they so choose.

See? Totally clear labels.

Well anyway, it’s important to me to have stuff to give out.

On the proper stickers, they also have my web address on them, just as a little extra promotion.

I’ve made four of every character, so I’ve got a good stack, but it’ll be first come first served really and they can take whichever character(s) they want.

Who knows where they’ll end up?

Adding little touches to podiums.

2 May

I added the game logo to my main podium. I fel that it needed that little extra branding touch to finish it all off and keep it linked in with the game.

You can also see the green rug in place.

Putting the logo on the podium gave me a rather large headache.

First of all, I ordered some “clear” stickers so that I could print on them and then stick it on and it would look fabulous. But no, the stickers I received were far from clear. Infact when put on the gloss black surface, they came out looking like frosted glass. Not cool.

So, what I had to settle for, was cutting out each individual letter and sticking them on by hand. A huge pain in the neck that was.

After I stuck them on, I realised that I had the S and the O on upside down, whoops.

But in the end, I think that it looks just the business. It looks like something you’d find in a museum I think. Along with the hat on the manikin head and the info board, I think I’ve got some cool stuff lined up for this grad show.

Men in Hats.

27 Apr

As my old giraffe hat was tired, too small, and wasn’t very pretty, I enlisted the help of my begrudging mother to help me make a new, fantastic giraffe hat.

My mum wasn’t impressed with this request.

Nevertheless, we pressed on.

I got some lovely fake fur online that sold fur in packs of two, one sheet brown, one sheet white. Not sure what I’m going to do with the white fur yet, perhaps make a fantastic winter cape with fur trimming.

The style for the new hat would be a direct copy of the old one, just everything would be bigger to address the main issue I found with the hat. It just didn’t fit anyone correctly.

With the old hat, when you put it on it never really covered the back of your head. It just kind of sat on top of your head looking like it was about to fall off.

I mean just look at adam wearing it, see how it barely fits his head? Now Adam doesn’t have an unusually large head, so this was a problem to me.

And it also became apparent that just about anyone who tried to put it on found it difficult to do so with the constraining nature of the old hat.

So, my mum, myself and my dad sat around cutting up fur and making each pannel from the old hat about an inch bigger on all sides. This seemed to work a treat and it all came together nicely.

To fit the headset inside, there are some simple tabs with velcro on them holding it in so it can be taken out easily if needed. The new hat also accomodates the headset more, having the fact that its main purpose is to hide the headset in mind when designing the gat this time.

Look at it now!

Under that hat, I am wearing the headset, and no one would know! Fantastic.

It does exactly the job I set out for it to do. Plus, it looks more like a giraffe this time. Vaguely. In the rough area of the zoo which holds giraffes.

Plus, you dont look at all foolish while wearing it, bonus.

Here’s a side by side of the old hat vs the new hat.

Quite a remarked change there. Mainly the horns, the horns are big now. That’s entirely on purpose, the old ones were tiny and stopped it looking more like a giraffe, now the are bloomin’ huuuuuge!

Then I got to thinking, how are people gonna know how to put on the hat and the contacts and everything. I mean, without me standing there explaining. I know, a visual sign!

I knew just the look I had in mind, a cut away diagram.

With the help of google, I found one that really gave me a visual style to homage.

I’m not entirely sure what’s going on here, but I just like the way that white band is used to signify a cutaway. It’s a nice little visual clue that suggests something is beneath the surface.

Also, there are images like this which are nice little illustrated diagrams. They look like instruction manuals and are very clear about what’s going on in the diagram. Also, numbering and lettering things for a more detailed explanation is nice.

So here’s my attempt.

I think it does a good job of looking visually interesting whilst also being informative.

I just needed to get across where the three contacts go, and that they must not be touching hair to work.

I think that pretty much covers it in that nice little diagram there dont you?

This will be on display next to the hat, instructing people how to wear it.

I will also have a little card saying “put on the hat” or some variety, just so its clear that the hat is there for people to wear it, not just look pretty.

Rest in peace good friend.

27 Apr

My brainwave reading toy has died. It gave up working while I was trying to see if I could control LED’s from flash.

Yes and No, mainly No with my current setup. Yes in the future with other tech.

Anyway, the headset still works, just the base unit died. Luckily, eBay had a listing for a starwars force trainer that was ending on the exact same day. Fantastic! It was roughly the same price that I paid for the original so that’s good too.

I hurriedly bought one to replace the old and broken base unit and it arrived soon after.

Phew, that’s one problem that could have caused real problems.

Although, while I was waiting for the new base unit to arrive, I found out that the people who make the chip for this are selling their own headset that links up directly to your pc and can connect to arduino really easily. For £80. Damn, I should have bought that instead. Oh well, I’ll get it when our loans come in and maybe I’ll update my project with it between the riverfront show and the official grad show, who knows.

http://store-eu.neurosky.com/products/mindwave-1

Oh well, at least I know in future I’ll be able to make all sorts of mind control + flash + arduino controlled stuff. Without fear of breaking things.

Had to find out now didn’t I, so close to the end.

I could be a professional maker of things.

20 Apr

In the last few days, I’ve been a very productive individual.

First off, I wanted to sort out my round mat. The idea for having a round mat is a throw back to one of my very old posts about the AR booth exhibit thing. They had a round mat on the floor so people knew where to stand so the software would work.

Since I need the player to be a certain distance away from the kinect to work, I thought that I should have the rug in place so people know where to stand, however subconsciously.

So, my mum had lots of sheep skin pieces lying around, I got her to sew some together and I cut it into a circle. Then I promptly dyed it green. Why green? I dont know, I quite liked green in contrast to the colour of my plinth.

So green it is, and my how pretty it looks.

Next up, I got some black sticky back plastic as I thought this would make ideal covering for my plinth. The initial idea was to paint it black, but then this would throw up loads of issues with brush strokes etc, and it just wouldn’t look proper. So I got some sticky back plastic from homebase.

The nightmare I had when trying to find this stuff is insane. I asked Luke very kindly if he would take me to hobbycraft to find some of the stuff since wilkinsons, who usually have some, had none in black. Hobby craft had none, but luckily Homebase next door did.

They also had something else there. Stick on velour. It’s the kind of stuff you would cover a poker table with, and they had it in black. I quickly picked up some and head on home.

The sticky back plastic went on really easily, and I was surprised there was no air bubbles. Then, a few days later when my electronics arrived (the main button for the plinth and some stuff for the lights) I could install everything and put on the velour.

It looks fantastic.

It really looks rather posh now. No longer does it look like cheap wood, but like a proper, professionally made plinth for a museum. Shame that it wobbles.

I also built a shelf into it, so that I could put the projector on it. It’s at the exact height of one of the bars in the riverfront so it projects through the railings nicely.

So yeah, I eventually wired up the button for the plinth.

The problem was that I couldn’t hook it directly up to the arduino. Not that the hardware wouldn’t work, but the code that I am using for the brainwave code stopped other interfaces working due to the code making things pause whilst it reads in code from the headset. Booooooo.

The solution? Solder the button to a USB mouse. That way, it’ll interface directly and work within flash straight away. Wonderful.

Then, a problem arose. A big problem! one that could hinder my project drastically.

The brainwave reading toy broke. It just suddenly stopped working. And I have no idea why.

I was working on the code, to see if I could get the button working, and the headset just gave up. It just wouldnt turn on correctly. It seemed like a capacitor had blown, but I cant make much of a guess.

Luckily, that same day, someone was selling one on eBay for exactly the same price as I paid for the old one. So I snapped that up straight away and I am waiting on delivery.

The old system served me well, just hope I can remember how I hacked in to it the first time round.

The other thing I had ordered was some electronics so that I could finally finish off my LED light system.

I had just ordered some basic relay’s and resistors, but that’s all I needed. Kim had given me the circuit diagram and so I was all set, armed with the knowledge of what I was doing this time round, no arduino explosions for me.

The circuits are simple, it uses the arduino to turn the relay on or off which in turn acts as a switch for each LED colour.

Works a treat. Took me a little while to solder up correctly, but when it was done, I couldn’t fault it. Finally, my booth is coming together. I will have mind controlled lights and a mind controlled game on a very shiny plinth. One problem is that I can only turn the lights on or off, not fade through colours. So, I’m gonna have to get creative with how I control the lights.

Oh yeah, I also put some images on my little photoscreen thing, this now sits in my plinth and displays a slide show of images detailing the story of my game to passers by. Lovely.

So I’ve been working hard recently.

Next I’m working on giraffe hat 2.0. Expect it to be bigger and better than ever. I’m doing this bastard right.

Mac mini stuff.

20 Apr

While posting about how the world we know it is turning to crap, I forgot to post about my project again.

I’ve been having more trouble with the mac mini recently.

It’s not that it doesn’t run my game, because it does that wonderfully. It just can’t do the very important task of talking to the kinect and sending that data to flash. That part likes to freeze up a lot.

I’m using a program called tuioKinect. A small tuio client that is able to pick up blobs which it thinks are hands (it figures out the proportion of the body that’s on screen and decides which part are the hands by how big they are in relation to everything else it sees at that given time) and then sends the data out over ports, a standard way for a computer to shift around this kind of data.

The program was written by one of the guys who built the reactable, so we know it’s got some good thinking behind it.

I’ve had the program on my laptop for a while now, and apart from the occasional freeze, I’ve had no problems with it. I’ve had the thing running for hours before while I’ve been testing my game and it worked flawlessly.

I put all the software onto the mac mini and the client freezes up after a few minutes of having flash open. Now that is just annoying. It happens every single time.

I went into Uni today to try the software out on the iMac’s there to see if it was just the mac mini. It was. The iMac’s ran it fine, no problems at all.

So, instead of having everything tidily tucked away in my little booth, I will have to hide the iMac under some staging in the Riverfront and have a long cable to connect to the projector. This isn’t ideal, but hey, it works. Who am I to argue with something that works well.

It’s a little annoying, but at least my project can still charge ahead.

Try and stop me now world. I’ve faced every single problem that you can throw at me and my project is still going strong. All that’s left is aesthetical issues, and that can be solved by some paint and some sewing.

Ha. I win.

More performance issues!

11 Apr

Right, today I got hold of the machine that will actually be running my project come exhibition time. A wonderful mac mini.

These bastards are small, so I can tuck it away nicely in my cabinet thingy and no one will see all the crap thats powering my game.

But, mac mini’s, especially the ones we have in uni, are quite underpowered. So, when I tested my game out on it, it works okay, but there is some problem with the video stuttering and a big problem with the level titles.

Yes, those damn pesky level titles again.

The problem I’m having is that the mac mini isnt powerful enough to render video at 1024×768 during a flash game. I’ve just found out the way to get around this problem. Double pixels!

I just make all the videos half their playing resolution, so 512x 384. This runs absolutely fine and dandy on the mac mini, and to be honest, you cant really see much quality difference. Especially considering that it’s going to be run on a big projector anyway, those things just love to lose quality.

So there we have it, the trick to playing graphic intensive videos in a flash game, lower the res.

little improvements

10 Apr

A lot of arcade games had the ability to see the current highscores from the main menu, giving you a target to aim for, and hopefully beat.

I learned this from watching King of Kong. Whilst there arnt many pictures available to illustrate my point, the ability to go round an arcade and see your name on the top highscore list of various games clearly had an impact in the 80’s as this highscore culture lead to intense rivalries.

If highscore lists weren’t easily accessible, then this phenomenon wouldn’t have been so common place.

My game was lacking this feature. The only way to see the highscore list was to get a top 5 highscore yourself.

BUT NOT ANYMORE!

I’ve put in a table on the main screen. Luckily, and by that I mean with immense foresight and fantastic coding skills, I had made extremely easy to create a top 5 highscore table and populate one on screen at any point within my game.

So I just had to copy the code and copy the table to the main screen section.

And there we have it, a main menu screen that gives you a target to aim for.

Performance anxiety.

10 Apr

Recently, I’ve noticed that at certain points in my game, i get horrible, horrible performance. The frame rate drops to an unusable state and makes the game unplayable.

The main areas where this happened were when the new level titles played over the top of the game, and when no enemies were destroyed whilst wearing the hat and they were left to appear on screen.

Now, the level titles I couldnt do much about. They didnt have a massive effect on the performance, just a short term thing while they were on screen, but the enemies problem did bring me big concerns.

The game would just crash under the weight of a screen FULL of enemies appearing at once.

What I could do to fix this, was to reduce the amount of enemies that spawned, doing this should help. Although, the problem did occur when the game wasnt really being played, actually playing the game doesnt have this performance effect, but I just cant take the chance.

Another thing I did which has helped performance no end, is to adjust the settings. I have now made my game GPU accelerated, and to kick this into effect, I am running it out of a .app projector. This has cleared away all the previous noticable performance problems that I had with the video overlays, even when my laptop has loads of heavy programs open, the game runs smoothly. So I am pretty confident now that it’ll run as it should do come show time.

Crazy dutch guys find Spaced Out

8 Apr

I woke up this morning (with the sunlight shining iiiin) to find that a website called kinect hacks had found me on twitter and sent me a link to a post they did about spaced out.

Initially, I thought that it was just some kind of link repost site where they turn over links etc. But no, this is an actual kinect hackers site where they like to show off what people are doing with the kinect, and they did a pretty decent write up of Spaced Out.

It’s quite strange really, they must have gone through quite a few posts to find all that information, but it’s nice to see that they were really interested.

Anyway, they’ve written some nice things about me and my project so, yay!

http://www.kinecthacks.nl/2011/04/08/spaced-out-flash-game-now-supports-kinect-test/

Adam points out flaws in Spaced Out

5 Apr

It’s fun to see other people play about with it. It’s far more intuitive now with the kinect plus whole game setup.

Glad that it works so well now.

Fixing things and tidying up.

5 Apr

Recently, I have been mainly doing the final tidying up of my game. It’s all looking ship shape now. I fixed the problems with the audio using FLV’s, I added a few little details in and I’ve just been tidying things up.

I made myself a to-do list, well, several infact.

I made one originally, and then I went through it and when everything was crossed off, I would go through the game again looking at what needed to be improved or finished and eventually the list went down from a big horrible list full of big, serious things to fix down to a small list that was mainly filled with “make it pretty”.

This is my big to-do list.

Interesting note: towards the bottom I start talking about difficulty within the game.

This has now been implemented (as I’ve ticked it off my list). I have done it in a nice little way that was suggested to me by Gary. Add a multiplier to the number which I check to see if your concentration matches.

You see, I have a variable within my code called attnNumber. This is a simple variable that I check against to see if you are concentrating enough to kill an enemy. All I have to do to make the game harder is to check what your health is, then mulitply attnNumber by 1.3 for the hardest difficulty. By the end of the game, potentially, you may need to have a concentration level of 90 out 100 to kill enemies.

And all that is determined by how much you have been hit in the first level. Simple really. If you lose no life by the time you kill bowie first time round, the game ramps up the difficulty. If you lose some life, it still gets more difficult, but not as much, attnNumber gets a 1.2 multiplier.

It’s quite a simple method, but it seems to work pretty well.

See? After that initial list, the second list got down to some really aesthetcial choices like sound editing.

To me, these drastically effect the feel of the game, so they are still important. Just not as important as fixing all the audio to stop the game crashing.

The sound editing was important as, without it, the tutorial level (i’ll come to that now) felt odd. The audio had too much silence before and after me speaking which could leave users confused about whether or not their actions were correct.

Having the audio play straight away as soon as they did something correctly is important to me as it reassures them that their actions are correct. Positive reinforcement at work there.

The tutorial level is a bit of an oversight really. I never really thought about one until Adam pointed out to me that launching into the game is incredibly confusing as you dont yet know how the controls work.

After he mentioned this, I was focusing on getting the game up and running fully before tampering with it some more, so it’s only recently that I’ve implemented this level at all.

It’s a very basic system, a series of checks at best. The game checks if you are wearing the hat or not, if you are it triggers some more audio which prompts you to wave your hand at the screen, do that and some more audio is triggered telling you to kill an enemy on screen. Do that, and you can start the game. All this is guided along by my friendly voice detailing the instructions.

It was only after doing this that I thought that the levels launched up too quickly. I thought that it needed a little pause between levels, just to clarify where you are in the game and give you a chance to prepare yourself for whats about to happen. So I made a quick little video intro text thing that plays overs things when you start. It’s just based off a tutorial i found ages ago, but I thought it fitted in really nicely with the whole feel of the game (colourful madness if you havnt guessed by now).

The tutorial I used is found here:

http://ae.tutsplus.com/tutorials/motion-graphics/design-an-awesome-80s-inspired-title-animation/

I just really liked the style and effects that were used to make the text effect, so I thought I could get some use out of it by having level titles.

Here’s a short little vid of that working:

[vimeo 21984923]

I’ve also added little skip icons on all the videos and made them skip able, just to save everyones sanity from seeing the same cutscene over and over again.

Prettyfying: Posters

1 Apr

I’ve been thinking a lot about how the physical side of my project is going to look recently.

I started doing some designs for postcard graphics. My idea was to have artwork on postcards to hand out at the show for people to take home with them.

The original idea was to have character cards, so that each card had a different character on them. I started looking at retro art and the promotional material for Tron Legacy, they had some good artwork done for them. The cards were very 80’s looking and contained painted art to promote the fake games of encom.

I wanted to do something a bit like this, so I had a go at doing a digital painting, but it wasnt very successful.

I was told about the artist Tom Whalen who does some very nice fan poster art for star wars and Olly Moss who also does fan art for star wars.

Their simplistic but bold style was something that inspired me.  I really like how the posters also focus on individual characters, and this was something that I wanted to include in my promotional artwork. It’s all about the characters anyway so, I thought that drawing inspiration from these artworks and style would result in some nice work. So I went and did some art along those lines. I came up with this.

I think this is pretty nice, and works well as one big poster with the four characters in them as well as individual card prints.

I think I will be continuing this style for the booth art and other promotional materials.

Problem solving: Audio

1 Apr

For the last few days, I’ve been wrestling with one of the biggest problems I had, the audio.

At first, I thought that the audio problems I was experiencing didn’t really affect the game, I thought the sounds were just malfunctioning due to some Flash quirk.

It turns out, after some debugging, that the audio was causing a lot of other problems too. It was causing most of the restarting problems I had been seeing, so I needed to rectify this problem pretty sharpish.

After spending some time finding a new audio framework for flash and then trying to incorporate it and then realising that that didnt work. I then decided to re write the way my code was written because I thought it might be down to an unhandled event listener.

I spent a lot of time re writing things only to find out that those things had nothing to do with my problem. Flash just wouldnt play the sounds I was asking it to.

This was just so weird. No one else seemed to have experienced this problem online, so I tried a solution that I was saving till last because it’s a little strange. Saving all my audio as FLV video files and then playing them that way.

It worked. The audio was now playing reliably and the game could restart and play through as many times as I wanted to.

I still find it so weird that the audio just refused to play like it did. It also, unusually, seemed to happen on about the third play through. One the first and second play, the audio seemed to work okay and then it would crash as at least one audio file wouldnt play and then my game would stop due to the fact the code would try to find and stop a file that wasnt playing or it couldnt find.

Flash is just so strange some times.

Anyway, now that bug has been taken care of, I can move on to more fun things again, like making it look pretty.

Problem solving: Highscore lists.

1 Apr

A while ago, I thought I had the highscore list for this game sorted.

I wrote the code for it, got it looking alright and had it implemented as a working part of my game.

Then I introduced the kinect and suddenly nothing it didnt work and it was too hard to control.

The kinect gives you a better method of interaction for my game, but it made data input harder.

The problem with the highscore list is that it requires you to enter your name. Of course the best method of interaction for this is a keyboard, but thats not something I wanted to use.

So, as I set about slowly debugging the highscore interaction to find out why it wouldn’t work, I got more and more frustrated and more inclined just to give up on it all together.

Thats when I decided to rewatch some documentaries about arcade games to inspire me once more.

I watched two documentaries, The King of Kong and Chasing Ghosts. Both are documentaries about how the highscore list of an arcade game is very influential and a big part of what makes an arcade game.

The documentaries both follow some of the best arcade game players in America who try to get the highest scores in their favourite arcade game.

Chasing Ghosts talks more about the highscore culture and how having a highscore on a game made you a celebrity in that arcade.

Not having a highscore list at this point would be very foolish of me, so I plugged on knowing that I was bound to find an answer.

I had a thought, maybe I could replace the keyboard?

Maybe I could replace it with a photobooth type thing. Instead of typing in a name, you would pose for a photo.

But, as I was coding this, it turned out that this was even harder to figure out. Saving text locally and importing that data back in as a highscore list was one thing, but saving photos into an array and then sorting them was nearly impossible.

I scrapped that idea and went back to the keyboard thought.

It turned out that the hit detection wasnt working correctly. One of flash’s quirks I guess. I renamed every key instance name and it started to work again.

Then I set about redesigning my current interface to be more kinect friendly.

First of all, I noticed that there was trouble when it came to buttons being very close together. It made it hard to hit one button because the cursor would be hitting two.

I fixed this by spacing the buttons out better, making them rounded so there was more space in between each key and then making the target area of the cursor in this screen smaller.

With these changes, it was working a lot better. Although, this screen does not like having multiple hands up in the kinect at a time.

Well, now I have a working highscore screen again and it’s far more functional than it was before, plus it looks nicer. So isnt life grand.

Making a stand

29 Mar

Recently, I’ve been making the stand that will house my final game. It’s a simple wooden structure that looks like it could fit in a museum.

It only had a few requirements, that it could hold the kinect on top, house a screen for instructions/graphics and house the cartridge slot.

Building it was fairly simple, my dad has a load of tools such as a bandsaw so I was able to cut up and create the structure in a fairly short amount of time.

Drawing inspiration from museum panels and interactive displays, I made a small podium with a sloping top. The top houses everything that’s needed for my project.

I didn’t use any plans and pretty much designed it on the fly. I don’t know whether or not this was a foolish move as it all seemed to work in the end, so I would say it was a success.

My dad had a load of left over wood from rehousing my mums shop, so, I got to use that. The whole thing is now 100% recycled. And, as such, it’s height was determined by the height of the wood that was available to me. Luckily, it was just the right height.

I set about building the podium. It’s a very simple structure. Four sides that slot and screw together. Yet, it looks pretty good.

Now I just have to decorate it so it fits in with the rest of my game.