Work!

My latest excuse for not getting anything done on Artillery Brawl or any other projects is that I just landed a job in the game industry! I didn’t want to announce it on the blog before I got a contract, but today I got one as a programmer for Bugbear Entertainment. It’s interesting and kind of refreshing to seriously program in C++ for a change.

New city, new portfolio

I have succesfully moved to Helsinki, though the apartment is of course still a mess. While organizing the apartment, I also decided to reorganize my Portfolio page. Please check it out, all kinds of comments are very welcome!

I should be hearing about the job next week.

Sampling some C++

Since I have the job interview on Thursday, I decided to brush up my rusty C++ skills and make a quick work sample while at it, as I haven’t really worked with the language since about 2004. The position I’m applying for is UI programmer, so I made a simple but relatively flexible “game style” menu system. At first, I had to look up lots of things in documentation, but at least I knew what to look for, and overall it went surprisingly smoothly. I spent about two evenings on it, so don’t expect anything polished.

If you want to check out the demo and some old stuff of mine, see http://www.brainfold.org/portfolio/. I’m releasing the code in public domain, but check copyright.txt for the font copyright. Apart from the demo, my time has been spent preparing for the move to Helsinki on Wednesday, so again, don’t expect any real updates for at least a week or two.

Moving on

I haven’t updated for a while again. Let’s get gamedev news out of the way first. I haven’t worked on Artillery Brawl for a couple of weeks; instead, I have tried to get the card game ready for testing. I made some prototype cards by putting pieces of paper in sleeves that are opaque on one side. This has the advantage that I don’t have to go through the trouble of making the back sides of the cards look identical, so it’s much easier to make changes. Unfortunately, while the rules are basically ready for testing, I ran out of card sleeves, and when I bought some more I accidentally bought a different size… Now I’ll have to wait until next week to buy some more, sigh.

Anyway, about next week… I have a job interview at a game company (wish me luck!) and I’ll be moving back to Helsinki where I used to live four years ago before I moved here to Tampere. I also have a couple of deadlines looming for university courses, so I’ll be quite busy for the next week or two! At least I already have internet connection at the new apartment, so my connection to civilization won’t be severed. ;) See you in a couple of weeks!

Good news, bad news

The good news is, suddenly I got a whole lot more free time for game development.

The bad news is, I don’t have a job anymore (yay for the economic situation).

I didn’t just freeze and panic though; instead, I called a friend at a game company I was applying to for the summer, and told I might be available for work a bit earlier after all… I hope to hear more from them next week, so wish me luck!

As for other news, I have been working on Artillery Brawl a lot, though still no particle effects… I think they might be cursed, since every time I get close to implementing them, I run into problems or some other thing I just have to fix. Anyway, the good thing about this is that the entity system and a lot of the code in general is starting to look really good and reusable. This is how I should have approached building a reusable codebase to begin with; writing a game, then generalizing the solutions that work.

Triggering (explosive) payloads

As part of my effort to integrate Lepton for particle effects, I have been implementing a system of triggers and payloads to make projectiles more interesting in general. The system is heavily inspired by the similar payload system for my old artillery game, Arty, which I wrote about earlier, but of course redesigned and modernized to make it more generic and cleaner. I haven’t settled on an interface yet, and looks like I’ll have to make yet more changes to the entity system, but every change is a step closer to perfection, right? Anyway, about triggers and payloads…

Any number of triggers and payloads can be attached to entities. For now, they will only be used for projectiles (artillery shells), but later they could be used for many other gameplay applications. Triggers can react to collisions, height from ground, proximity to units, or they could activate after a delay. Almost anything is possible, really, but I’m starting with just collision triggers. Payloads are triggered, well, by triggers; they are the “meat” of the projectile system. Again, I’m starting simple with just kinetic (contact damage based on mass, velocity and an armor piercing multiplier) and explosive (yay, particle effects and shrapnel projectiles) payload, but almost anything would be possible. For example, it would be easy to make a cluster bomb that explodes above ground (height trigger attached to directed explosive payload) into many small bomblets (individual projectiles with contact triggers attached to explosive payloads).

More on the triggers and payloads when I get the system implemented.

Lepton

Remember when I said “if I don’t hit any further roadblocks”, I would add particle effects to Artillery Brawl this week? Well, guess what…

The bad news is, I had to spend a whole evening porting lepton to Windows so Visual C++ would compile it.

The good news is, I’m now the maintainer and tester of the Windows port of lepton, so hopefully this doesn’t happen to anyone anymore. The first Windows installer for Python 2.6 has been released; check the lepton home page. Unfortunately, I couldn’t get it compiling for Python 2.5, since I don’t own Visual C++ 2003 and building extension modules with the free Visual C++ Toolkit 2003 compiler is a pain in the arse. I might try it again later, but for now, I’m considering myself defeated.

Anyway, you should all check out lepton, it’s an awesome library for creating fast particle effects in Python games and other applications, and works out of the box with Pyglet, Pygame and any OpenGL-based applications. It’s also easily extensible so you can add your own custom effects to particles. I’ll be sure to post any further experiences (and the video I promised) as soon as I get it properly integrated with Artillery Brawl.

PS. note the new link category – “Cool Python modules” – at the sidebar.

Quickie

Just a quick update… I have been fixing all the stuff that was broken since the change to multi-part units and then some, and everything should be ready for finally implementing particle effects. I even implemented fake sweeping collisions for shells by making them face their velocity vector and making their collision rectangle longer than the shell “sprite.” There are still some collision problems when the shooting unit is next to a steep cliff, but it’s acceptable for now, pending a real solution.

I’m going away for the weekend, but if I don’t hit any further roadblocks, next week should see Artillery Brawl with some kind of particle effects, and of course, a second video of the game! :)

Last of 2008

I just wrote my last lines of Python for this year. I haven’t got to particle explosions (I’m going to try lepton for those) or other interesting bits yet, and the code doesn’t actually even run at the moment… as usual, one thing led to another while working on small fixes, and I’m just about to finish a huge reorganization and cleanup of the entity system. The good thing is, even if I decide to ditch Artillery Brawl, this code will be useful for other projects, as it’s starting to come together really nicely.

One of the biggest changes has been the move of messaging from individual components to the entity itself. I might write about the details later when I’ve finished my changes and actually used the system for a while, but I can already tell it has reduced dependencies between parts of the code; always a good thing. The biggest test for my entity system will come when I start to implement some more complex gameplay, but so far, so good.

See you next year, happy 2009 everyone!

Holiday coding

As promised (to myself and readers), I have continued game development during the holidays. Not much, mind you, I’ve mostly been enjoying the chance of being lazy for a change, but it’s something, and I hope I don’t get any more months-long breaks in the near future. :)

I have been working on Artillery Brawl, with stuff that was left incomplete when I stopped working on it in July. I haven’t started on prototyping shooting yet, because I have some related stuff to do first. I have completely changed the units are represented in the code. Instead of a single entity for a unit, there are now several entities for the different parts of a unit; body, turret, later tracks and wheels. To keep all these together, I made a component (an entity is composed of components) that groups several entities together, so I can still essentially handle the unit as a single entity. At least to me, it’s a very clean solution, as all these features are in self-contained components, with the entity only containing components which it doesn’t know about. At some point, I’m going to have to write about my final entity system in detail, but first I need to actually finish it…

After this change is complete, I will probably work on fixing shell collisions and then move on to particle systems, camera improvements and other stuff related to trying to make shooting fun.

Happy belated holidays, everyone!

Older Entries »