Main Battle Tank
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
Name: Main Battle Tank
Difficulty: Hard-Very Hard
Connections: None
Summon: MainBattleTank, MainBattleTankDead, MainBattleTankEmpty
Melee: Yes, crushes things in front of it, can be turned off through enabling User_NoCrushing.
Distance: Projectile, smart aiming can be turned off through enabling User_NoSmartAim.
Type: Human, Machine, Vehicle
Brightmaps: No
Actor Modification: No
ACS: No, only ZScript
Credits:
Code: inkoalawetrust
GLDEFS: inkoalawetrust
Sounds: Multiple sources (Read CREDITS lump), edited by inkoalawetrust and Gorman Freebmane
Sprites: Gorman Freebmane, some editing by me.
Idea Base: Original, several modern Western tank designs
Description:
A modern main battle tank based on multiple Western tank designs, has 1000 more HP than the Cyberdemon and each shell does 1200 damage. Very hard to destroy. Read the included DOCUMENT lump/file on info on how to properly and fully use it.
Sprite:
Standing still/Idle
Firing with the chassis and turret at different angles.
Download link:
https://drive.google.com/file/d/15owP9c8LSSHKiLwoi-2640XnJahpxs4K/view?usp=sharing
Also includes this 184 KB render of the tank firing. The image below is in 1/4th the resolution due to the full image being too large to fit in this thread box.
Video demonstration/Showcase:
.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}
Please Log in or Create an account to join the conversation.
- Blue Shadow
- Administrator
- Posts: 1129
The tank should start acting weirdly. Its movement becomes erratic while appearing to move away from the cyberdemon, and it doesn't fight.
Another issue I found is with the "dead" tank: when viewed from some angles, its turret alternates between two sprites.
With that said, I feel a demonstration map could be included to show how best to utilize the tank, as it's not your typical enemy/ally. I spawned one in the midst of a group of monsters in Doom 2's MAP18, and half the time I'm not sure what it's doing. I was like: "Come on! There are loads of monsters. Start killing things!", and all it did was, I think, try to chase them so that it can run over them while they flee from it to areas where the tank can't reach them at.
Please Log in or Create an account to join the conversation.
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
This behaviour was something I myself added, it makes the tank try to keep some distance from its' target if said target is within 1024 map units and is roughly as big as a Cyberdemon or bigger, or if the target is within 512 MU and has more than 600 health, the problem with it though is that to make it keep said distance if the target meets those conditions, I have to make it recoil backwards slightly then face its' target again, because the FRIGHTENED flag only works with players, so I can't make the tank properly move away from a target. However I think I know of a way I could do that without it weirdly moving around. Though I'm not sure why it's also not firing its' cannon when retreating, since from my own tests it did still fire its' cannon at the Cyberdemon(s). Also here is the code that causes that weird behaviour if you are interested:The tank should start acting weirdly. Its movement becomes erratic while appearing to move away from the cyberdemon, and it doesn't fight
.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}
Hmm I'm not sure what you mean by that, when trying them out I never really saw anything weird happen with the turret sprites, let alone someting that could be described as that, don't see why i'd happen either since the code for the destroyed turret itself is fairly simple, nor can I find anything wrong with the sprites themselves, I'll check it out myself in the morning though to see if I can experience the same bug.Another issue I found is with the "dead" tank: when viewed from some angles, its turret alternates between two sprites.
I'll see about making one later in the morning, though generally it's meant to be used in large areas with plenty of space, like MAP32 from Doom 2 for example, or the urban/city maps in Extermination Day which have plenty of space for tanks to roll around in as well. (I'll include a screenshot in this post of the map(s) I'm talking about later.)With that said, I feel a demonstration map could be included to show how best to utilize the tank, as it's not your typical enemy/ally.
Yeah I have no idea why it would only try to run them over, since I have not programmed it (The chassis specifically.) to actually use its' ability to run over things as an attack, but more of a thing it simply does by being a moving 50 ton metal brick. There shouldn't be anything stopping the turret from firing either, I guess it may have something to do with it taking about 3 seconds to fire each time* and maybe in that span of time changing or losing its' target somehow, restarting the process again, but I doubt that's the issue.I spawned one in the midst of a group of monsters in Doom 2's MAP18, and half the time I'm not sure what it's doing. I was like: "Come on! There are loads of monsters. Start killing things!", and all it did was, I think, try to chase them so that it can run over them while they flee from it to areas where the tank can't reach them at.
*Which is about as fast as real tanks can fire their cannons.
Please Log in or Create an account to join the conversation.
- XLightningStormL
- Dark Imp
- Posts: 11
Please Log in or Create an account to join the conversation.
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
Honestly you'd be better off using a model rather than sprites for the tank, since the Engine can't exactly handle separate length and width in sprites well.
I'm not sure what you mean when saying that GZDoom can't handle seperate length and width, but me and Freebmane did consider a few times to just use the tank model itself, but there's several issues with that:
- It would look very out of place to have the tank be a moving 3D model while everything else consists of 2D sprites.
- I've already written all of the code for the tank with it being sprite-based in mind, so I'd have to probably re-write most of it if I used the model itself.
- It would basically be impossible to replicate the tanks' firing animation if it were an in-game 3D model. Or the flames that come out of it once destroyed.
- GZDoom only supports non-rotating boxes for hitboxes, which would make it basically impossible to give proper collision to the tank, and would make it very easy for actors and the player to phase inside of it.
- I have no real experience with adding any models in GZDoom besides static model props, and MODELDEF just seems like too much of a mess to work with in general.
- The model itself was made with being used for sprite renders in mind, so it most likely consists of tens of thousands, if not hundrends of thousands of polygons, as you can see in the images of it in Blender below. Which means that it's probably too high poly for the MD3 format to even handle since the maximum amount of polygons it can handle are 262144, when both the turret and chassis probably have more polygons individually than that amount.
But these above points are moot because for some reason Realm667 doesn't accept submissions with 3D models in them in the first place..tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}
Please Log in or Create an account to join the conversation.
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
-Added the particles and light spawned by the tank when it is destroyed to its' pre-destroyed props. This was an oversight by me.
-Renamed the editor sprites for the destroyed tank prop from MBTD to MBTR, the reason Blue Shadow was experiencing weird issues with the destroyed tank sprites, was because the editor sprites for the destroyed tank prop and the sprites for the destroyed turret had the same name. I hadn't noticed this sprite conflict because it seems to be avoided in the original PK3 version of the tank, where the sprites for the destroyed turret are in a subfolder, while the editor sprites for the whole destroyed tank are in the main /Sprites directory.
-Fixed the tanks' retreating mechanic, now instead of just recoiling back when a big enough enemy is nearby, it will more properly move away.
-Fixed an odd bug that sometimes caused the tanks' turret to fixate on a specific enemy, even after said enemy was dead.
-This one I noticed on my own, but there was some pretty weird and broken behaviour if a friendly and non-friendly tank fought each other, so I now fixed it so the tanks can properly fight each other, before the tank shells would fly straight through any tanks, including ones hostile to the tank that fired the shell, but now I made it so the shell flies through allied tanks, but impacts ones hostile to its' shooter normally.
Download link*: https://drive.google.com/file/d/15owP9c8LSSHKiLwoi-2640XnJahpxs4K/view?usp=sharing
*It's the same link as in the original post, but it's a different version of the WAD.
I'm still working on the demonstration map that Blue Shadow asked for, whenever I'm done with it, I'll probably update this post to include a download link to it, because progress on it is slow due to me not having much motivation to work on it and kind of procrastinating..tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}
Please Log in or Create an account to join the conversation.
- Gothic
- Moderator
- Posts: 1259
-The fire spawned by the MainBattleTankDead is not full bright.
-If the empty tank doesn't do anything at all, then it should have the NotAutoAimed flag.
And here are some opinions, feel free to ignore them if you feel like it would be too much work, or if you're just not interested:
-I know it's not realistic, but maybe the tank should do something to alert the player that it's going to attack, like stop for a little bit and make a noise or something, it's really hard to avoid getting shot by the tank.
-The dead upper part should just have 8 rotations instead of 16, the turret having more rotation sprites looks already weird, but makes sense while it is still alive.
-This is one of the heaviest submissions yet that's not a texture pack, the sprites are really heavy. I tired converting them to palleted pngs and their sizes reduced a lot, and if you ask me, they don't look that bad:
The translucent sprites should not be converted for obvious reasons, but if you convert the rest, just copy and paste them over the old unpalleted sprites.
-Maybe recolor the gray parts of the tank to darker green, so it ressembles the camo textures from Plutonia:
Please Log in or Create an account to join the conversation.
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
Yeah those are both oversights on my part it seems, the first one I had noticed but kept forgetting to fix, but the second one I didn't even know was an issue since I never seemed to have an issue with the game autoaiming on the empty or destroyed tanks.-The fire spawned by the MainBattleTankDead is not full bright.
-If the empty tank doesn't do anything at all, then it should have the NotAutoAimed flag.
If I manage to think of something that makes sense instead of making the tank beep or something, then I'll add it, and make it toggleable through a user variable. You could also turn User_NoSmartAim on for the tank, to make it not predict where its' target will move at when firing.-I know it's not realistic, but maybe the tank should do something to alert the player that it's going to attack, like stop for a little bit and make a noise or something, it's really hard to avoid getting shot by the tank.
I think the turret looks fine with 16 rotation sprites, especially when alive, since it actually rotates at its' target to fire, and without them it just kinda starts snapping between two rotation sprites. As for removing the 16 rotation sprites for the destroyed turret, that would look pretty weird, to have the number of rotations be cut in half once the tank is destroyed.-The dead upper part should just have 8 rotations instead of 16, the turret having more rotation sprites looks already weird, but makes sense while it is still alive.
The full PK3 version of the tank has all of the sprites except for the turret firing sprites converted to Doom's image format to cut down on their size specifically for that, so I already know that all those sprites look just fine on a 256 color palette. But I cannot convert them to paletted PNGs since they would lose all their offsets, and I cannot just remove or lose their offsets because like half of them were VERY painstakingly and tediously set by me semi-manually, I could crop all the firing sprites to the boudaries of their content as well to cut down the file size by about 4 MB, using the Batch Image Manipulation Tool for GIMP, but that also causes them to lose their offsets.-This is one of the heaviest submissions yet that's not a texture pack, the sprites are really heavy. I tired converting them to palleted pngs and their sizes reduced a lot, and if you ask me, they don't look that bad:
On the subject of the PK3 version of this tank, having to maintain and merge the changes between both the PK3 and WAD version of this tank is pretty hard and especially annoying for the reason I'll describe in the end.
Unfortunately this is also not doable due to said sprite offsets, but if that wasn't an issue then Freebmane could just change the color of the camo pattern texture and re-render all the sprites in maybe 1-2 hours. Basically:-Maybe recolor the gray parts of the tank to darker green, so it ressembles the camo textures from Plutonia:
- The file size comes mostly from the fact that the empty space in PNG images still takes disk space. For example making every single sprite, including the firing ones paletted, doesn't cut down as much on the size as cropping them all to content.
- I can crop all the sprites to fit to the boundaries of their content, which cuts the size by 4 MB.
- The caviat is that doing so removes all of the offsets, which I then would basically have to set manually, sprite by sprite, due to all the weird resolutions from every one of the sprites being cropped to content. Which is why I can't do it.
Ok so here is my current progress with the tank:
- I've fixed a bunch of bugs with the tank such as, the dormant, ambush and invisible flags in the editor not transferring to the turret. Fixing the ambush flag was a pain because for some ungodly reason I had to write a custom way for the turret to handle searching for enemies to basically recreate the behaviour that the Ambush flag SHOULD APPLY TO THE A_LOOKEX FUNCTION WHEN IT'S ON TO BEGIN WITH.
- I've fixed the behaviour of the tank and the shells it fires to make it possible for tanks to fight each other properly. Previously they would act all weird such as the shells totally phasing through the tanks.
- I've made and finished the demo map that Blue Shadow wanted me to make (It's pretty basic though, so don't expect it getting any Cacoawards any time soon, it's also pretty far from being like any of my proper maps .). The reason I haven't yet updated the tank is because I'm currently trying to fix a really annoying bug that causes the tank to be able to shoot through walls when getting right up to them, I know that the bug is caused by the tank shell warping directly to the tip of the cannon when fired, so that it doesn't come out of the center of the tank, which would make no sense. But for some reason every single one of my 4-5 different attempts so far at fixing this bug have failed.
- I've also made a new user variable for the tank called User_Stationary, which causes the tank to just stand still and fire at enemies, similar to the tanks in the original Half-Life, which is fitting seeing as that's where half of the sounds for the tank come from.
.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}.tb_button {padding:1px;cursor:pointer;border-right: 1px solid #8b8b8b;border-left: 1px solid #FFF;border-bottom: 1px solid #fff;}.tb_button.hover {borer:2px outset #def; background-color: #f8f8f8 !important;}.ws_toolbar {z-index:100000} .ws_toolbar .ws_tb_btn {cursor:pointer;border:1px solid #555;padding:3px} .tb_highlight{background-color:yellow} .tb_hide {visibility:hidden} .ws_toolbar img {padding:2px;margin:0px}
Please Log in or Create an account to join the conversation.
- Blue Shadow
- Administrator
- Posts: 1129
If we're talking about only conversion, SLADE can do that while retaining the offsets.inkoalawetrust wrote: I cannot convert them to paletted PNGs since they would lose all their offsets
You didn't make an actual, playable map, did you?I've made and finished the demo map that Blue Shadow wanted me to make (It's pretty basic though, so don't expect it getting any Cacoawards any time soon
Please Log in or Create an account to join the conversation.
- inkoalawetrust
- Topic Author
- Moderator
- Posts: 254
My bad, I forgot about the graphics conversion menu, SLADE invariably crashes when I try opening the graphic conversion tool on my computer, so I rarely use it, hence why I forgot about it and that it can convert graphics to paletted PNGs, whenever I have access to a more recent and powerful PC, I'll try converting as many sprites as I can to paletted PNGs.If we're talking about only conversion, SLADE can do that while retaining the offsets.
I did, I've also made sure that it's completable from start to finish, even with the wallhacking bug still occuring, I just said that it's roughly made (e.g level geometry is obstructed by sky flats) because it's only meant to be a rough example of how the tank could be used. I haven't uploaded it here yet because I'm still struggling to make the tanks' turret not shoot through walls by going up to them. But since you seem to think that I'm lying about having made the map for some reason, I attached it to this post..tb_button {padding:1px;cursor:pointer;border-right: 1px solidYou didn't make an actual, playable map, did you?
Please Log in or Create an account to join the conversation.