Goal Update 25th of January 2015

The last couple of weeks I’ve been in Lanzarote on holiday with family, so I haven’t got any work done! So rather than a dev log, here’s an update on how my 2015 goals are going. Overall, pretty well I think.

I ran a couple of times in the first week, then faltered a little, not helped by going away. I’ll be starting over tomorrow morning, despite it being very cold at the moment. Need to break through and make it regular.

I actually began my game for this month, Spacelunky, a bit early because I couldn’t concentrate on the work I was supposed to be doing. It’s intended to be a very basic version of Spelunky, but set in space, hence the awkward placeholder title. What that means is it’s a 2D platformer with generated levels, lots of hazards, and when you lose you start from scratch. I have definitely bitten off more than I can chew, so we’ll see how complete it ends up being. Here’s a screenshot from where I left off, with a basic tilemap, some art, and you can jump around:

Music-wise, I’ve picked up FL Studio, and have found it massively easier to understand than LMMS. So technically, I’ve already completed my goal to be competent in it! However, making the music itself is really hard. I’m not sure what I was expecting really. I’ve created a short song, embedded below, where I basically worked on it for 1:30 hours and then ran out of ideas. I’m planning on entering February Album Writing Month, a contest where you have to create 14 songs in the 28 days of February. Right now, it looks like it’ll be really tough, but I’m still hopeful I can do it.

A couple of Sundays ago I worked through an introductory Blender tutorial, and then created a model of a barrel on my own. It’s certainly not the best barrel or anything, but I’m still pleased with it.

I didn’t take my drawing calendar with me, so I’m now working through it a few pages a day until I catch up. I’ve rather lost my enthusiasm for it, but I’ll try to keep on regardless.

Tomorrow, work on Spacelunky begins properly! Looking forward to it, I should probably be more organised for it than I actually am though.

New Website!

The new WordPress theme I’ve been working on is done, and assuming you’re reading this on the site, you’re looking at it right now!

It’s been due for a lick of paint for a long time, but since I made websites for F!shing and Quick Quote, it’s been looking increasingly shabby. When I started using it in 2013, I told myself it wasn’t complete and that I would continue working on it, but I never did. So now, a refresh, and I’m determined this time not to move on to another project until I am absolutely finished!

For reference, and because I think it’s fun to see the progression, here are some screenshots of the different themes I’ve made and used:

My first theme, from back in 2012. Yuck.
My first theme, from back in 2012. Yuck.
The overly-orange theme I've been using until now.
The overly-orange theme I’ve been using until now.
The new theme in all its glory! ;)
The new theme in all its glory!

Even though I wouldn’t consider myself a designer now, I’ve certainly come a long way. 🙂

The header could probably use some work. I’d like the games page to look different, and there are a lot of games I need to add to it, as I got out of the habit over a year ago now. But overall, I’m happy.

Goals for 2015

So, last week I mentioned wanting to make more games this year. I’ve had a bit of a think, and decided on several goals for 2015. I think this is the first time I’ve made a conscious effort to do this. Anyway, let’s go!

Become fit enough to run 5 kilometres

For probably at least a year I’ve been intending to start Couch to 5k, a running program that takes you from no exercise at all, to being able to run 5km in one go. I’m incredibly unfit, but as it hasn’t caused any actual problems I’ve been basically too lazy to do anything about it. I’ve always felt too busy to devote time to exercise, and too embarrassed to go to a gym. This time though, I think I can really do it. I made a start on January 1st, and I’ll be running M-W-F mornings from now on. It should help my mood too, as I’ve generally been pretty low recently.

Make One Game a Month

I wasn’t sure before whether to actually participate in 1GAM or to come up with my own system of doing lots of small projects, but I think 1GAM is the better idea, if only because it’s an external thing that I can’t change the rules of. How I’ll actually go about it is subject to change, but to start with I’ll devote the last full week of each month to a small game project.

Become competent in a music program

