Thursday, July 18, 2013

Fight Evil, Little Green Tank!


http://bigdicegames.com/BZone/bzone.html

Actually quite a few things in this update, most of which are small amounts of work, some which have some gameplay effect.

  • normals / shading - I poked around a little bit in the various Blender exporters, and discovered that I probably should have been using the OBJ exporter to begin with, as that's a much simpler file format to play around with, but even with the X3D exporter, there are options that I hadn't even paid attention to. I could rotate the model so that Z is forward (no thank you), I could bake the hierarchy in (nice to know, but not useful just now), I can triangulate (would have been nice to have known, but not useful now), and, most interesting, I can output normals. So, I disabled my normal calculation in my converter script, and just pulled the normals in from the X3D file, which helped a little bit. It's still not great, and I think I want to write my own exporter someday, but for now, it's fine.
  • now, with some more wave-to-wave continuity! - as the player killed off all the enemy tanks in the wave, everything would reset, including the player's position and health. I've ensured that those, at least, don't get reset between waves, but there are other things that still change (e.g. the trees) between waves, which isn't right.
  • now, with less playability by the colorblind! - I've made the enemy tanks shades of red. And grey. And I think there's still some yellow and blue. Mostly red and grey, though. The colorblind issue comes up with this next point:
  • now, with an allied tank that gets in your way and steals your kills! - in the above screenshot, you'll see a tank on the left. Those that aren't red/green colorblind will see that the green tank is shooting the red tank. Green=good, red=bad. Also, grey=bad. And every other color of tank is also bad. The buddy tank has a few more hitpoints and a little bit better armor, but he needs it, because he's dumb, and he wades into combats that he shouldn't. Player shots do not hurt the buddy tank (yet), and in fact, they pass right through, which doesn't feel right. Maybe they can plink off the tank with little or no effect, but they shouldn't pass through. It's a limitation of the hacky way that I keep the player's projectiles from hitting the player's tank - I could give the projectiles a "parent" object and not allow the projectile to collide with the parent, or maybe be smarter about launching the projectile, or not do collision detection during the first few updates as the projectile is launching.
The addition of the buddy tank is perhaps the last substantial feature that I've meant to add. There's quite a lot of other stuff I want to put in, but that's just filling in the way that stuff works. The buddy tank was a major piece that I wanted to have in, but just haven't got around to adding. Now that it's there, I can tune based on more realistic play experience.

Having the buddy in makes the game feel harder, as I want to keep the buddy tank alive, so I find myself chasing after it, making sure he's not squaring off against a foe that will eventually kill him. I don't think that level of babysitting is what I want for the game - and when I put in the ability to issue orders ("form on me", "engage at will", "retreat"), that won't be as important. Also, I intend to have better AI all around, which ought to make things a little less inevitable. The buddy tank will retreat when damaged, and presumably not try to engage when he's down.

But that desire to keep the buddy alive is player-imposed; having the buddy around gives you additional firepower, which makes the game easier. If the buddy goes off and loses a fight, you're down to where the game was without the buddy - so there's no way that the game is actually any harder. Well, except when he physically gets in front of you. You can't drive through tanks, so that could be a little frustrating.

Ok, with that, there's still over a page of things on my TODO list, some of which I've started marking as things I likely won't get around to, as they're probably obsolete. Ok, having separated out the "probably will not fix" tasks, I still have a page of stuff to address.

What's left:
  • wave to wave continuity - as mentioned above, when you go to wave 2, the trees regenerate. Probably the projectiles and particles get wiped out, too. That's not what I intended. Maybe tanks ought to spawn one at a time, rather than all at once.
  • mission to mission transition - as you complete a mission, it'd be nice to display something, give the player a moment, then transition.
  • mission to mission interstitial scene - in fact, rather than transition directly, after that little "mission complete" cooldown, I want to have a cinematic indicating that the player (and buddy?) are moving between locations.
  • prettier explosions - I like the effect as you're hitting the tanks. I want something bigger when they explode. One thing I've meant to do is have burning bits - particles that leave smoke trails as they fly out.
  • HUD: targeting reticle - a little tricky, as your gun is off-center. Maybe it isn't a reticle at all, but a smart targeting cursor.
  • HUD: target information - if you're locked on a target, it'd be nice to give some information about that target. Including if that target is your buddy. That would help the colorblind players, a bit.
  • buddy tank: model - or, I could make the friendly tank just look different starting with the geometry.
  • buddy tank: AI modes - the buddy is really just using the same patrol logic as the enemy tanks right now. I want to add at least a mode where the buddy is staying close to the player. All tanks should also have a "retreat" mode, which will keep the buddy from throwing away his last few hitpoints in a battle he's certainly going to lose.
  • buddy tank: orders - simple keyboard commands, maybe on keys 1-4, with instructions to switch into one of the AI modes. Depending on circumstances, the buddy might not follow those orders for long - an order to engage at will would put the buddy into patrol mode, but that might immediately turn into pursuit, engagement, or retreat, depending on what's around.
  • vector font display - this should be really easy, and will allow dynamic information displays. Also, will allow things like the about page and credits page without me just typing a bunch of text into a texture and dropping that onscreen.
  • score - I guess, with the buddy tank, this is now a thing; every kill that your buddy makes and you don't means points you don't get. I could also score based on accuracy and time spent completing the mission. This is pretty close to going into that "probably will not do" category. It's pretty low priority.
  • menus - there's several pieces of the menu that need to be completed or reworked. The main menu needs more than just that huge "play" image, there needs to be mission selection. I intend to have a "credits" and "about" screen, with scrolling vector text.
  • missions - there's a single mission right now. I think there should be at least 4 missions, with at least 3 locations per mission, with at least 2 waves per location. I intend to have a variety of tank descriptions (faster, stronger) which will make the missions feel a little different from one to the next. Also, changing the ground/sky color could change things.
Wow, that's a lot still to do. But I've got about two weeks. I could knock off most of that, I think.

No comments:

Post a Comment