Monday, January 24, 2011

The physics of it all

Last week I spent more time than I really wanted on fixing collisions. I spent the majority of my time redoing the physics bit from basically scratch. Turns out that my previously "infallible" implementation wasn't quite so infallible as I thought, what with moving through walls and jumping to the other end of the screen, but I think I've got it down now.

What I did was detach rendering from the progression of the game world. Now the game world takes 4 "steps" before rendering anything. This made me reduce every physics related variable to about a fourth but everything is now much more accurate and it feels a lot more slick. I'm quite pleased. I also managed to implement this really sweet tool that's going to make debugging later a breese. This debug mode allows me to pause the game and step through each physics "frame" to look for any inconsistencies. It also displays what the physics engine did at that frame so I know where to look if something goes wrong.

Now that I've laid the groundwork I can continue with adding cool stuff to my little "engine" to make it more complete and more like an actual game. Though I'll probably spend time moving stuff around so that I get a bit cleaner code. Below you'll find the revised changelog for the current game version (0.3). I'll also have you know that I have a roadmap up to V 0.5 so I'll have plenty to do for the coming weeks.

Until next time!



v 0.3 (unreleased)
- Tweaks to improve the player's appearance.
- Box collisions work now. You can collide with everything.
- Tile's now have 4 solid states: None, Platform, (Vertical) HalfBlock and Solid.
- Sepperated rendering cycles from physics cycles.
- Physics redone entirely. It is now virtually infallibe.
- Sepperated debug related functions from regular ones, thus introducing debug mode.
- Added the ability to step through all past (up to 4096) physics frames.
- Another tile drawn, it kind of looks like a treetrunk.
- Added a rudimentry Menu with placeholder graphics and intro animation.
- Began punctuating changelog changes.

Monday, January 17, 2011

Progression through simplification

Since my last post I've been working on CubeWars whenever I had the time to spare. It's a really fun little project that's shaping up to be quite a cool game whenever a release will be made. I have found that working on something that's easy to progress is a lot more fun then shaping unwieldy projects with a lot of aspects that one would need to be concerned about.

I think, so far, that this project is going really well. We'll see within what time frame I manage a release and use that, along with the quality of said release, as a benchmark for the effectivity of using the simplification of a project as a tool to reach milestones. I'll even do a retrospective look once the game is all done and I can't think of anything to add or take away from it any more. Perhaps we can learn a thing or 2 about motivations and work flow management.

As long as I keep at this, I'll do a weekly update on things, which should probably be monday evening, so right around now. Feel free to check back then. Now here's the changelog I kept since the last post, and another screenshot.

See you next week!



CubeWars
by: Nino v.d. Mark

v 0.3 (unreleased)
- Tweaks to improve the player's appearance
- Box collisions work now. You can collide with everything.
- Lots of fixes to the box collisions to make it infallible.
- Tile's now have 4 solid states: None, Platform, (Vertical) HalfBlock and Solid
- Another tile drawn, it kind of looks like a treetrunk.

V 0.2 (unreleased)
- Improved physics accuracy on platforms
- Releasing the jump button early now properly reduces maximum jump height
- General physics behaviour tweaks
- Object facing added, loaded from secondary fobjects.bmp file
- Levels are now loaded from RCF files
- Level tile array size now depends on need as indicated by level file
- Fixed collision state properly reporting on Debug HUD

V 0.1 (undated)
- Basic player, simple physics and interaction with level tiles

Thursday, January 13, 2011

The familiar circus

It's been over half a year since I last posted something on this blog. I tentatively mentioned an unannounced project but that's been buried under design issues for the time being. All this time I've been thinking about what I wanted to do with Backyard Interactive, but more importantly, what I wanted to do with programming. I think we've established that I'm not too good with some aspects of doing a project. Scope is a great way to screw yourself over by going to big too fast. Consistency is not one of my qualities when it comes to working on any of my pet projects and I lose interest quickly if things aren't going my way. Getting bogged down with stuff that doesn't work the way you want to is just a real hit in the gonads of motivation.

So I've been trying something new with that mindset. I thought it could be good practise to take on a project that's relatively easy to make, is something that I wanted to do at some point anyway and to do this project with the focus on getting shit done.

So I present to you, a first look at this new project, called CubeWars.


CubeWars is a simple 2D Platformer game featuring deliberately simple drawn characters. The gameplay will combine basic platformer action with some shooting and puzzling mixed in. Nothing ground breaking, nothing particularly noteworthy except that I intend to do the premise well.

I already have basic movement and gravity, and in not too long I'll have actual box collisions (currently only standing on objects works) and I can start on things like simple frame animations, maybe a level editor, some baddies and other such things. The design of the code is simply, or even ugly, to allow me to easily add on and see results of that work almost immediately.

We'll see what obstacles I'll run into with this project that's almost destined to be finished, in one shape or another, in the not-too-distant future.