I’ve wanted to learn to compose music for ages. I hum a lot, often making the tune up as I go along, but any time I’ve tried to use software I just get confused and give up. I’ve created very short songs for a couple of jam games, but always in a rush, and the next time I go to do so I can’t remember what I’m doing. So, a proper effort this year to learn some software properly – I’m considering buying FL Studio so I’ll feel obligated to get my money’s worth. 😉 I’m not going to worry about making good music, only being able to make music at all. By the end of the year, I want to be using my own music in my games.

Become competent at Blender

Being able to create 3D models, however basic, would be very useful. I’ve learned from experience that Blender isn’t the sort of thing you can just pick up in a game jam and start using! I want to be able to create simple models, texture them, and animate them. As with music, I’m not going to worry about making good models. Just being able to use the software is the goal, and then I can practice and get better. Again, by the end of the year I want to have made some games with my own animated models in.

Draw more

I used to draw constantly in high-school, then got out of the habit. I’m using a desk calendar with a daily drawing prompt to get back into the habit. The goal is only that I stick with it all year. 🙂

In other news, the website redo is progressing well. I’m not entirely happy with it, but it’s a definite improvement on the current one. I also got distracted and started tweaking Snowman Sumo – mostly polish, but also fairly-inept AI that I may or may not keep as it’s too easy to fool. I’ve also made F!shing pay-what-you-want on Itch.io, because the EU VAT changes mean either that or removing it from there entirely. Enjoy!

LD31 was my best yet!

The Ludum Dare 31 results are in, and Snowman Sumo has the best ratings I’ve ever had in all but two categories! I even managed to creep into 63rd place in the humour category. I’ve made a little graph of all my results, embedded below:

There aren’t really any patterns, so who knows how well I’ll do next time, but this is a lovely way to end the year. 🙂

2014 in Review

So, we’re coming to the end of 2014, which is a good opportunity to look back at the past year, and forward to the next one.

I’m trying not to let this post be too down, but looking back, I can’t help but feel disappointed about this year. I’ve worked hard, and improved at motivating myself and being more productive, but I’ve actually released very little, and with similarly little success.

The biggest thing this year was releasing my first commercial game, F!shing. I learned a lot from it, but also made some really dumb mistakes. At some point I might do a full post-mortem on it, but a key things is that when it didn’t sell, I kept obsessively working on it, hoping that the next update would convince people to buy it. I still feel that way! I still think that it would do really well as a local multiplayer game, but I really need to move on.

I’ve also found myself working on Quick Quote some more, even though I’d told myself before (multiple times) that it was done. It’s done pretty well for my very low standards – 149 current users counting both free and paid, out of over 550 total, and those numbers do continue to go up. I’m hoping that this next, and absolute last, feature update will help convert some more free users to paying customers, but even if it makes no difference, I’ll be able to say it’s the best I can do. In some ways that’s more important than the money.

With both of these, I’ve struggled to move on when they were unsuccessful. I feel like I can’t have all the work I put into them go to waste, even though I’m wasting more time continuing on them. I should hardly expect my first attempts to be well received, but I keep telling myself that a little more effort and they’ll take off.

In contrast, I’ve been far more pleased with the handful of jam games I’ve made this year. Procedural Death Racing is very rough, and I doubt I’ll ever expand on it, but I stretched myself with it. SWAN QWOP is pretty terrible, but it kind of works! OK, these first two are bad examples. K!cking was fun to work on and turned-out alright, even though I didn’t manage what I was hoping. Lorries In SPAAAAACE! made me realise how good Unity is for prototyping, and it was pretty well received. Snowman Sumo, though, feels really polished to me. There are a couple of things that would need adjusting for a proper release – such as some proper music – but I’m so pleased with it. Ludum Dare judging finishes at the end of this week, so I’ll soon know how well it does, but the feedback I’ve had for it has been really positive. A nice thing to end the year on!

So, perhaps my goal for 2015 should be to make more, smaller things. Simple things, self-contained, and if they don’t work I force myself to move on. I attempted One Game A Month before, and it didn’t really work for me, but maybe I need to try it again, or something else along those lines. Maybe even devote a day a week to side projects. I’ll have a good think about it. 🙂 In the mean time, I’ll probably put out a small K!cking update, mostly to fix some bugs that I never got around to, but maybe some polish too.

