Bullet consumption

I’ve been prototyping yet another game idea during the last few weeks. Since I’m now a full-time game programmer at Triangle Studios, I have less spare time to devote to game-development. Fortunately, less doesn’t mean nothing at all.

So here’s BulletEater. A danmaku/bullet-hell game. Except that you’re unable to fire back at turrets, so you’ll just have to survive the bullet patterns. Actually, you’re not completely defenseless: there’s an overcharge mode that allows you to eat bullets, which in turn adds to your score. It does cost you a life however, but lives slowly recharge so that’s simply a matter of surviving long enough. Eating bullets speeds up the recharge process a bit so you may want to save your lives for the really nasty situations.

Bullet Eater - danmaku mayhem

These are things I’m still thinking about, as they make large bullet patterns easy score-fests instead. So I’m thinking about including laser-beams that can’t be eaten to control the difficulty and challenge some more. If you have any suggestions, feel free to share them.

Bullet consumption

How to get inspiration

Lacking inspiration?

Recently there have been some threads about ‘how to get inspiration’ on the Gamedev.net forums. Sometimes it feels as if every good idea is already taken, and that every addition or twist you come up with turns out wrong.

That was written in a game design board, but I’ve also seen it come up many times on level-design forums. Take Counter-Strike for example: so many custom maps have been created that there’s virtually no original setting left. Or Half-Life 2: try to come up with an original physics-based puzzle for once. That’s harder than it looks.

Here’s how I handle it

Continue reading “How to get inspiration”

How to get inspiration

Surprizes and tools

Here’s a small image hinting at the surprize I wrote about in my last post. It’s a puzzle game, it’s almost completely finished and it includes an editor. I’ll post more info about it later, once it’s fully playable and polished.

Surprize

Meanwhile, I’m finishing up AI Wars – it’s almost done now, except for a few communication issues. I’ve also written a few additional Python tools. Since I’m painting quite a few tilemaps for Aural Fighter, I figured a few tools wouldn’t hurt. Today I added one that takes an image, asks for the desired tilesize, and outputs a serie of unique tiles as separate images. It’s using Python Imaging Library (PIL) to load, compare and save the images. It then optimizes them, using PngOptimizerCL, the command line version of PngOptimizer. The tool took me about an hour or two to create, and it’s less than 100 lines of code. And, except for the optimization phase, it’s quite fast, too. smile.gif

Surprizes and tools

AI Wars – a side project

I promised to write about that ‘other game’. It’s a school project focussed on AI. Me and a friend are writing a turn-based strategy game similar to Advanced Wars, and some other friends are writing AI applications that can connect to our game. We’ve chosen for a Flash-based front-end, connected with a Neko-based back-end that handles the connections with the other AI apps. From there, it’s simply watching those AI agents duke it out against each other.AI Wars

As for Aural Fighter, it’s slowly becoming better and more playable. I haven’t done much on it last week due to being ill, but I’ve done some things nonetheless. Most of the missile weapons are now working: the guided missiles and splash damage missiles are pretty fun to play with and they’re quite powerfull. I’ll tweak the exact values once I can playtest some of the later levels, but for now, it’s fun to blow up waves of enemies with splash damage missiles. smile.gif

The first level is nearing completion, too. I only need to do some art for it and add several more enemy waves. I’m also working on the first endboss, which is going to be component-based. I’ll probably write some more on that in a later post.

AI Wars – a side project

Enemies approaching!

It’s time for another progress update about Aural Fighter. smile.gif Though college is taking quite some time these days, I’m trying to spend as much time as possible on this game. This week, I’ve started work on an in-game level editor and I’ve drawn some enemy fighters and made a Python script that allows me to easily create new enemy types by simply editing a text file. This data is converted into HaXe code, so while it’s easy to modify some values, it’s also compiled as code, which means it doesn’t need to be parsed at run-time.

I’m thinking about doing different sets of enemies, each with a distinct style. This screenshot shows some of the first set I’ve been working on. It’s all still early work, but comments are welcome. smile.gif

Aural Fighter enemy showcase

Enemies approaching!

Block Breaker: breaking blocks & pathfinding

Breaking away blocks now actually works! I had to implement some pathfinding to pull it off: I’ve used vertices as nodes and edge lengths as path costs, to find the block with the smallest enclosing, from a given start and end vertex (the intersection points). It does the job quite nicely now:

Block Breaker

I’ve ported this game to C++, using Haaf’s Game Engine, partly because it ran too slow in Python (after quite a bit of shooting around, of course), and partly because I needed a solid debugger for further progress. The whole project is now quite a bit past it’s prototyping stage anyway: I know what kinds of issues I need to solve, and I know how I can solve most of them:

  • removing any leftover edges in the old shape – a few comparisons between the two blocks should tell which edges have become obsolete
  • making some other edges border edges – again, just a few comparisons
  • making sure the new block doesn’t have it’s edges inverted – in some cases, new blocks have inverted edges, and I don’t know yet how I’ll solve this
  • determining when a loose path should become part of the new block – this one is more tricky, but I think comparing angles between edges should suffice
  • determining the surface of the new block – tricky, I think I’m going to triangulate the shape and take the sum of the surfaces of the resulting triangles
  • determining the center of the new block – again, tricky, but triangulating the shape and taking the average center should do the job
  • and finally, some debugging here and here…
Block Breaker: breaking blocks & pathfinding

Back in action!

Game-development update

After a long blogging silence I’m back into blogging. The past few months I’ve been working on a game-design project, together with 3 fellow students. I was responsible for the programming. I’ve used Python and the Panda 3D engine, and I’m quite surprized by how fast I could get stuff up and running. I’ll surely be using Python more from now on. As for the game, I got a scriptable system up and running within a few weeks, to make life easier for the level-designers. In the end, it turned out to be quite usefull, and adding new game entities was a piece of cake.

De Mensies

Of course, no project goes by without trouble. The collision system was somewhat stubborn to work with at first, and once I found my way around it, it turned out not to be 100% solid: sometimes, objects would fall out of the collision hull, and not even at too high speeds. I also was too optimistic in my planning, as polishing and bugfixing always take more time than you’d like.

Since one of my teammates continues to work on this game, I won’t put up a download. Right now, it only contains 2 levels anyway.

De Mensies

Let the prototyping begin!

I’ve also started prototyping some small game idea’s of mine. My dedication span is too short for projects like Tar!, it seems, so this is how I’m trying to train myself to finish things: taking on small, fun projects and working them out into playable games. If one of these turns out to be really fun, then I’ll take the time to polish it into a fully fledged game.

I’ve got a small list of game idea’s that sound interesting, at least to me, so I can choose which one looks most promising – and doable. Right now, I’m working on something that I call Block Breaker for now. It’s a sort of asteroids top-down shooter, but rather than firing shots at asteroids and decreasing their life, you fire cracks in them to fragment them into smaller pieces. Small pieces become unstable and will eventually vaporize, but you shouldn’t collide with the large blocks, obviously.

Currently, I can fire cracks into blocks, but I haven’t completely figured out how to create fragment pieces when a crack crosses some existing cracks. Test-phace screenshot:

Block Breaker

That’s all for now. Seeya! :)

Back in action!