Goodbye mom…

About a year ago, my mother got cancer. First in her breast, then in her neck, then her head, and in her head again. The last time, she was too weak to be treated. She died yesterday.

Luckily we’ve been able to say goodbye a while ago already. She went downhill pretty fast during the last two weeks. She wasn’t even able to react to us anymore the last few days. It was scary to see.

I’m gratefull though that she’s in heaven now. She accepted Jesus Christ in her life, and that’s why she’s with God now. We, my father, brothers and me, experience Gods help too. It’s similar to when my best friend died: we missed him, now we miss our mother and wife, but we know they’re in heaven, and God gives us peace and strength to carry on. Even my youngest brother, who’s just eleven years old now, noticed and mentioned that.

It’s sad, but good at the same time. It’ll certainly take time to get used to, but I know we’ll make it because God is with us. And I know we’ll see her again when it’s our time.

Goodbye mom…

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

Block Breaker prototype progress

This prototype is getting pretty math- and logic-intensive! But that’s good, because I like the challenge. Currently, I can fire shots at enemy blocks, which adds cracks to them. I already had the basics done, but I ran into trouble when cracks intersected each other. What I usually do, when I can’t figure it out after a while, is writing things down in a logical, illustrated way, and then reworking the code according to my new ‘flow scheme’.

Block Breaker

So, with the new code, when a shot hits a block, the intersection point is calculated and it’s used as the starting point for the crack line. This crack line is used for collision checks, and for every collision, the given edge is split up into two edges, and for every two collisions, an edge between the intersection points is created. When another border edge is encountered, the whole process is aborted: you don’t want cracks outside the block itself!

There’s still a few bugs to iron out here, but once I’ve solved those I can work on the next stage: actually breaking up the blocks into smaller blocks.

And after that, it’s mostly adding some new weapon and enemy types, and then it’s playtesting time. :)

Block Breaker prototype progress

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!