Tuesday, 16 February 2010

Napalm Squid launches it's first game: the Daily Slide Puzzle

It is coming to the end of the financial year at work and having not taken much time off from my day job as an ASP.NET developer in the last twelve months I had a bunch of holiday to use up before February 28th. I had the last five days off last week and I used them to finish up a little side project I've had running for a while now.

Napalm Squid

A few months ago myself and a friend, Damien, decided to have a go at making some casual games and see if we couldn't make a few quid along the way. We originally talked about this back in October 2009, Damien had a domain name that he's been sitting on for a while and logo to go with it, Napalm Squid Games was born.

The Idea

Back in October I had been messing around writing some collision detection in ActionScript and I had a little tech demo of some arbitrary shapes that slid against each other but never overlapped. Playing around with this demo reminded me of the slide puzzles I used to have as a kid and I started thinking that a slide puzzle might be a good 1st attempt at a game for us as they are pretty simple, the rules are basic and well known so there wasn't much for us to think about. In the interest of getting to version 1 and actually launch something we decided to go with this concept for our first game.

Now, I'm not fooling myself. This is in no way the sexiest game ever made, nor will it make us our millions, but you have to start somewhere and keeping it fairly simple has allowed us to produce something to a reasonable quality in a fairly short time frame and it's important to get something out of the door.

Building The Game

These days there are a hundred and one platforms you could go with for developing casual games all with their pros and cons. The iPhone is the obvious one, everyone has heard at least one incredibly success story of how a guy spends an afternoon locked up in his room and emerges with some game on the App Store making ridiculous amounts of money. Then there's old faithful Flash. Flash has been around since the dawn of time and folks like Shockwave.com have been using it since the then-Macromedia (and now Adobe) set the site up in 1999. The original Shockwave platform is a bit to old and dormant for my liking to be considered a serious contender. Plus, I've grown to loath Lingo even though eight years ago it was the best thing in the world and really got me started in programming.

There's also a bunch of other new(ish) web based platforms that I'm keeping in mind like Unity, which looks really nice as it can publish to the Web, iPhone and to the Wii, and would allow me to develop in my beloved C#, as would Microsoft's XNA, which can be used to publish to Windows and the XBox Live Arcade.

Most of these would involve some learning on my part as the developer (Damien is a game designer), even the ones which use C# naively as there are whole new class libraries(XML) or programming paradigms to learn (Unity) . Having been a big fan of Flash and ActionScript for years and being well versed in the MovieClip I chose to go with what I know.

Other Stuff

In getting this 1st game released there has been so much other stuff that's taken a bunch of time too.

Making Money

Ahh money, we love it! and if this is ever going to be a viable concern there has to be a way to make money from it. After a little bit of research I found Mochi Ads from Mochi Media.

Getting this up and running was possibly the easiest thing I've ever done. Sign up, create a profile for the game, download some ActionScript and add one line of code to the game. Monetization sorted...

Websites

We obviously needed a website or two. It's no good having a web game if you don't have a website to host it on.

Being a web developer in my 9-to-5 meant this wasn't such an issue. I got some cheap but good quality hosting from Dreamhost which I've been really impressed with to date, you get full Shell access to your account which is always a bonus and you can host as many domains as you want, use as much disk space as you want and thrash as much bandwidth as you need.

In office hours I'm an ASP.NET developer and I love it, years ago I was all about PHP but I've grown to realise there are better ways to spend your life. That being said, the cheap hosting is Linux hosting and so in the interest of getting to version 1, I went with the PHP based Zend Framework. I'd had a look at the Zend Framework about 6 months ago when I first me our current student placement, Ben Waine, who was singing it's praises. I like ZF, it works as nice as any other MVC library I've seen, however; at the end of the day, you still have to write your logic in PHP which makes me feel ill.

What Next

Getting our first game released has given us a real buzz! Since I put the site live last Wednesday (7 days ago) I've fixed a bunch of bugs and made a few tweaks to the game. Nothing gives you the impetus to fix an issue more than having the bug out in the wild and visible to your users.

Damien is working on up the idea for our next game while I do some R&D on the programming side. We'll also be doing a few updates to Daily Slide Puzzle, largest of which will be the ability to play previous puzzles.

