Feb 27 2008

Directions for the future

Tag: VectorStormtrevor @ 10:33 pm

So I’ve been thinking a little about what I want to do in the future, and have picked out a few possibilities.

I’m very interested in implementing “shaders” for the VectorStorm virtual hardware.  These wouldn’t be OpenGL shaders (we already use one of those for the bloom effect, and there’s a disabled one for the overlays), but rather would be the equivalent of that sort of shader, performed on the virtual VectorStorm GPU.   (Someday I might set up VectorStorm to execute using two threads;  one emulating the CPU, and one the GPU, and these shaders would run on the GPU thread, while all other game code ran on the CPU thread..  but that’s all too much like hard work right now, so I’m unlikely to do it any time in the near future.  The important point is that if I wanted to, I could.)

Like how OpenGL has vertex and fragment shaders (and DirectX has vertex and pixel shaders), I think there would be two types of VectorStorm shaders.  The first type would be a vertex shader, and would work just like DirectX/OpenGL’s vertex shaders;  the shader code receives each vertex to be rendered, one at a time along with color and other information, and spits out the final vertex to be rendered.  A shader like this could trivially make a vsSprite draw entirely in green, or fade out, or squash and stretch or distort in other interesting ways.

The trickier bit is the  equivalent of the pixel/fragment shader.  I think that this would be a “Display List Shader”;  when you activate a display list shader to the moment you deactivate it, that section of the display list is passed to the shader, and the shader gets to fully rewrite it, and it’s the rewritten version that gets rendered.   This would allow more complicated effects, such as distortions that need to subdivide lines on the objects it’s operating on, or effects which need to make use of more state data than merely what’s held in a single vertex.

But I’ve also been interested by discussions about sprite generators, and adapting those concepts to the vector shapes used in VectorStorm;  write a little shooter game which automatically creates different types of enemy ships in some sort of meaningful way, so that you play a subtly different game every time you play.

And finally, of course, I still want to hook up a placement system, so that someday I might start work on a game which actually has real levels.  That’s probably still a long way off, though.  There’s never any shortage of fun tech to think about!  :)

On the “Game in a Week” front, ordinarily I’d like to do another one next week, but I suspect that it’s going to be a really busy week at work for me, so I’ll probably put it off for an extra fortnight.  I’m sure that I’ll be putting up some fun little toys between then and now, though.


Feb 25 2008

ThunderStorm Post-Mortem

Tag: #3: ThunderStorm, Game in a Weektrevor @ 9:36 pm

(I’ve uploaded updated builds of ThunderStorm, which allow users to remap their gamepads’ right analog stick. I encountered a gamepad today which had mapped the right analog stick to axes 4 and 5, bizarrely enough. If you’re having this sort of trouble with your gamepad, you might want to download 1.0.2. If not, there’s nothing new in the build.)

So that’s another Game in a Week in the bag. For a while on Sunday, I was seriously contemplating what I’d do when I missed the deadline; whether I’d relabel it as a “Game in Another Week” and work on it for a second week, or whether I’d release what I had and put it in a different category.. perhaps “The Space Under the Stairs”, or some such. Thankfully, I don’t have to figure that eventuality out yet. And with any luck, the things I’ve learned will help keep me from coming as close as I came on ThunderStorm.

What I did right:

  • Last-minute hustle to put the game together, when I did finally stumble onto a viable game design.
  • Willingness to step away from the computer, even late on Sunday, when I needed to think about design issues. Being close to the computer makes design issues feel like they can be solved by more physics, when they really can’t.
  • Having the online commitment to actually produce a game within the week is what made it happen in the end. If I hadn’t been posting and blogging about it all week, I’d have given up and gone to watch television. If you want to do something that requires creativity and a lot of work, I can testify that the best way to force yourself to get it done is to post a deadline for yourself online, and make sure all your friends know about it.

What I did wrong:

  • By far the biggest mistake I made was that when I selected the “cloud” theme, I didn’t brainstorm about the right things; I brainstormed about situations I could put clouds into, and about ways that I could use Box2D, and about ways that I could use the work I did on VectorPhysics in a cloud-based game. This lead me into a lot of interesting physics ideas which turned out not to be fun in an actual game.
  • What I should have done is follow the tenets of experimental gameplay programming; I should have started by brainstorming about the properties of clouds. Once I started in that direction (in desperation on Sunday afternoon), it was actually pretty quick to reach the basics of ThunderStorm.
  • Didn’t step away from the computer often enough. Those who have looked at the source code will have seen how much stuff I did that never got used. There’s VectorPhysics-like drawing of objects, there’s a run & jump control scheme, there’s a grappling hook, there’s all sorts of stuff that I was desperately making when I was searching for a design. That was all wasted time that I should have spent thinking about a correct design, instead of straining my brain trying to use technology as a replacement for design.
  • In retrospect, I’m not sure what I think of the graphic style. It looks a little like a really cheap Flash game. I’m certainly not getting much value for the graphic engine under the hood. I suspect I may have strayed a bit too far from the core “vector graphics” look that I’ve generally been going for. But I’ll admit that it’s nice to finally have something that doesn’t have a flat black background, at least.

In retrospect, I’m quite happy with how ThunderStorm turned out. I’ve had some fun with a co-worker, trying to work out an optimal play strategy (Our favourite strategy involves getting all your thunderclouds lined up on one edge of the screen, and firing as fast as you can toward the opposite side of the playfield. It’s pretty effective, but very dangerous, as if a single happy cloud makes it through, the happiness will spread almost instantly through your closely-packed thunderclouds), and another tried to convince me to continue development on the core “controlling multiple agents simultaneously” idea behind ThunderStorm. And I may do that.

But probably not until after I revisit Muncher’s Labyrinth. And I’m not planning on doing that any time soon, either. :)


Feb 24 2008

ThunderStorm, finished!

Tag: #3: ThunderStorm, Game in a Weektrevor @ 9:42 pm

Wow. Who’d have thought that I’d go from design to fully playable game, including intro sequence, title screen, instructions, and credits scroll in just over seven hours?

Granted, there’s an awful lot of code copy and pasted from elsewhere, but still.

I’m making binary builds now; should have them up and ready for download within about an hour. Will post when they’re ready.

Update:  Binary builds for Win32 and OSX are now available from the “ThunderStorm”  page in the sidebar!  Please leave comments on the static ThunderStorm page.  :)


Feb 24 2008

First playable

Tag: #3: ThunderStorm, Game in a Weektrevor @ 5:04 pm

ThunderStorm first playableThere probably won’t be a second playable (owing to a total lack of time), but here it is.  I’m currently calling it “ThunderStorm”, and it’s a somewhat wild and madcap shooter, which is probably way too generous to the player (total death comes quickly and unexpectedly, but very, very infrequently.  There is likely to be an optimum strategy which would lead to infinite playtime.  But that never stopped E4, so who am I to complain, as long as the game’s fun?)

But honestly, at this stage, I’m just happy to have something that makes me smile when I play it.  :)

Now I just need to fit in an initial menu screen, instructions, and maybe find some sound and music.

And I need to implement a control scheme that doesn’t require a two-analog-stick controller.  Probably using the mouse.


Feb 24 2008

A last-minute change of direction

Tag: #3: ThunderStorm, Game in a Weektrevor @ 2:42 pm

U TurnNote the time.

And yes, I’m insane.


Next Page »