I’ve been working on this little pet-project for a while now. I don’t really have an end-goal in mind, other than to dramatically improve my knowledge of C++ and create at least a vertical slice of the old-school Battlezone games in a ‘AAA’ format. For now I’m just focusing on the hovertank / combat aspects before I consider tackling anything RTS based. Battlezone and Battlezone II were really rad games, you should totally check them out
Made this into a master thread to avoid posting loads of them Here’s the original post, check further on for updates
Latest Video
— Original Post:
After fixing the physics-side of the programming for my project, I started integrating weapons and powerups a couple of weeks ago, this is the result. Sorry about the shaky video, that’s just the screen-cap software, you can see a stable 120FPS in the top-right
Done in C++ and (should be) network-ready. Once I get some nicer effects in there I’ll at least be able to battle two of them in PVP (No AI yet).
Few notes about the weapon system:
Each craft specifies a number of ‘Hardpoints’. In these hardpoints, you can specify a weapon class, a socket to fire from, whether it’s replaceable, the default equipped weapon etc. It acts as an inventory but also as a way to limit what kinds of weapons the craft can hold, and how many etc. In here you can also specify a bone to use for a ‘Recoil’ effect, but that’s not yet implemented.
Each weapon drains ammo based on the Ordnances cost, from the same ammo reservoir on the craft. Each craft will have a limited amount of ammo it can carry, and more powerful weapons will cost you more. Later, I may add in support for Localized Ammo reservoirs for a weapon.
Weapons support firing in Salvos (volleys) of multiple ordnances at once, as you can see in the video. They can fire all at once or over a burst, with shot spread and additional pitch to counter-balance gravity.
Hardpoints are given ‘Firing Groups’, which allows you to fire multiple weapon hardpoints at once in the same group. You can select a different firing group with RMB or Scrolling with the mouse wheel. Later, I want to add the ability to fire multiple groups at once, based on the users selection.
Powerups will check to see if you already have the weapon in each slot on the craft that can support it (determined by the hardpoint class), and if you’ve already got it, they’ll reject.
very interesting, are you planing to put this in the market place or as an example, i do understand the amount of work it takes to do all this stuff, well done
Not really decided yet, it’s for a personal hobby project of mine that’ll probably be in development for a while (and although the code is decent - it’s nowhere near shippable/marketplace worthy). If I ever get bored of it, I’ll likely chuck it up somewhere. I just have to be careful when it comes to IP-stuff… Although the assets and code are all mine, the ‘idea’ belongs to Activision I believe (See Here)](Sticky: Why a 'Battlezone 3' is unlikely - Battlezone Forums)
I imagine Unreal Tournament 4 will integrate a nice vehicle system eventually, which will probably be heaps more optimized and laid out better for most peoples games. Mine is quite specific
thats what i was hoping for but since they started they have done absolutely nothing as far as vehicles are concerned and i really doubt this year will see any change.
Yours seems to be the best option shown, i’ve tried jacky’s GTA but that seems to have some issues since its based off the wheeled vehicle and not vehicle !
Thanks guys I really need to get pitch controls working properly next… though I did add a relatively simple hud yesterday that reads in your currently assigned weapon(s), health and ammo etc. As you change weapon the ammo remaining number changes to reflect how many rounds you have left for that weapon type. Integration was quite easy actually!
Gonna keep going! The hover engine is still a little broken, and it’s all going to have to go through some monstrous optimization at the end. The movement is still based on Physics Forces, whereas BZ bases it on actual position/rotation updates based on it’s Turns Per Second and the ‘Smoothing Factor’.
Trouble is I’m not sure which runs faster yet… gonna get some help from Rama at some point to get the physics replicating over a network nicely
New Update! Multiplayer is technically speaking, 100% implemented now for all the current features. Movement is simulated locally for local players, but the server does authoritative replication of position if it needs to. Also started putting weapon convergence in place, which is a bloody hard thing to do for a reticle that has to move I might add.
Got some weird Physics issues at the moment too which I’m struggling to solve, thanks to all the new movement I’ve added in. Hopefully they’ll be fixed soon.
Fixed all my hovercraft physics up, they now behave almost identically to the hovering vehicles in Battlezone / Battlezone II. Have to give a massive shout-out to one of the original programmers Ken who gave me heaps of help on dialling in the physics. Amazed at how nicely it’s turned out!
Not too far off being able to implement a simple game loop now. Awaiting a fix n 4.8 for the Pawn Possession issues and then I should be away!
Nice, I had started a side project wanting to recreate Battlezone, but this looks better. Had to stop mine due to time constraints though and wanting to work on my main project
I’ll definitely watch this, it looks great! Battlezone had some of the best gameplay out there, I loved the combination of vehicle gameplay with RTS base building. I always expected games to get more complex like that, but instead such complexity has mostly been stripped from the industry at least the mainstream. It’s great that we can recreate things like that now with Unreal 4!
Your hovering and tank control looks absolutely perfect in the latest video
Added a few bits, thought it was worth a new video. Updated latest video in OP too. Btw I’m pretty much treating this thread as my dev blog now so enjoy my wall of text…
First thing you’ll probably notice is the new test map. Started implementing a map of actual size and scale into the game, though this will probably still rate as a fairly tiny one, and is better suited to the full RTS-style gameplay rather than deathmatch. Makes a nice test-bed though. For original players, the map is based on Chill.
First major thing is that I started on the Radar system. It’s currently a little crude but it’s proof that it’s possible, and there is room for some major performance optimizations which I’ve also started on already (see further down). In the original game, only Friendly objects would remain on the radar at all times. All craft emitted a radar ‘pulse’ that scanned its local area for other objects, and all players on that team (or allies of that team) can also see that radars objects. Lots of objects pinging each other however can quickly get out of hand. Hence the next major feature:
Quadtree system! Been wanting to implement this for ages and it was pretty fun (and difficult without an internet connection). At the moment its not even slightly tuned in and irrelevant to clients in Multiplayer, but it’s the start of a much nicer object management system. I also now have a nice general Manager system in place that forms part of the GameInstance. I can add or remove Managers of different types that do different tasks. Eventually, all objects that need to ping other objects or iterate over the scene will tie into this Quadtree to keep performance as high as possible even with hundreds of objects in the world. I’m also yet to try alternative object filtering techniques like Spatial Hashing / Broad phase filtering, which is something I’ll be tackling soon. For now though, the Quadtree works great.
Added some additional weapon classes to. There’s a Manual-Detonation Mortar, TAG Missiles, Image-Shadower etc. TAG Missiles are still in their early implementation but the core system works - the idea is to fire one projectile and if it connects to something, the weapon launches several homing projectiles to hit it. The Image Shadower feels stupidly good to use, can’t help but keep firing it. New reticle for locking on with too.
–
Plans for the next video I think are some overall visual improvements. Need to put some effort into weapon particle systems and suchlike to make it more impressive, and the placeholder UI stuff needs tarting up. Also desperately need to get the 3D radar in place because it’s just too cool, and do some code profiling for performance and multiplayer.