For the last several months, Miranda has been repeatedly talking about ideas that she has for a computer game. I idly encouraged her without thinking too much about it; recently, however, she’s been actually filling up notebooks with designs for the game, so it looked like time to start getting serious.
She doesn’t show any particular interest in actual game programming, so we’ve decided that I’ll do the programming while she’ll do the art and game design. Which raises two technical questions:
- What’s the best environment for programming in?
- What’s the best way for her to generate sprites?
Both of which seem like pretty obvious questions, which you’d think would be easily answered; not so, it turns out. (Thought I’m still quite open to the possibility that I’m dense or clueless.)
For the first, there are various C++ libraries and Java libraries out there. But I don’t particularly feel like starting a new side project in either of those languages right now: if there were some dominant library in either language that everybody agreed was wonderful, than great, but otherwise I’d rather try something else. I’ve heard a few mentions of pygame; I may actually end up using that.
The frustrating thing is that there is, actually, one obvious language to use: Flash. There are zillions of existence proofs that it’s both a suitable language for novice game developers and a platform that can be used to develop quite professional games. I’d certainly rather use an open source platform, but there’s something to be said for the democratic effect of a language that allows you to easily publish your game and make it accessible to billions of people.
The problem is that it costs seven hundred freaking dollars. This is rather more than I’m used to paying for software. (I was going to say about seven hundred dollars more, but I’m happy to spend fifty bucks on a video game.) If it were fifty bucks, I’d feel guilty about it’s non-freeness, but I’d buy it. If it were a hundred, I’d think about it but do more research. But seven hundred dollars? Well, maybe, if Miranda and I are still into this in a couple of years, but no way I’m spending that right now.
I have to think that Adobe is missing some sort of market segmentation opportunity here. There are many people for whom the value of the product is (much more than) seven hundred dollars. And then there are people like me for whom the value is rather less than that. The marginal cost of the product to them is low; if they could find a way to produce, say, an introductory version that I’d be happy with, it would be, to some extent, free money for them. And once I got hooked, they could get me to upgrade to a better version.
Eventually, I stumbled across rubygame. Which looked pretty primitive but possibly functional enough to be worth a try. So I downloaded it yesterday; the C extentions compiled with no hassle, and the demo “game” they provided, while not much of a game, ran just fine.
So I had a lot of fun the last two evenings combining that with the aptly named “Miraculously Flexible Game Prototyping Tiles” from Lost Garden. Yesterday, I assembled some tiles into an environment; today, I added a character that can move around the environment. Extremely bare bones, but it all works fine, and I can see how I should be able to develop it into a game that expresses many of Miranda’s goals.
I’m still not sure if I’ll stick with rubygame, but I’m sure that much of what I’m learning will transfer to other environments. And it really is neat to see pictures pop up on screen.
So now I have to replace those pictures with sprites that Miranda has designed! One advantage of having somebody else’s tiles to start with is that they give me some design parameters: so I need to generate tiles that are 100 pixels wide, 170 pixels high, a certain proportion of which is boundaries. (I’m also willing to consider entire room backgrounds that she might draw, but never mind that for now.)
How should she generate the tiles, though? For now, I’m telling her to draw things on paper. My brother gave us a combo printer/scanner/copier last year; we haven’t used the scanner yet, but we should be able to scan in images using that. Then we’ll need to shrink them to an appropriate size, and touch them up.
But what are the best tools for that? Everybody talks about GIMP, but I’m not at all convinced that it would be a good fit: it’s complicated enough that Miranda gets scared by it (and, actually, I find it to be more than a bit much), and all its its complication is pretty much irrelevant for us. Honestly, I just want a simple drawing program that can generate PNGs and that makes it easy to get pixel-level control when necessary; that’s about it. There are probably features that we’ll want in the future (e.g. the ability to handle layers), but that’s the core that I want it to be focused on.
And I’m having a hard time finding the right solution. (Admittedly, I’ve only put in a couple of hours of search, so I could be missing something.) Googling turns up lots of possible choices, but nothing that everybody says “this is great”. Pixen looked good, but it crashed a few times when I tried it.
And, actually, maybe I shouldn’t be focusing on editing pixels – maybe I should be looking for vector-based solutions instead? This is all new to me…
For that matter, maybe I shouldn’t be focusing on software at all. The last couple of years have certainly taught me something about the importance of input devices; maybe I should buy Miranda a graphics tablet? I’d been assuming those were too expensive to contemplate, but actually the low-end Wacom models don’t look that bad, and they come with some software that might do the trick. Hmm, that’s a real possibility; I’m not going to buy one now, but if she sticks with the game project for a while, maybe I will get her one.
Post Revisions:
There are no revisions for this post.
[…] As I mentioned before, Miranda seems to have gotten serious about the idea of us writing a video game. And we actually have been spending some time on it over the last month, mostly at her prodding. So far, I’ve mostly been playing around with programming, while she draws pictures in a notebook. I’d been using rubygame as a programming framework, and I still might stick with it, but it doesn’t have support for sprites at different depths; this is a problem if, say, you want to have a character walk behind a tree. So now I’m thinking I’ll go with gosu: not much documentation yet, but it seems to be able to do what I want, its sample game is extremely short yet fully functional, and when I was poking around its web site, I saw several pages that showed signs of having been edited within the last hour. All good stuff. […]
9/19/2007 @ 9:28 pm
I have tried making a game before, and I found that sprite art and tiledrawing to be the most difficult part. I know almost nothing about coding.
Currently I’m twiddling with an application called “Gamemaker.” The advanced functions were on 20$, and it comes with events that you can custom code, and palletes for tile and sprite out, and backgrounds and the like. You could take a look. I made a rather amatuer animation of a guy with a cloak reaching to draw his sword. I used too many frames for animation, and the process is pains-takingly methodical. Who I was making it with, I was doing storyline, character sprite drawing and animation, and composition, while my friend was doing coding and tiledrawing. A week or two in and he scrapped the project and we started brainstorming again, but after that point, I lost interest, and now fiddle occasionally to see if I can ever make another sprite to match the horrible one I drew at first. Still hasn’t happened.
So good luck to her in making a video game. I want to be a video game music composer, so I admire the effort. Depending on the scale of the game, she could be looking at a year or two+ in development with a small crew of developers.
5/12/2008 @ 8:51 am