I also need to sort this website out. It looks a little horrendous, and I’ve not kept things like the games page updated. I was really pleased with how the Quick Quote site turned-out, so hopefully I’ll have something better here soon.

Game Design Lessons: Paradox’s Limits

Game Design Lessons is an irregular series of little things I’ve noticed in games, which I think are worth sharing.

For this first article, let’s talk about limits in Paradox Development Studio’s grand strategy games. A lot of games treats limits as solid barriers. For example, you might have a cap on the number of units you can have – perhaps with ways to raise the cap, but you are unable to ever exceed it. In Paradox’s strategy games though, this isn’t the case, and I think it makes things a lot more interesting.

For example, in Europa Universalis IV, there are a whole host of limitations: you can only have strong relations with so many nations at once, you can only have so many units of soldiers, you can only declare war if you have good reason and without a truce. Except… all of these limits can be broken! Breaking each of these limits has negative consequences: each diplomatic relation you have over your limit costs you one diplomatic point per month, which could otherwise be spent on improving your technology or on a variety of other things; having too many soldiers costs you far more money to maintain them; declaring war without a reason, or during a truce, will destabilise your nation, opening you up for rebellions and a variety of other troubles.

Each one of these trade-offs (and there are many others) is useful in some circumstances. They give the player more interesting choices to make, and more options when things are tough. Whereas with a hard unit cap the best option is always to have the maximum number of units, with a soft cap the player has to weigh-up the benefits of exceeding it versus the penalties of doing so.

Dev Log 20th of December 2014

The Quick Quote reorganisation work continues. In fact, I’ve just about finished it- a couple of minor things that stopped working that need to be reimplemented, then test the upgrade system until I’m confident it’s stable. Doing this sort of conversion is a little nerve-wracking as it has the potential to completely erase the user’s existing data if it goes wrong. It also looks like it will have taken 5 times the estimated time, which is pretty terrible. I’m still working on estimating though, so I’m not going to beat myself up about it.

One thing that makes all this conversion worth it is that I’m having to learn all the database code that I’ll need to use in my next app. Sometimes mistakes are OK, if only because you know not to make them in the future! I’m no longer convinced this update will be done this year, but it should be out before the end of January.

I think I’m going to need a game side-project soon, I’m getting itchy!

Last Saturday I had a new graphics card arrive, a Radeon R9 290, which is enormous and shiny and will hopefully end the various crashes and visual glitches I was getting. My old card had 512MB of RAM, which I think was causing the problems, along with it being old enough that it’s not supported properly by Windows 8, and I had to find some fairly old drivers to even get it to work at all. The new one has 4GB, and runs anything I’ve thrown at it at maximum settings with over 60fps, so it should last me a long time. 🙂 Unfortunately, Firefox was still having the same problems as before, so I’ve swapped to using the Nightly build because it actually has a 64-bit version available. It seems… a bit flaky, but as it hasn’t had any catastrophic failures yet it’s still an improvement. If all else fails, I’ll switch back to Chrome, but I do like Firefox.

There are a couple of little articles I’m planning on writing, examining little things in games. The first, about limits in Paradox Development Studio’s grand strategy games will be out in the middle of this week. I had been working on a longer article about shaders, but it got a bit long and meandering and muddled, and was going to take a forever to finish. So, shorter articles and dev logs until I can figure-out how to write an outline and then stick to it. 😉

No More Games! Also, Here, Have Another Game

So, two things to talk about today. Neither of which is Quick Quote, because I’ve not had much time to work on it this week.

As I previously mentioned, last weekend I created a game for Ludum Dare 31. It’s called Snowman Sumo, and is… a game about sumo-wrestling snowmen. My game names are nothing if not self-explanatory.

This is my most polished jam game to date, and I’m really happy with it. You roll around, picking up snow to increase your size, then knock the other player’s snowman into the water. I won’t know how well other people liked it until a couple of weeks’ time when the voting period ends, but there are a couple of things I thin k went particularly well.

Firstly, using my voice for sound effects and music was much quicker than doing it “properly”, and hopefully makes it funnier. Every LD, I make the mistake of jumping into a music program that I haven’t tried to use since the last jam, and inevitably get confused and waste time, before giving up. Going a cappella is much simpler for me, and next time I’d like to do something more interesting with the music.

