Here is an interesting read about how this dude built a game in 40 work hours without a budget.
I’m sure you can gain some inspiration from this story as you think of embarking on your next game project.
An RPG in a week, starting from scratch? How hard could it be?
I did it because of a dare.
There are many great resources available to small, budget-conscious independent game developers today. On a public forum, in a counter-rant, I expressed this fact by bragging that if you gave me a week, a fresh install of Windows, and a good Internet connection, I could build a halfway decent game with no budget whatsoever. No, it wouldn’t be able to compete with Halo 2 or anything (if I could create that kind of game in a week, I’d quit my day job), but it would be reasonably amusing and playable.
Tom Bampton, who runs the monthly Game-In-A-Day ‘competition’ (www.gameinaday.com ), said “You’re on!” He then added an extra contingency – I had to do it without the benefit of one of the (free) game engines out there. I could only use a basic library / API.
At first, I dismissed the idea. I didn’t have time to take a week off of work and my current game development project to do something like this. But then I thought: What is a week? Unless you work for EA, a work-week is 40 hours. How about taking 40 hours to create a game? I was intrigued – but I didn’t want to just create a space-invaders clone. How about a role-playing game – one of the most complicated genres to create games for? Would it be possible?
I didn’t know. I knew it would be extremely difficult. But I accepted the challenge.
On top of that, I documented what I was doing as I worked, which I expected would be a little like going through an entire development cycle on fast-forward. I thought it might be interesting to game developers – or at least an entertaining record of how I fell on my face if I failed. The end result was a long, rambling, stream-of-consciousness record of my hourly activities. I’ve tried to edit it down to something a little less yawn-inducing here.
So here is how I created a game in a single week from scratch, with no budget. If you want to skip to the end and see what the final product looked like, in all it’s buggy, imperfectly-realized glory, you can download the Windows version of the game at: http://www.rampantga…ackenslash.html
Create an “old-school” RPG in the style of the old, early 80’s “top-down” RPGs like The Temple of Apshai, Ultima III, and Telengard. The player will move through rooms in a stereotypical dungeon, doing battle with various monsters with magic and combat. Along the way he’ll improve his capabilities through gaining “levels” of experience, and magical equipment.
It won’t all be about combat, however. The player will also have the ability to sneak past or negotiate with monsters. There will be locked and trapped doors and chests, and unique dungeon features that may have strange effects. The game will not be long on plot, characterization, or dialog – it’s mainly a hack & slash affair. You go up the level treadmill until you are powerful enough to face the final boss, retrieve a great quest item, and bring it back safely home (your ‘starting room’).
Rule #1: A limit of one work-week (defined as 40 hours)
Game Development time should be restricted to 40 total hours. These will be actual game development or research hours. Breaks of longer than ten minutes won’t count towards the total time. This will be an “ideal” workweek of 40 highly productive hours.
The 40 hours only includes development to a feature-complete “alpha test” stage. Debugging and packaging the game for distribution and won’t count towards the development time, but no new features should be implemented. Documentation of the process doesn’t count.
Rule #2: All Free Tools
Except for the software that comes with a Windows install, only free / open-source software tools are used. The point of this whole exercise is to show how you don’t need expensive (or even not-so-expensive) tools to develop a game. Hardware such as a scanner, microphone, and digital camera are exempted from this rule – if you don’t have these, you can probably borrow them from someone.
Rule #3: No Engines, only basic libraries / APIs
The game must be created “from scratch” without the benefit of a fully-featured Game Engine. No cheating and creating a game using some kind of “click-and-play” game-maker software to throw together a game.
- Python 2.3 (http://www.python.org/)
- PyGame (http://www.pygame.org/)
- Py2EXE to compile this into an executable for distribution (http://starship.pyth…theller/py2exe/)
- Gimp 2.0 (http://gimp-win.sourceforge.net/)
- MS Paint (which comes with Windows) – for pasting up screen shots grabbed by hitting the PrintScreen key (GiMP doesn’t like these for some reason)
- Free textures available from places like Toob’s Tiled Textures (http://www.texturear…tures/index.htm) and Mayang’s Free Textures (http://www.mayang.com/textures/)
- Audacity (http://audacity.sourceforge.net/) plus my microphone or free sound samples
The (Intended) Schedule
Schedules are made to be broken, but it’s important to have them as a baseline to compare your progress with and make corrections as necessary.
Hour 1-10: Basic Architecture
Design the “engine” and the main components. Get the world displaying on the screen. I should be able to move a ‘test player’ around the world to look at things. In fact, I should allow the “test player” to be turned into a full-on editing tool if I can swing it.
Hour 11-20: Player Interaction
Implement all core interactivity for the player – moving around, attacking things, opening doors, dying, picking up and using inventory. Bare-Bones representative objects in the environment will be created to test the interactivity
Hour 21-30: Making the World Active
Add the AI, game “events”, traps, and special effects. By the end of this period, the game should be a pretty complete tech-demo of all of the game’s major features.
Hour 31-40: Adding Content and Rules
Take the project from “tech demo” to game. Add all additional content. Complete and balance the game-play mechanics. Apply polish where time permits – adding special effects, animation, etc.
Post-Hour 40: Testing and Game Release
Fix bugs (no adding features!) Package up the game and release it. Finish documentation.
The Development Diary of Hackenslash: A Game In A Week
Hour 1 – Wild Freeform Design and Base Classes
I spend this hour creating some basic classes for the game – and using these to help guide my design. The world is represented as a series of rooms, connected by portals. Everything in the world is room-relative, similar to how old Adventures and MUDs are designed. Most objects in the game are represented by a “GameObject,” which has a position and contents (which include other objects – a map might contain rooms, a room contains a box, a box contains a sword… and I guess the sword could contain more rooms, but we won’t go there.)
- I create a “creature” and “player” object
- I generate a set of “attributes” off the top of my head for creatures, and put this in a class. Apparently I’m a game geek who has played way too many RPGs. I don’t know exactly how the game mechanics will work, yet. This really is seat-of-the-pants game development!
- I make a “room” object, derived from GameObject. Rooms have width, height, and walls – and not much else right now.
I figure out how things will work and make corrections as I go. I don’t even have PyGame linked in at this point – I don’t even have anything other than a console for output. But I feel like I’ve made great progress!
Hour 2 – PyGame 101
The goal this hour is to initialize PyGame, and start putting things on the screen. Actually, I spend most of my time going through the PyGame documentation and figuring out how to do things, since I have almost no experience with PyGame or SDL.
I end the hour bringing up a blank screen filled with black. So far, it’s not very impressive. Actually, there’s quite a bit going on behind that black window – sort of like the Black Triangle story. There’s a functional game-loop, page-flipping, the calling of several classes, and a lot of stubbed behavior. But that doesn’t make the black screen any more impressive.
Hour 3 – If the Walls had Ears, I’d be cussing at them
This hour’s goal is to get a room’s walls displaying on that black screen. To make this happen, I need a room, and I need graphics. I spend a lot of time in GiMP touching up some textures downloaded from Mayang’s Free Textures, so that they tile. I create a texture manager class. And I fill out a sample room structure. I also spend a bit more time looking through PyGame’s docs to see if there’s anything else I can use that might make the job easier.
At the end of the hour, I still don’t have walls on the screen.
Hour 4 – The Inn Now Has Room
After fighting some syntax errors, I finally get the walls to appear on screen. Not displaying correctly – they are in the wrong positions, with gaps between segments. It’s horrible. But with a little bit of tweaking and bug-fixing, I have something resembling a 10-square by 10-square room on the screen.