Archive for September, 2007
For Caverns of Underkeep I’m trying to do as much as I can with ‘programmer art’ and artwork thats in the public domain. For me, it’s more important to get the functionallity correct and in place before the game gets dolled up.
If you’re developing a Roguelike, or maybe an indie RPG and want to get started with some art content you can use The RL Tiles a free set of tiles and monsters.
Well one of them anyway.
1. If we take into account the entire population of the world there exists a great number of programmers out there – So when I have an idea for a small but useful tool there is a good chance that it will already exist.
Just like tonight when my thought process went something along these lines:
Ya know, Im sick of looking at that black screen with the windows logo when my computer goes into screen saver mode…
Maybe I should download a screensaver – Just a simple slideshow of nice images. Maybe pictures of animals or something…
But eventually I’ll get sick of the images and I’ll need to go and download more to add to the slideshow. And that’ll be a pain…
I could probably get them from google image search or maybe flicker?
Wait a minute – flicker has a webservice API…
That means I can write a Screen Saver that pulls images from flicker based on a search query – That wouldn’t be very hard to do as Visual Studio 2005 has a screen saver template built in.
And from our first premise we can conclude that someone has already made such a tool. And you know what? A quick google search revealed that someone had. You can get the flicker.net screen saver over at codeplex
Now I can have an unlimited number of images of dromedaries on my desktop. What will I think of next?
Yesterday I spent the entire day refactoring code for my upcoming game.
Refactoring is a funny thing because essentially you have to break your code, rearrange it, clean it up, put it back togeather, test it, and then hunt down all of the new bugs you’ve introduced into the system – By which time you should end up with a program that resembles exactly the same program you had before.
And your line count doesnt even go up.
However, I do think its very important to do refactoring as you go and I’m going to try to spend one day a week where instead of writing new functionality I’m going to take a look at the existing codebase and try tidy it up. This will hopefully reduce the probablity of errors popping up as any assumptions I made to get something ‘to just work for now’ will be removed.
The other goal is to start to make the code more re-usable and not so specific to my current project.
Meaning I can reuse code for the next game I work on. The obvious target for this is the GUI library and Finite State Machine code which is turning out just peachy. Of course one should be very careful – I’m working on a game, not a gui library. Which is an important distinction to keep in mind. And although it’s my opinon that its a good idea to refactor, one should only do what is necessary.
One of the principal reasons for the refactoring yesterday was because I need to implement modal dialog boxes and the way the GUI library was structured it would have been a very nasty hack™ – In my case refactoring was nessesary in order to move forward – what Jay from Rampant Games calls a Local Maxima Problem.
I haven’t read any technical books on refactoring code. But I’m going to add a few to my reading list and perhaps sprinkle a few tidbits about how to improve code as you go in a later blog post.
Here is a list of tasks that have to be completed before the first version of the game is deemed playable and fit for the public.
Some of these tasks are fairly trivial and shouldn’t take longer than an hour or so, others could take a day or more to implement as some refactoring will be nessesary to get the required functionality.
And for some of the tasks ie combat – I could tweak till the cows come home, but that won’t actually get the job done. Remember the idea is to get the most basic system in place that actually works, and that’s about it. I call this the c- approch to object oriented programming.
Fix all known bugs!
Poison Levels (and death) for player and enemies
Async animations – For spell and combat effects basically
Player Stats Screen
- Player able to Level Up
- Ranged Attack
- Player Death
- Enemy Death
- Basic pit trap
- Player Trap Detection
Fog of War
- Line of Sight algorithm
- Scroll of summon undead (Skeleton will fight on your side)
- Get some basic spells implemented
- Fire Ball
- Town Portal
Modal Dialog Boxes : (Used by shops and probably some spells)
- Add Fight or Flight AI
- Death state (render corpse)
- Add goblin monster
- goblin drops item on death (Randomize between: money bag, knife, boots and no drop)
- Some buttons in the GUI still need to be activated.
- Weapons Shop
- Magic Shop
So I’m developing a new game – Its a turn based graphical Roguelike and it will be played in a browser.
The dungeons will be randomized so everytime you play you will get a different Dungeon Crawl Experience™
The game will also be free to play. I think I’ll ask for donations to cover bandwidth costs and continued production costs. Although it might turn into a downloadable game yet I’m not sure… I’ll come up with some special reward or incentive for those who donate money, but at the moment I haven’t quite got that one worked out.
The production and development of the game will also be something a little bit different that I want to try out.
The idea is to get the smallest possible playable game created within a short time frame and then iterate based on players feedback and suggestions. I also want to make it easy for players to submit material, be they items/monsters/spells or quest ideas that can be used in the game, initally I’ll set up forums for this, but I might be able to come up with something a little bit better down the track… who knows.
I’ve made a list of all the things that I need to accomplish before public alpha version 1 which I’ll post in another blog entry. I don’t want to comment on a release date for this first version just yet, but the idea behind the first version is to get a feel about what the game will become, rather than what the game currently is.