In which a lapsed developer of 16-bit freeware attempts to rekindle his game dev 'skillz' after half a lifetime away. Backstory here.
Brickbat hits Alpha!
Nice relaxed evening of coding last night - got Brickbat up to a fully playable state with 6 working levels, score tracking and a Game Over screen when lives hit zero.
Still extremely rough around the edges, but all the basics are now in place so I’m calling this the start of alpha. Alpha will be mainly about adding features, then in beta I’ll concentrate on polishing it up and balancing.
Lots still to do but hoping to make good progress this weekend.
Another brick in the wall
Another productive evening of work on Brickbat. Added in this session:
- New, much more elegant methods for updating and drawing the game, based on a global enum variable, GameState.
- Pause mode
- 'Get Ready' screen before each new level, showing level number and name
The bones of the game are now really taking shape, slowly but surely. The only real basics that need adding in now are an end-of-level screen with a rundown of the player’s score for that level, and a Game Over gamestate (lives are already sort-of implemented but happily tick over into negative figures), then I’ll consider it in Alpha and work on adding more features and improving the interface.
Break on through
Had a major break
outthrough with Brickbat tonight - finally managed to get the ball bouncing off the bricks in a way I’m 95% happy with! This after 4 separate, failed, versions of the bouncing logic.
Going to bed happy! :D
A whole new ball game
Before I leap into making one of my more ambitious game ideas (of which I now have SEVERAL) I’m going to do another remake, just to firm up my skills and get to grips with my new programming environment (C# / XNA).
Last time it was a Pong clone, so a Breakout/Arkanoid clone seems a natural progression. Announcing… BRICKBAT!
Progress so far has been good. Over the last couple of weeks I’ve got most of the game engine up and running, along with a rough and ready level editor which has let me knock up 10 reasonably varied levels so I can test that the ball bounces how you’d expect it to (at the moment it doesn’t, so I need to refine my code).
Other stuff still to implement before it hits alpha inludes sound, power-ups and possibly enemies (though they might have to wait till beta).
Will post some screenies later, though be warned it isn’t very pretty at the moment - I’m treating all these graphics as placeholders and a more modern look to the game is on the list for later development.
While my Pong clone was always too rough and ready to inflict on the gaming public, the aim with Brickbat is for a release on Windows Phone 7 later this year.
What I’ve Been Up To
So, yeah, I’ve not posted anything on here for a while.
Firstly: Onward My Zombie Horde is on an indefinite hiatus. Apologies to the one guy who got excited about it - it’s something I’ll come back to at some point, but I realise now that I was trying to take on too much, too soon.
On the plus side, hitting a roadblock with the AI for OMZH spurred me into a pretty major rethink of my options as a beginner indie dev, which has led to a few changed priorities.
So what have I been up to? Well:
1. For a number of reasons I’ve decided to ditch SFML in favour of something more beginner-friendly and with better options for distributing any finished games. After weighing up my options I went with Microsoft’s XNA Framework, which gives me the potential to create games for Windows, XBLIG and Windows Phone using the same code base. While I was impressed wtih SFML in some ways, it seemed a bit of a cul-de-sac where distribution is concerned.
2. Unfortunately, this choice required that I learned C#. Not an easy thing to commit to having just spent a couple of months getting to grips with C++, but with the help of online tutorials from csharp-station.com it was reasonably painless. For me, it makes more sense as a language than C++ and I like how it’s object-oriented from the ground up.
3. Then I needed to learn the basics of XNA. I’m now just at the stage where I’ve done enough with the tutorials to be able to start working on my own ideas, but rather than start a game straight away I’m trying to put together a few methods for things like sprite animation and 2D tiled maps that I can re-use between projects, making my life a bit easier.
So far I feel like I’ve made the right decision. I’m finding C#/XNA *much* easier to work with, and I’ve also had lots more game ideas that I want to try out.
I’m not sure if I will ever get back to updating this blog as often as I did in the early days, but do I plan to keep it going (perhaps with separate dev blogs for major projects as and when they warrant it).
Not managed to get as much coding time in recently as I’d have liked as real life, work and such things have been intruding too much. But yesterday I managed to get a good, meaty coding session in over the afternoon, working on the beginnings of the AI for OMZH.
Essentially there are zombies, and there are humans, and for starters I’m trying to get it so that each zombie pursues the nearest human while each human runs away from the zombies to the best of their ability.
This is, for the rookie, a pretty major AI undertaking (as compared to moving the AI bat in Pongoloid), 150-odd lines of code in all. And inevitably, it’s not quite working properly yet.
The zombies are doing roughly what they ought to - checking the co-ordinates of every human against their own, figuring out which is the nearest human and then heading towards them. If they touch, the human becomes a zombie (infection periods can wait until later).
The humans, though, are just standing stock still and waiting to be bitten. Once they become zombies they start to move, but until then they don’t want to know.
And just to top it all off, once everyone’s a zombie they head inexorably for the top left of the screen, which they shouldn’t be doing either.
I suspect the problem with the human AI is a new boolean variable, “panicked”, which I’ve added to the “person” class. Basically humans are meant to become “panicked” if they are less than a certain distance away from a zombie.
If panicked, they then tot up whether there are more zombies above or below them onscreen, and whether there are more zombies to their right or left onscreen, and decide which way to run accordingly.
If “panicked” is false, though, it triggers placeholder code that just makes the human stand still.
So chances are that people just aren’t passing the panic test.
Beginnings of the zombie horde
Not a bad bit of progress tonight. After a few false starts with all the bugs (kind of inevitable given that I left it so long between finishing Pongoloid and starting OMZH), once I’d come up with something that would actually compile I managed to crack on a fair bit. I’m now at the stage of generating 20 human characters, turning one of them at random into a zombie, and drawing them on the screen (using placeholder graphics borrowed from Manning Krull, whose excellent pixel art walking animation tutorial I intend to follow later), and that’s where I’m going to leave it for tonight.
The next stage will be to come up with simple AI behaviour for humans (flee from zombies) and for zombies (shamble towards humans and attack). My plan is that I want to get a basic infection/epidemic model in place first (where being touched by a zombie instantly infects the person who gets touched - eventually this will be replaced by an infection with a short incubation period before zombification), then add in scenery and pathfinding.
My current concept for OMZH is reliant on ever-larger numbers of NPC zombies causing chaos in your wake and facing off against armed human resistance, so getting NPCs to behave roughly how I want them to is my top priority.
Only then will I think about adding in a playable character and starting to actually make it into a game.
New project: Onward My Zombie Horde
So since coding has now finally begun on my new project I feel I can reveal some details of it. Can’t really keep too much secret if I’m going to blog it every step of the way, anyway.
1) This game has zombies in it! 2) Better yet, you play as a zombie! 3) Devour humans or infect them to strengthen your zombie horde - the choice is yours! 4) Old-school 2D gameplay blending action-RPG, arcade, RTS and puzzle elements within a narrative-driven story mode 5) Working title: Onward My Zombie Horde!
It’s going to be a while before this one starts properly taking shape but the groundwork has begun, setting up classes and trying to plan most of the variables needed from the outset.
MUCH more ambitious project than Pongoloid, so who knows when it’ll be finished :)