Planning Ahead for First Project on S&box ("MultiTanks")

A while ago, I wrote a pretty simple 2D top-down game that was basically Wii Play Tanks at its core, tentatively named MultiTanks. It had networked multiplayer and ran on a framework I built over this neat library, MonoGame. Playtesting it with some friends yielded great results, and it was also my most feature complete project at the time.

So now its coming to S&box
The framework I had for the 2D version was admittedly quite rough. I was still learning the ins and outs of networking a game at the time, so I kept the mechanics pretty limited in scope. Since S&box takes care of a lot of those hurdles, the core mechanics will be pretty easy to set up and then expand upon.

Here’s some screenshots/vids of what I’ve gotten put together in the HL:A tools so far:



Don’t mind the technicolor tank model, it’s still a work in progress. I haven’t decided what style of material to cover it in, so I have each of the discrete areas on the surface colored differently for now.

So far, I’ve got the rocket thruster, rocket explosion, and powerup particle systems. The arrow is just a generic powerup placeholder, and any model can swapped in instead. The particle editor is a pretty powerful tool, but it can also be somewhat obtuse to work with at times. I’d love to see a thorough revision pass taken on it at some point.

I’ve already been thinking about some design things that’ll have to change now that there’s a third dimension to take advantage of. For instance, the S&box version will likely have a camera angle much like you see in racing games, up and behind the vehicle.

The artstyle of the original was quite simple, but also somewhat appealing to me. I whipped up a couple of similar textures for the level, and what you see above is the result. I’m a big fan of the “graybox” look, and it makes keeping a clean and consistent style pretty easy. For now, I plan to move forward with this style on the level geometry, but I might end up expanding beyond that if the gameplay is fun enough to justify the extra work on the project.

I feel like this will be a good game to load up with some friends and jump into, especially once I construct some more maps and an alternate mode or two. Overall, I’ve got a relatively clear vision for the future of the project, and can’t wait to implement it all in S&box.

30 Likes

Look great! Kinda also reminds me of Tank Trouble from way back, had a lot of fun with that game

1 Like

Wow, I love this. Keep us updated! I would love to see the progress.

1 Like

Love it

6 Likes

Looks similar to what a friend of mine has done in gmod:

Could help with development.

I put together a rocket-firing mockup using a func_movelinear or two and some map logic. This setup is useful for seeing the particle effects in context and fine-tuning their parameters to make them fit better where they’ll actually be used. I added a sort of muzzle flash particle effect since last time, which ended up being a cross between the rocket thruster and explosion effects.

Here it is from a few angles:

I’m especially happy with how the tank cannon’s kickback looks with all the other components of the firing sequence. Being able to programmatically control the motion of the tank’s few parts will be so much easier (and fun to develop) than what I pieced together here. It’s definitely the biggest upgrade I look forward to with S&box’s toolset.

Nothing here is final, of course. As a bonus, here’s a couple humorous misfires I captured before I had worked out the kinks in the firing setup.

9 Likes

You really nailed this! Love the speed of the missile and the particle effects.

1 Like

Looking really good, can’t wait to play this.

1 Like

I look forward to the day I can relive playing Wii Play Tanks, keep up the great work!

2 Likes

I got around to fixing up the tank model’s textures finally. After some experimenting with different shades and PBR parameters, this is what I settled on:

I’m basically going for a “toy tanks” sort of look, where the tanks are made of plastic and bits of metal. There are certainly some adjustments I’ll make over time, but this is what I’m sticking with for now. I also tried less saturated tint colors to make sure the different shades stay distinct enough:

I plan to give players a set of HSV sliders to set their color upon joining the game. However, I’ll need to clamp the Value slider above a certain threshold so that the tank’s textures aren’t completely dark. The next screenshot shows this pretty well, with the tank on the right being the ideal minimum:

The rocket model also got a really nice touch-up and texturing to better match the player’s tank.


