• Archive / RSS
  • 2012-02-08 1 note

    Learning to make Game Art

    Of all the games I’ve made (or tried to make) there’s been one common issue - Art. Whether it’s in game sprites, 3d models, background art or marketing collateral I have to either beg, borrow or buy (note not steal) it. When I’m writing a commercial game it’s not too bad to pay for graphics but it still leaves us with the problem of updates and fixes to the art. That just adds up to slow down and administration - two things I hate.

    So in the interest of being self sufficient I’m trying to learn enough to be able to create art for my games at a quality high enough to mean I don’t have to replace them. That doesn’t mean they won’t get replaced just that my hand isn’t forced. Anyway justification over, on to the art…

    Sprites - I love retro SNES/NES style sprites. I’m generally moving in that direction in my games. Where to start? I found Tsugumo’s Tutorial really useful, specifically this page. It shows you in nice easy steps how to create a simple character sprite. Mine wasn’t very good tho - at least I wasn’t happy with it. I knew what to do but I just couldn’t get it to look right. So, how about basing it off something else. I’ve been using Oryx’s sprites for my games Legends of Yore, so I went for the warrior and tried to use it as a basis:

    Pretty happy how that came out and now I had some basis to work on everything became easier. How about some animation? I need walk and attack to start with, this took a lot longer and a lot more iterations:

     

    I was pretty astounded at how these came out. Once the basic character was in place it was trial and error to get to something reasonable quality that I could use. Trial and error took an awfully long time but it was very rewarding once done. Not sure how long I could stick at it! Next I tried some more characters and seemed to be easier now I had a style to work against, here’s what I came up with:

             

    Pretty content with how they came back. However, as always I asked for feedback and some of the wonderful pixel artists on TIG Source came back with more tips and some examples on lighting - so I’m about to look at these next:

    Marketing Art - this is one thing I’ve definitely learnt through trying to sell games, there’s an awful lot of art that you need to be able to advertise, publicise and distribute your game. This includes banners and promo images, not to mention all the art you’re going to need to satisfy the App Store, Android Market, Blackberry App World and Steam.

    This type of art needs to be bigger, more refined and fill larger areas. On the bright side it shouldn’t need animation - so I’m thinking just some set pieces would be great. I love the manga art style so I picked myself up a how to draw manga book and a set of ProMarkers. The book is fantastic it gives you a set of examples to work against and also some details about how to create your own characters and styles. My first attempt came out like this:

    This was ok, until my girlfriend (an artist) did a much much better one. I had trouble with precision inking, too much messy edges on the black. Got a better inking pen and tried again, here’s the stages:

    Much much happier with this one, though it was as with the ghost it was a follow along from the book. Next step? Try creating something myself:

    Well as proud I was of it, the colouring sucks and the character just looks really really stoned. Right, I have a lot to learn and I’ll probably bore the hell out of your blogging about it. Anyway, next steps are to ink a character, scan it in and colour it using Inkscape rather than with pens. Hopefully this will get me some better results.

    In summary, art is really really hard but if you spend long enough trying, get enough sources of information and ask for help you can get somewhere. Hopefully I’ll eventually get good enough, I’m pretty pleased with progress so far.

  • 2012-02-02 6 notes

    Getting Started and Getting Things Done

    Most of my games aren’t amazing. Most of my games aren’t revolutionary. Most of my games don’t get lots of press. What my games do get is done. Now and again I’ll get a tweet that asks how I produce stuff quickly - is massages my ego a great deal. So, here’s a few suggestions that I try to follow and I’ve found it helps me get things done.

    Getting Started

    1. Focus - don’t keep changing your mind. When you’re starting out the choice of language, tool, framework or engine doesn’t really matter that much. They all teach basically the same thing and they all have communities to get involved with. Choose one, GameMaker, Unity, Java, XNA, Flixel. It doesn’t really matter but stick with it. Don’t get tempted to change when you get stuck. All that happens is you waste time and get stuck again when you reach that point in. 
    2. Persistence - you’re going to get stuck. You’re going find it frustrating and it’s going to seem impossible. Given time you will make it through. Don’t give up because it’s hard even though you may well want to throw the computer at the wall by the end of it. Take a break, step back and then come back and beat it. It’s all part of development and it’ll always be there.
    3. Start Small - and work up. If you try to take on a 3D multiplayer physics based game with distributed AI processing as your first game you’re likely to fail - quickly. It doesn’t have to be stupidly small but try to stick to one thing at a time. Simple 2D fun games are a great way to start (and continue if you’re me).
    4. Ask for Help - you’re going to want to ask for help, but you need to be careful how you do it. Most experienced developers in the communities related to the technology are willing to help out. However, you need to be polite. You need to listen and take the time to try and understand the answers. Most important, don’t expect an answer. Everyone is busy. Everyone has limited time. If you get an answer great, if you don’t then go back to step 2. Keep trying to fix it yourself, post your progress. People are more willing to help someone that is trying to help themselves. DO NOT get angry and shout and stamp your little feet about people not using their time to sort out your issues.
    5. Be Proud - show other people what you do finish. Always be proud of anything you achieve. It may not look like much to you but other people may find it interesting. Get your stuff out there on twitter, tubmlr, facebook (if you have to). Get it on the forums and get screenshots of what you’re doing visible. Every time you achieve something you should be massively proud of yourself. Every time you get a game running, get people to try it, the feedback will probably help you grow as a game builder more than anything else.

    Getting Things Done

    1. Don’t Obsess - your code is your code and I know you love it but how beautifully shaped and how wonderful the architecture is doesn’t matter one bit to the end player, especially if the game doesn’t ever get to be playable. Do not obsess about your code. Make it work. Make it quick enough. Make it pretty. In that order. If you don’t have a lot of time you can just do the first step and apply the second two once they’re actually needed. The sooner you get a game working, the sooner you’re going to get player feedback and the sooner you’re going to feel motivated to keep working.
    2. One thing working, is better than 100 half working - get something working as soon as possible. Even if it’s as simple as your guy walks left and right. The sooner you can see something, the sooner you’re feel the game and know whats needed. If you try and build the game on many fronts at the same time, apart from lacking motivation, you’re going to get confused quickly. Not to mention not being able to know whether anything integrates well until the last moment.
    3. More than one way to skin a cat - there are many ways of approaching any problem in software. There are normally a set of “right” ways that are well explained in long tutorials on the web. You don’t have to do it the “right” way. Take collision, you go off and read the tutorials and you start implementing the perfect way that covers every possible collision response that any game could ever need. It’s hard and it gets buggy quick. You’re not entirely sure you understand what you’re doing, but you just keep going. WAIT! STOP! In your game the collision is much more simple, you just need one type of detection and one type of response. How about you just code it the “wrong” way for now, just make it work and if it doesn’t feel right later replace it. At least it’ll be playable and you can move on instead of getting bogged down.
    4. Libraries and Middle-ware - nearly every problem you come across there will be a library that can do the work for you. Be careful! Dependencies and the bugs inside them are a big time sink. If you don’t need to use a library, don’t. If you’re not sure it’s going to save you time, don’t use it. That doesn’t mean never use any 3rd party code, just be sure you know why you’re using it.
    5. Have a plan - a simple changeable one. I keep a text file with a list of TODOs in. Sometimes I even add categories like Bugs, Game, Infrastructure. Keep a list of everything you need to do and cross it off as you go, it’s a nice sense of achievement but it also keeps you focused. However, don’t overcook, you don’t need a big tracking framework and you want it to be changeable in a second. You’re coding away, you think of something, you stick it in the plan and keep going on what you’re doing.
    6. Get Involved - talking to your peers, showing your work and getting feedback is key to staying motivated and keeping progress flowing. Helping out new developers, writing down how you’ve achieved stuff and building a network of developer colleagues can also be very rewarding, not mentioning as serving as a rest break between coding sessions. You never know who you might meet and end up teaming up with!

    Well that’s it really, hopefully it’s a useful list for someone. It at least gives me something to post to people asking :)

  • 2012-01-27 4 notes

    Procedurally Generating Dungeons

    It’s one of the most asked random questions on twitter for me, “how does dungeon generation work?”. I’ve written a few articles about it in the past on the old cokeandcode site and even put up some code. However, thats a very explicit example and maybe it can be expressed in more simple terms. So here we go:

    Step 1: Randomly place some rooms. Best to start with simple rectangles. Generate a random width, height an position. The ranges for these values should be configurable - changing them will change the style of the dungeon you get out. Placement wise you can either just place them completely randomly (just make sure they don’t overlap) or you can “grow” a dungeon by placing each room next to another - apart from the first one of course. Either way you’ll end up with a bunch of rooms some of which are next to each other.

    Step 2: Join some of the rooms up with doors. Scan through the rooms trying to find any edges that touch, join those up with doors. So now you’re going to end up with a few rooms joined together. Unfortunately not all of them are going to be joined up so you can’t really place anything and expect it to be found (other than an entrance of course). 

    Step 3: Link up just enough rooms to make every room accessible. This is the tricky bit. The way I do it is with islands. I take the first room and mark it with an island ID. Then I mark every room that it’s connected to by a door with the same island ID. Then every room that they’re connected to and so on. Once you’ve finished select the next unmarked room and do the same but with a different island ID. Keep going to every room is marked. Then it’s a matter of creating a link between a room on each island with whatever makes sense for your map, corridors normally. So link a room with island ID 1 to a room with island ID 2 - one less island. Keep going until all the islands are linked up.

    Step 4: Place features. Now you can guarantee that every room is connected to every other you can start placing features, like a exit and monsters. In addition you can start putting in details and reshaping rooms. One thing I used in Legends was merging rooms where possible which gives odd shapes and a different feel.

    So thats, it. Obviously that’s quite a high level overview but it probably applies to most types of maps and most types of game. Place the spaces, join them up, make sure everything links up and fill with game specific items.

    Oh well, hope this helps someone somewhere..

  • 2012-01-12 2 notes

    The Method

    Ok, ok, I admit it, I forgot I had a blog. I’ve been enjoying twitter so much that I haven’t been posting and thats just not right (tm).  So, I’m going to try to change that and post a bit more often with a bit more detail and probably some technical stuff.

    Not sure if anyone’s interested but I’ll do my best.

    Right now I’m fuming about some one telling me to spend more time on a specific project so they can have more updates. While I always appreciate feedback lets be serious, if I wanted to be told what I should spend my time on then I would just be doing this as a day job - I’m doing games as an indie so I can control my own time and destiny. 

    I’m doing the best I can, but I have to follow the method I’ve used for years. It fits, it works for me and it makes me feel like I’m progressing - which we all know is the only way to stay motivated.

    It’s pretty simple way to work I think, before settling on a game to focus on I build set of prototypes. I’m not very good at choosing the “right” one so I produce a set, float them with anyone that will try them and let them feedback. Like everything else I do I rely on the feedback of players to make the decision. So, I’m half way through a prototyping phase at the moment. I have some tiny finish off details to do on Legends of Yore and while I’m letting those settle I’ve produced a 4 prototypes so far. By far the most popular so far is World of Yore, but I’m loving some new concept art I did last night:

    So yes, I’m flitting about between projects at the moment, but it’s intentional! It’s what I do!

  • 2011-09-15 0 notes

    Now Selling..

    Well, that was an interesting day. I’m now asking for payment on all version of Legends of Yore. After level 20 the game prompts you to pay, reducing your XP and gold gains if you don’t. I was slightly terrified of upsetting people but so far I’ve had 100s of messages of support and praise. Thank you to you all!

    The payment process was reasonably painless to set up, I’m using both PayPal and Google Checkout (so you have the option). Setting them up and integrating with the server seems to have been a success. Not to many fails so far and there have actually be a few sales.

    It was a big decision to go this way, I’ve mostly done free games in the past. In this case though I had little choice as costs for the save server etc are going up, my time is getting used up and hosting costs come in - in general I had to charge. Which I guess is the nature of business. I would understand some negative reactions to me introducing charging a few months in, I know you would have preferred I had charged from start if I was going to. I can promise I’ve learnt my less and I’ll try to manage it better on the next game (yes, there will be another)

    Legends development is pushing on, I’ve a list as long as my arm to implement. I’ll post more about those new features later.

    Hopefully the way I’ve done things is fair and I’ll be able to buy pizza for the development process shortly.

  • 2011-09-13 0 notes

    Ludumdare - Awesome!

    I entered ludumdare this year with my entry The Cell. The results have just been announced and I got place 70 out of nearly 600 entries, so very very proud!

    For those who don’t know, Ludumdare is a programming contest. You get 48 hours (over a weekend) to write a complete get from start to finish. You can use library and engine code as long as you declare it early on. All assets (music/graphics/sfx) must be created over the weekend. The game has to be playable on Windows but other platforms are appreciated.

    It sounds hard, really hard… and you know what it is. However, it’s also absolutely brilliant fun. There is such a sense of community while the event is going on. You see literally hundreds of games coming together at the same time as you’re hacking away at yours. It’s also a way to “get something finished” which is something that alludes game developers all the time.

    Finally, you get to try out ideas and it really doesn’t matter if they don’t work out - since you’re only losing a weekend. This leads to lots of weird and wacky games you never would see any where else. Kudos to the organizers.

    Congrats to all those who took part - see you next time!

  • 2011-09-12 0 notes

    Next up… Dungeon Generation.

    A long time on a site far far away I wrote up a dungeon generation algorithm that is essentially the same one I use in Legends of Yore today. However, it’s getting a bit tiresome so I’m currently working on adding a bunch of new features:

    • Rounded rooms!
    • Corridors
    • Joined rooms
    • Throne Rooms
    • Multi-chest rooms
    • Feature Rooms
    • Hive Rooms

    Hopefully it should make exploring the game dungeons just that little bit more fun!

    There are of course a stack more dungeon features being added, but I shouldn’t give them all away I guess :)

  • 0 notes

    The game play video for legends in case you missed it!

  • 6 notes

    Legends of Yore - Charging?

    I have been working on legends of yore 5 months ish so far. It has been an enjoyable ride but things are starting to get serious. The game now provides a huge amount of content and is taking up more and more time. Whats more the back end servers are starting to cost money - price of it being popular I guess! :)

    I am starting to look at charging for playing the game on the desktop and theres a lot of mixed feelings there. Obviously it’d be great if I was independantly  wealthy and could afford to just make the game entirely free forever. However, more and more time makes me feel that it shouldn’t be unreasonable to ask for a small payment ($2) after you’ve played the game up to level 20 - just like on the mobiles.

    Theres are lots of things to think about, if I’d charged from the start I probably wouldn’t be posting this but then I guess I have to remember that for the next game. I realize this won’t ever be the most popular decision but I think I’m going to have to do it.

    Let me know what you think below.

  • 2 notes

    Coke and Code back?

    Time to restart the blog I think. For those who followed along before, thanks. I just felt it was time to reinvent everything - I do that, you might have noticed ;)

    So, things have changed a bit, I’m trying to make a bit of cash out of my games - legendsofyore.com is going ok and I’m looking to build out from there. However, I’m still pretty much a geeky techy sort of bloke so you can expect the same ramblings on code, games, art and anything else that comes to mind.

    If you’re reading this, thanks for coming back :)