Something v0.000001 – Windows

[youtube=http://www.youtube.com/watch?v=voIPwr_HR3o]

Here is something random, small and hardly functional that I’ve been toying with. It bares little resemblance to what I had originally set out to make but does feature a few things that I’m fond of.

It’s a 3D third person platformer with the ability to switch to a first person view. Along with walking and jumping around you can also raise and lower the ground, place and remove solid blocks, shoot spheres that stick to the walls and swing from anything. The player character’s animation is procedural but also incredibly incomplete and flawed. There is animated water.

Windows controls:
WASD = Move
Mouse = Aim
Space = Jump
Left mouse button = Action
Q and E = Change action
Right mouse button = First person view

Links:
Download the Windows version

3 thoughts on “Something v0.000001 – Windows”

  1. I say use it to do a robot, mechwarrior game! About a month I tried writing a game which rendered some blocks like minecraft or cubicle shooter. I can’t seem to get it to run at a fast enough speed for it to be playable. do you have any tips I could use to speed up the rendering of my hieghtmap cube world on the wii?

    1. How much of your 256×256 height map (which you mentioned on your site) are you expecting to be able to see at any given time? 256×256 seems rather large for Wii. Although maybe that isn’t so bad if you really are just using it as a height map and not really so much as a stack of cubes (more like the brown dirt in the game above then the grey blocks).

      The entire game world for Cubicle Shooter (the more recent remake that was on Wii and Windows not the original PS3 one) was 200x200x200 (stored as a 3D bool array) but you never saw more then roughly 50 blocks in any direction and it’s worth noting that it still doesn’t run particularly smoothly when the world starts to become overly complex.

      The way I had it working was that it was broken down into smaller sections of blocks (each being 5x5x5 in size meaning that there was a total of 40x40x40=64000 sections).

      At the beginning of the game I generated a model for each section made out for quads so the next time I needed to render that section everything would already be prepared and there wouldn’t really be anything to calculate. I then went back and re did the model any time a block within a given section or in a section adjacent to it was removed. The models where somewhat simply generated. I just counted out how many quads would be needed, made new float arrays (and deleted the old ones if they existed) of the appropriate size to store the vertices and texture coordinates and then populated those arrays with the correct information. It’s worth noting that not every cube requires a quad for each of it’s six sides. If for example the spaces to the front, back, left, right and bottom of a block are occupied by other blocks then you would only need to add one quad to the model for it’s top side since that is the only side of the block that will be visible.

      I didn’t really make any further effort to cull anything (though in retrospect some simple frustum culling probably would have noticeably improved the performance). I just rendered every section that was within ten spaces of the section the player was in (by which I mean a range of ten sections not ten blocks).

      Since the world was broken up into smaller sections I didn’t need to rebuild the entire world anytime it changed so there wasn’t any real slow down when the player destroys things and since I already had models stored for every section regardless of whether or not they where in view I didn’t need to do any real work when the player moved or turned.

Comments are closed.