Second, I used Inkscape to draw the game logo and other text. Usually I scrawl something in GIMP, which generally looks horrible. I’m not hugely comfortable with Inkscape, but it’s so much easier to get some text that looks nice, with a gradient and outline. Makes things look much smarter.

I cheated a little with the 3D models… I’ve tried to use Blender and Milkshape before, and failed miserably to get anything usable. So, I ended-up constructing the land, water and snowmen out of Unity’s prefabs, and texturing them with materials. This worked better than I’d expected, but I really need to spend some time learning to create models properly before I attempt something 3D again. I happened to get lucky with a game that didn’t need anything complicated.

Making such a simple game meant I had a lot of time for polish, and to explore Unity features I wasn’t familiar with. SS has particles, sound effects, physics, the input system, and even a shader for the water, none of which I’d tried before.

No More Games!

With regular game bundles and dramatic sales, it’s easy to build-up a backlog of games you’ll never play. I think this is even worse when you develop games, as you get exposed to a lot more of them. Mid-November I decided enough was enough, and it was silly to keep spending money on games I’ll never get around to, so I decided not to buy any more for the rest of the year, regardless of any sales. I’ve now decided to continue this for all of 2015. This is partly because I’m going to spend the money I would spend on games on a new graphics card to replace my ageing one, but I think it’s generally a good thing to try. It’ll force me to finally play some things I have been meaning to for years. Let me know if you’re going to try this yourself,I think it would be fun to all do so together!

Dev Log 5th of December 2014

This week, it was back to work on Quick Quote. There are a bunch of improvements I want to make with how quotes are handled, such as adding customer details, and marking them as an invoice. On Monday, I added the ability to attach a note to a quote, which appears when the quote is sent to the customer. However, when starting on the other features, I ran into difficulties with the way quotes are stored internally. It’s caused me problems in the past, and I’ve finally decided to spend time reorganising things.

Technical Debt

“Technical Debt” is a measure of how awkward the code is to work with. When developing software, often you don’t fully understand a problem until you’ve already solved it once. At that point, the solution works so you move on, but it might be overly complicated, or slow, or less versatile than it should be. As this debt builds-up, development takes longer and certain tasks become impossible. Paying-off this debt takes time, but makes things easier in the long run.

In this case, when I began on Quick Quote, in my inexperience I decided to store quotes as XML files, rather than in a database, as it would be simpler. Up to a point, this has worked well – I’ve been able to gradually add new things to the quote files in a backwards-compatible way without having to do potentially messy database changes. The downside is that files have limited metadata – they have a name, and the last time they were edited, and not a lot else. For the saved-quote list to display or sort by anything else, such as whether the quote is an invoice, it would need to read in each file and process it, which could be very slow if there were a lot of quotes. This is the main reason I wanted to switch to a database, the other being that Android’s data-synchronisation system is poorly suited to working with files, so I’ll be in a better position to implement that in the future.

The biggest hurdle for this change is that everything needs to be converted the first time that Quick Quote launches, and that’s what I’ve spent the rest of this week on. It’s been slow work, as there are lots of things I’ve not done before, but it’ll all be useful for when I make future apps.

Ludum Dare

This weekend is Ludum Dare 31! LD is an online event where people create a game from scratch over a weekend. I’m hoping to participate, in which case I’ll have a new game for you by Monday. I’m hoping that the theme will be ‘Deep Space’, so I can make a rocketry game, but we’ll see.

New Quick Quote Website

For a while now, Quick Quote‘s web page has been essentially just a glorified blog post, on my very orange website here. So, this week I gave it a proper home: http://samatkins.co.uk/quick-quote/

I’m really pleased with how it’s turned-out. I’ve never considered myself to be much good at design, but I’ve had positive feedback about it. It’s also responsive, unlike the website I did for F!shing – as a mobile app, it was important that it would work well on smartphones, even more so than on desktop browsers.

The one thing that really sticks-out now is the trailer, which is quite old now and only demonstrates the free version’s features. I’ll be recording a new one after version 1.5 ships, sometime around the end of the year.