It's exciting times and we've certainly got our work cut out for us.

Sunday, 10 January 2010

Error when Running or Debugging an Android app from Eclipse with your Phone plugged in

As you can probably guess from this post, I've got my self a new phone. It's a T-Mobile G2, otherwise known as an HTC Hero.

I've been dicking around with the SDK and the Eclipse ADT plugin since I got it on Friday.

Today, I've started running into an error where Eclipse says an error occurred when I try to Run or Debug the application on my hardware (not an AVD).

Here is the full error from the Eclipse error log.

null
Error
Sun Jan 10 18:27:37 GMT 2010
An internal error occurred during: "Launching Notepadv2".

java.lang.NullPointerException
at com.android.ide.eclipse.adt.internal.launch.AndroidLaunchController.launch(Unknown Source)
at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.doLaunch(Unknown Source)
at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(Unknown Source)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:866)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1069)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)


So, I started Googling and didn't really find much but I do seem to have sorted it.All I did was close Eclipse, unplug my phone from the USB lead. Reconnect my phone, and fire Eclipse up again.

That seems to do the trick.

Monday, 9 November 2009

Passing a User Generated Image From Adobe Flash to ASP.NET

A few months ago I was browsing StackOverflow while waiting for a question I had asked to be answered (typical SO user behaviour or am I a bit of a freeloader?) when I came across a question asking how to pass an image from Flash to ASP.NET and I thought "this is definitely one for me".

I have four years experience with ASP.NET from my day job at a Leading UK Marketing Agency and about a million years experience with Flash from being a student at the Hull School of art and Design, teaching Interactive Multimedia at the University of Lincoln and using it in personal and professional projects.

I'm a massive fan of StackOverflow and find it an invaluable resource, so in the interest of giving a little bit back to the community, I placed a bookmark on my desktop with the intention of writing a solid answer to the question.

Four months go by and finally, I get round to doing it. And so, you can now read about how to send a generated image from Adobe Flash (using ActionScript 3) to an ASP.NET backend and hopefully my karmic daemons will leave me alone for another week.

Tuesday, 20 October 2009

RSS Readers - I'm not sure I like them...

I recently had to format my laptop (again) after having successfully gregged it™ and it was shortly after this point, when I fired up Internet Explorer and realised that I didn't have any bookmarks, that I started to think about using an online RSS reader, to remember them all for me.