Lastly, I put together the tread model and temporarily posed a bunch of them as they will look in-game. Once I can start coding the game, code will take care of positioning the treads so that they travel correctly around either of the curved ends. You could argue that animating the treads is easier, but coding that behavior means I can easily tweak it on the fly without having to re-export from something like Blender.

Next on the list is to model some powerups and create a couple of particle effects that visually reinforce their properties. Other than that, I’m nearly out of things I can comfortably make without having a gameplay prototype to test with.

I’m extremely appreciative of all the support I’ve gotten so far, and it only makes me more eager to get this project fully underway. Luckily, it seems the dev preview is almost ready to begin, and ideally the wait won’t be much longer.

10 Likes

As promised yesterday, I have now assembled a few powerups and improved upon the particle effects that display them. So far, I’ve made Rapid Fire, Health, and Speed Boost. Each one is meant to be visually distinct from the others, in both shape and color. They’re also somewhat transparent so that enemies can’t “hide” behind a powerup.

At the beginning of each video below, the powerup is respawned, and at the end it is collected by a player.

Although each particle effect is basically identical, with colors and the model being replaced, each one is stored as a separate file. I would like to have a single effect that can be modified per-instance, but there isn’t any elegant way to achieve that in HLA. If there are any changes to make later, they must be applied manually to each powerup effect.
In an ideal world, C# code will be able to modify these parameters per-instance to avoid such heavy duplication, but for now that’s not required for these effects to function properly.

3 Likes

In an effort to maintain a steady pace of development despite HLA’s limitations, I have revamped the rocket firing mockup from before. It now includes the rocket ricocheting of the wall, so now I have a better idea of how to refine all the particle effects involved.

It is worth noting that I used func_tracktrain to move the missile for this setup, and its notoriously inaccurate at higher speeds. So if the missile looks like it isn’t quite hitting the wall, just know that its a temporary flaw.

Since I’ve enjoyed working with the particle editor during this project’s development, I chose to work on an effect that bolsters the impact of the rocket’s ricochet. It’s visible in the video above, but here it is in isolation:

The past two days, I’ve improved upon already existing mechanics, but I should have something completely new to show tomorrow.

I’ve thought about constructing another map or two for this project, but it wouldn’t be wise to make more until I’m able to code and test gameplay on this first map. Playtesting the basic mechanics might reveal some adjustments that need to be made to the map’s overall format or structure, so I’m holding off on more maps until then.

4 Likes

This one brings back memories, can’t wait to try it out in the future!

2 Likes

oh hell yeah, this is what I’ve been waiting for, mines when?

1 Like

I love!

1 Like

Now that MultiTanks is officially on s&box, I figured I’d show what progress was made with porting all my previous work over. Moving over all the assets was relatively seamless, aside from some small adjustments to materials and particle system modifiers.

I jumped into trying to code the basic tank movement as soon as all the assets were loading properly. It’s really not much so far, but here’s what I whipped up:

I’m loving finally being able to incorporate code into the project, instead of just assets and mockups. I’ll probably take a longer break before I post another update so I can get better acquainted with the new tools and implement most of the major gameplay elements.

12 Likes

Cool! Can’t wait to try it out at some point in the future :grin:

1 Like

This looks cool! I assume the tank’s movement and the pointer are unlinked based on that footage. Have you considered forcing steering to follow the mouse? It would add some depth when it comes to skill as players need to consider the consequences of where they are shooting.

Yup, the tank’s cannon points where the camera looks, and the tank’s base can be steered with WASD. Although I’ll never say never since I plan to experiment with lots of different ideas, I don’t plan on locking the cannon’s rotation to the base.

I figure it’ll add more room for skilled movement if you are able to control two pieces of the tank separately. For example, if a player is trying to dodge a rocket coming at them, they can move out of the way and shoot back at the other player simultaneously.

1 Like

This is the way. What’s the point of making a tank game mode if you aren’t controlling tanks.