Guess Who’s Been Busy

That’s right, it’s me. Capstone has been very taxing on my time, leading to a backup in blog posts.

Quite honestly my preferred method of blogging would just be to update you on everything we’ve done in a style more fitting of “Here is our game as of now, there are many changes,” but I’ve got to have a certain number of blog posts for the class. As such, I’m just gonna keep doing what I’ve been doing, but with updates for each week that we’ve done so far.

That said, week 10, wherein I:

  • Culled NPCs
  • Added a sound manager
  • Allowed vertical movement (for our ship painting, you can climb on the nets to go up)
  • Added functionality for a variety of painting interactions, using the cannon present in the ship painting and the well in the farm painting.
  • And yet more bugfixing

It was on the lighter week, and unfortunately because of how much more work needs to be done this week (presentations on Monday), I’m not going to do pictures.

It’ll be a little dry and boring, but there are more pressing matters to attend to.

So I culled NPCs, which basically means there’s an NPC system set up. For our game, it’s simplistic, we don’t have many NPCs, but if the forest painting has the potential for an NPC, he only appears in designated paintings, thus preventing every forest painting from having an NPC.

Nothing terribly exciting about the sound manager, that was just my first attempts at putting a wrapper on Unreal’s sound system to make it a bit more designer friendly and centralized. Has a play sound function, real fascinating stuff.

The vertical movement was the first iteration of allowing our player to travel up and down. It involved a lot of switches to gravity and movement before I decided on using Unreal’s character movement modes, and just setting the character to flying. Later we created a space painting that utilizes this mode.

Now the painting interaction functionality was the big one for that week, and core to the game. To properly have it so puzzles weren’t just used to travel between each other, we had to have the meta puzzle of the room, and then mini puzzles that you use to solve a larger puzzle. So the cannon interacts with all the different paintings – blowing open new passageways in the farm and snow paintings, tilting an adjacent ship painting, tipping a tree in the forest painting, etc, and the well does things like puts out the campfire in the forest painting, creates an ice block in the snow painting, and recursively triggers wells below it.

There’ll be more updates on how the week’s have gone soon, but as of now, sleep is pretty necessary to retaining a stable headspace. Until then.

The Tank Battler, Combat: Prep

As stated in the last post, our Artificial Opponents class is wrapping up with an in house tank battler.

We already completed the movement part of that (kind of). Honestly, Capstone’s been eating away at most of our times (“our” being the collective class, including myself), so the quality of my movement AI and others was significantly weaker than it would’ve normally been.

Luckily (or unluckily, depending if our Capstone game makes it through), the final presentation is next week, so we’ll have more time to work on Artificial Opponents as Capstone moves to the backburner for the end of the semester.

As for the actual tank game, and plans – well, the first step is to fix the movement and actually get it working properly. That’ll be critical.

For the combat section, I figure I’ll be casting map-wide lines to check for friendly/enemy tanks in front of me. Fire if enemy, don’t fire otherwise.

I was imagining I’d have all 4 tanks line up in a diamond-square formation and just rotate as a massive supertank, covering all four 90 degree directions, that way the time to rotate in a circle is automatically cut by a quarter. It’s a big demand, I don’t know if I’ll be able to do that, especially if two tanks at different angles demand my attention, and I need to break them out of their supertank formation, destroy their enemies, then reform and continue moving.

I haven’t yet decided if this strategy will be best for attack or defense, but that will depend on how the scoring system is determined. If it’s best to go out, destroy tanks, pick up cash and spend it for better parts, I’ll go for that loop. If sitting in a corner and killing anyone who gets near using a spider-like supertank works best, I’ll go for that.

Only time will tell really, but for now, it’s all coming up Capstone, gotta get back to that. Until next post.

The Tank Battler, Movement: Prep

The final project for this semester’s Artifical Opponents class is a custom-made tank battler, wherein you control 4 tanks all at once and attempt to take out 3 other teams of tanks on the map (for a total of 16 roaming tanks).

For the first part, we have been tasked with getting the tanks to move. This ends up being more complicated than it sounds because the tanks don’t move on a standard “I want to go from position A to position B,” where you just follow the path. Instead, the tanks move using two treads, which each have a power level that you alter.

To turn with the tank requires uneven amounts of power, but either way, that will take experimental time to basically nail down how much power is required in each tread to get it to move as I want.

The plan as stands is to use A* for pathfinding. It’s a popular, strong, and simple pathfinding algorithm to use, and because the tank battler as a whole also has things like shooting and buying equipment, I don’t want to get bogged down in just the movement system. For this first part, movement is all that is necessary.

As for determining treads, I figure I’ll create a function that takes in the degree that the tank wants to turn, and from there factor that into two workable power tread levels, for a period of time. To turn 90 degrees to the right, I’d want to power the left tread forward at full and the right tread backward at half. Or so I think.

As of now I don’t see a reason to not make turning as fast as possible. If I can mange to spin my tanks 180 degrees in a quarter of a second, I would imagine that gives me a tactical advantage than doing it over 2 seconds. But if I manage to do that, others will too, so it might determine how I create AI later, when shooting and inventory come into play.

Anyhow, next up is to actually create it. See you in the report post.