After exactly _zero_ seconds looking around I opted to go with Google Reader, mainly because "Google" is synonymous with "Homepage" these days, and so I've spent the last few days remembering which blogs I read, which one's I only read because they were in my Favourites Bar (I might bookmark something, but the number of times I actually use a bookmark that isn't on my favourites bar is few and far between) and which ones I really didn't give a toss about any more.

So now I've got 16 blogs wired into Reader and I've been using it for a few days and I'm first reaction is one of discontent! This discontent is spawned of a few symptoms of using RSS and an RSS reader, so not Googles fault.

Firstly, it doesn't feel right. To me, part of the reading experience is visiting the authors site to see if they have written anything new. Seeing the page layout, the fonts and colours help me find the mental voice I associate with the author. It helps me read the post as if they were speaking or lecturing to me.

My second issue with the RSS reader is how some sites choose only to publish a snippet of the article on the feed, so you have to click through to their site to read the full story. This breaks the spell for me, before I used an RSS reader I was going to visit these sites regardless. Now that I do use a reader, and don't always get the full story, it feels like I've just added an extra step to the process of reading these articles. Granted I can see which blogs have new articles and which don't, you could argue this saves me time, but combined with the experience of reading feeling different, it compounds the dissatisfaction with the experience.

All that said, I've only been using it for just under a week now, so I might be flying off the handle.
I'm going to stick it out for a couple of weeks and see if it improves my quality of life. It will also give me something to write about too.

Gregged

-adjective

  1. Make a computer Operating System nigh-on unusable within a relatively short period of time, usually in the region of 6 months after re-installing the operating system and all required software.

    See also broken.

Wednesday, 14 October 2009

Thoughts on EPiServer Customer and Partner Day 2009

Yesterday I was at The Cumberland Hotel in London for this years EPiServer Customer and Partner day. It was the first time I've been to the event so I wasn't sure what to expect but over all I enjoyed the day.

Of the items on the itinerary the highlights for me were:
  • EPiServer B2B Adapt and EPiServer B2B Prospect
    These two new products (although based on existing technolgies) offer fantiastic insight and extreamely easy integration with your EPiServer sites.
  • EPiServer CMS 6 for Developers (and part 2)
    In these two talks we were shown how some of the new features of CMS 6 work which look like they're going to bring a lot of power and flexibility to the system.

    The Dynamic Data Store is built on a BigTable-esque schema and allows you (through the use of a few simple Class and Member attributes) to store and retieve any POCO or other class with ease.

    CMS 6 has a new user dashboard and we were also shown how to use ASP.NET MVC to build new dashboard widgets.

There wasn't really much bad stuff throughout the day, it was the usual mix of marketing babble and product releases, with the exception of one event. There was a presentation from the marketing director for SLH and the MD of their digital agency, Fortune Cookie.

I felt this talk lacked a real purpose as it meandered on for 40 minutes. Don't get me wrong, the guys doing the presentation seemed lively enough, but the thousands of bulleted slides didn't hold anything for the two audiences. To me, the Customers (of the Customers and Partners day) would have likes to be shown how SLH used specific features of EPiServer to achieve their business goals, and I don't mean shown like a "demonstration", just saying "XXX helped us achieve YYY", and as a Partner, I would have liked to have seen similar things.

Overall a good day, but I hope they pick a better closing act next time.

Saturday, 4 July 2009

Blogging and advertising. Pt.2

Back in May I posted that I was going to give AdWords a go on this blog and see what came of it. Well after two months, 722 visits and 856 page views the results are in... It didn't work, I'm still not a millionaire. But I think I have learned a few things over the last couple of months.

My "audience" just isn't ready to make me a millionaire.

To me this means a few things:

  1. I just don’t pull enough traffic.
    As I’m sure most small-time bloggers think to themselves  every so often, why would anyone want to read anything I’ve got to say. Well, I often think this but then I check my analytics and notice that I’ve been getting around 320 visitors a month and to someone as small-time™ as I am, this is incredibly encouraging and impressive.
  2. The traffic I do pull isn’t the right type .
    My biggest hitters (in terms of traffic per post) are my article from 18 months ago about uploading and resizing images, accounting for roughly 50% of my hits per month, my post about multiple order-by’s in SQL (aprox 19%) and since I posted it on the 14th June, my post about getting the Subversion revision number into your project output has been responsible for 17% of my traffic. What does this have to do with the point I’m making? Well these articles are technical “how-to” kind of articles, and being a programmer myself, I know how people read these things.
    1. You do a Google search for what you need to do.
    2. You start clicking links.
    3. You read the first sentence or two to see if it sounds like you’ve landed on the right page.
      1. You either bail out because it’s not the right page or…
      2. You start scrolling up and down the article to see if there is a nice concise chunk of code you can copy.
      3. You bail out because you’ve got what you came for.

    What this means is that the visitors aren’t here to read what I have to say, they aren’t going to browse around the site, they definitely aren’t going to be bothered to click on advertising.
  3. My visitors are the wrong type of person.
    As I commented in my original post. I don’t click on advertising. I get this funny feeling inside that it’s a lie, that if I search for something, then The Google is good enough on it’s own to find the right thing, and that anything that has been surreptitiously crammed in at the top, with a different colour background to draw my eye, is just bad.
I don’t like the idea of advertising on my blog.

Well not this blog anyway! I’ve recently been listening to the Stack Overflow Podcast, a couple of times recently Jeff and Joel have mentioned Cognitive Dissonance. I’ll let you read the the first sentence of that page rather than me try and paraphrase it…

Any way, my point being, since I put the AdWords on here I’ve been checking Analytics with vague regularity to see how much I haven’t made. I’ve been trying to think of all-star topics to write about in order to earn me a million. I applied extra pressure to something I was trying to do for personal improvement reasons.

This, it turns out,  is beyond useless, as I can barely write anyway (although I’m doing OK today!), having this extra pressure made me super-illiterate. (Let’s not even mention spelling!)

The upshot of all this is, after a little over two months, I’ve removed AdWords in an attempt to lower the pressure and enable me to write a bit more freely.