Scraps: Modular Vehicle Combat - Nition
This update brings major CPU performance improvements, a new turreted version of the Medium Laser, manual vehicle flip for if you get really stuck, and more changes listed below.

You can expect the next major update to include a new Gauntlet world.

Scraps v0.6.1.0:
  • Significantly reduced initial game-start loading time
  • Added a turret version of the Medium Laser
  • Massive improvements to AI performance, greatly reducing CPU time when playing with many AI
  • Can now manually flip your vehicle (max once every 10 seconds) with F. Key assignment can be changed in the game options. Must be grounded and not moving fast
  • Auto-flip when upside down is a little more reliable
  • Reduced AI max roam speed in Melee mode, so fast vehicles chill out a bit when just patrolling without a target
  • Added a little camera shake to collisions
  • Removed the small monuments that spawned at previous vehicle-destroyed locations in Gauntlet. They were more annoying than cool
  • Increased static friction (friction when not moving). Vehicles are less prone to sliding sideways down slopes
  • Demo version no longer uses the XP system. Previously demo could reach up to 900XP, now fixed at 900XP
  • Demo version no longer shows help info for game modes
  • Area-effect weapons were doing too much damage in general. Reduced area damage overall in several ways, and adjusted costs
  • Minor tweaks to vehicle networking
    Adjusted some AI patrol points that were in bad spots on DustBowl and RiverRift

Bug fixes:
  • Fixed several bugs with Gauntlet mode level generation
  • Fixed evac pad graphics glitch on TestMap
  • Made an evac pad variant for when evac happens on the Gauntlet Water bridge, that looks a little less ridiculous.
  • Fixed not being able to drive underneath the Gauntlet Water bridge.
  • Improved evac pad height positioning in Gauntlet mode
  • Fixed Gauntlet score counter sound
Scraps: Modular Vehicle Combat - Nition


Scraps was rather kindly invited to participate in a one-week Builder Games Sale which is starting today, with a lot of building games on Steam involved. Scraps is a massive 75% off during this sale, which is the biggest discount it'll have for some time.

The full Builder Games Sale page can be found here: https://store.steampowered.com/curator/4/sale/buildersale
Scraps: Modular Vehicle Combat - Nition
A minor patch, mainly to fix a round end bug. But there's a little Gauntlet mode adjustment as well.

2020-1 - 0.6.0.1
- Increased Gauntlet mode difficulty a little
- Made Gauntlet level lengths (from spawn to evac pad) shorter in general
Bug Fixes:
- Fixed a bug where the round ending while on the build screen could send the player to the wrong next map
Dec 19, 2019
Scraps: Modular Vehicle Combat - Nition
Merry Christmas.

0.6.0.0
  • Added the first four worlds of the in-progress GAUNTLET game mode
  • Completing the current in-dev version of Gauntlet bestows a little crown you can put on your vehicle
  • Singleplayer games (Gauntlet, and Melee with "Allow other players to join" off) are now truly local without a separate server process, improving CPU performance and start time
  • Updated firing modes. Primary mode now fires weapons in a staggered fashion. Secondary fire (mouse 2 by default) fires together
  • Middle mouse button now zooms view (visual effect only
  • doesn't affect accuracy)
  • AI players may appear using a new Micro chassis and/or a CPU brain instead of a cockpit in Gauntlet mode
  • Rewrote the vehicle sound manager. No more sounds dropping out, smoother sound balance overall with any number of simultaneous weapons firing etc. Less sound sources playing at once
  • Fixed a bug where sounds could get cut off suddenly when they shouldn't
  • Revamped how parts calculate scrap to drop. You can now expect roughly the same amount of scrap no matter how a vehicle is destroyed (previously, destroying a part with other parts connected dropped less scrap than destroying each part individually)
  • Weapon tracers are more visible with thicker lines up close
  • Made wreckage stand out a little more against the background
  • Significantly improved interpolation on other player's vehicles in networked games
  • Radar GUI now includes off-radar indicators
  • HUD: Weapon reticle edits, with a different design for weapons with bullet drop
  • Balance: Decreased TTK
  • Everything has around 20% less HP, with weapons doing the same amount of damage as before
  • Balance: Decreased all weapon hit forces significantly. Firing force (recoil force on the shooter) is unchanged
  • Medium Cannon bullets are no longer affected by gravity (no bullet drop)
  • Tweaked camera shake
  • Completely revamped the How To Play screens
  • Added light flashes to weapons firing
  • Updated firing FX on Plasma Artillery and Plasmanator
  • Added damage debris FX for weapon hits and collisions
  • Fixes for labels above vehicles/things. Better damage indication effect
  • Some terrain types now always leave wheel marks
  • not just when skidding
  • New skidmark formula. Skidmarks also now show up while using the handbrake
  • Containers are stronger, more expensive, and hold more scrap. Some other minor part stat tweaks
  • Load vehicle dialog now shows vehicle scrap values in orange if they're above the currently available scrap allowance
  • Load vehicle dialog now supports filtering out overpriced builds entirely
  • Load vehicle dialog now remembers your filter settings
  • Removed sounds that played when parts were damaged, they were poor quality and mostly unnecessary
  • Some improved explosion sounds
  • Standard colour coding for quit/continue buttons
  • Improved in-game GUI performance
  • Revamped the auto-repair sequence that happens when the repair button is pressed
  • Revamped turrets
  • the gun part can now be destroyed separately to the base
  • Shockwaves show up better and look kind of cooler in a late 90s game sort of way
  • Added a momentary red flash effect on parts that take damage
  • Destruction can now cause camera shake
  • Adjusted wheel colliders so vehicles are a bit less tippy in general
  • Shift key now doubles as the same modifier as Ctrl on the build screen: Allows deleting with one click, or duplicating on place.
  • Smoothed out AI aiming; mostly obvious with laser weapons which are now less jittery
  • Minor font changes
Bug Fixes:
  • Tamed the occlusion culling. No more weird flickers when the game decides something is not visible when it actually is.
  • Fixed rotation pivot point on small machine gun (visual fix)
  • Fixed AI vehicles being able to trigger "Skipped rebuilding x: Connection point is missing." messages when doing their own rebuilding
  • Fixed occasional failures to rebuild vehicle parts in the correct order, due to a sorting bug
  • Fixed shockwaves flickering when multiple shockwaves were running at the same time
  • Reduced some unnecessary garbage generation
  • Fixed electrical damage FX being backwards, showing the most "lightning" at the least damage
Scraps: Modular Vehicle Combat - Nition
The latest release of MacOS has removed support for 32-bit applications. This broke Scraps on Mac as it was previously 32-bit. On Friday I updated the Steam version of Scraps to be 64-bit on Mac, and it should now be fully working again.

Meanwhile a preview release of Gauntlet mode is getting close as well. When I went to balance everything, I ended up adding a couple of extra maps and some other changes to get everything working nicely, which has taken a while. Here are a couple of quick preview screenshots from previously-unseen worlds:



Scraps: Modular Vehicle Combat - Nition
Gauntlet tasks to do before initial release
Get local games fully working
Object for holding game state in Gauntlet mode
Auto-repair system + vehicle swap ability
Gauntlet game flow from menu to end
Score system
Level generation tweaks
Update scrap drop system
Item unlock system
Update How To Play screens
– Test and balance gameplay
– Music?

Updated How To Play screens

The Scraps How To Play screens have always been a bit minimal. I wanted to update them to work with the upcoming Gauntlet mode, but also add a bit of a side menu so it wasn't just a slideshow and the reader could skip around.

Once I did that, the change in screen aspect ratio meant the old image-based screens wouldn't work well anymore. They were always a hassle as well because the text was baked in, so for language translations each image had to be swapped out with one in a different language. Then if the text changed, they all had to be updated.

So I ended up basically re-doing the whole thing, with a bit of painstaking copying across existing language translation text where possible because people have done hard work (for free!) on those.

I tried a few different styles and colours. Here are a couple of colour schemes:





I think the darker one above looks best. The items on the left can be clicked to skip to different sections, and arrow keys work as well.

The screens also scale automatically to some extent to different screen resolutions and aspect ratios, right down to 800x600.



* * * *

The next task on the list is a big one, because it's basically get everything in the first two Gauntlet worlds fully working and working well. A large part of that is just going to be testing and adjusting the gameplay. I really should add some analytics as well that'll let me know how far people playing are actually getting once it's out. It'd be anonymous data that you could opt out of, of course.

Will be working on it whenever I can.
Scraps: Modular Vehicle Combat - Nition
Gauntlet tasks to do before initial release
Get local games fully working
Object for holding game state in Gauntlet mode
Auto-repair system + vehicle swap ability
Gauntlet game flow from menu to end
Score system
Level generation tweaks
Update scrap drop system
Item unlock system
– Update How To Play screens
– Test and balance gameplay
– Music?

Item unlock system

One interesting thing about Scraps is that most of what I've done on it is in the game. That might sound almost like a tautology, yet it doesn't seen uncommon for a lot of games to have something like 50% of their feature work not actually make it in to the final game - whether it's tossed out due to not being fun, from a change of vision, or just from being a bigger job than expected. Whether Scraps keeps more of its features because I had a clearer plan from the start, or because I sometimes keep features I should have ditched, you can decide! But man, it takes long enough to make a game alone without scrapping features as well.

Anyway, I say that because I sort of ditched a feature. I had a general plan that you'd occasionally get part pickups in Gauntlet, similar to the existing wreckage pickups. I started a basic implementation of it - here are some early test part drops:



So you'd start Gauntlet with only a subset of all parts available to you to build with. You'd pick up parts along the way that'd unlock that part for use on your vehicle. Some parts would be per-game only, and some would unlock permanently to use like how XP works now. The per-game ones could include some special/quirky parts that were fun but maybe a bit overpowered or unbalanced for Melee mode.

That sounded neat but in reality there just aren't enough total parts and there'd have to be a lot more for it to really make sense and not cripple the parts you start with. Additionally, I could have added the whole new system for dropping and pickup up parts (e.g. one part drops per Gauntlet level)... or I could just give out part unlocks at the end of Gauntlet levels using the existing unlock system, and it'd basically give exactly the same result.

So I ended up doing a thing where completing Gauntlet levels sequentially unlocks parts (permanently), as an alternative way of getting parts vs. the existing XP system on its own. I may end up basing it on score in Gauntlet mode instead of levels completed, but that'd be much the same thing. And any parts you've unlocked before can be used right away, which stops Gauntlet starting vehicles being too limited.

Cosmetic rewards

I also made these crown/trophy things that completing Gauntlet stuff can unlock.



And yes, they can go on your vehicle. They don't really do anything and they're a bit silly really but look how shiny they are.



They do have a bit of HP, so naturally they cost a little bit of scrap to add to a vehicle, but only about the equivalent of buying armour with the same HP. They're meant to be a free bonus that you can show off.

- Completing Gauntlet mode when I've initially released it but it's not finished yet (missing Worlds etc) will unlock the "Alpha" Crown.
- Completing Gauntlet mode when it's finished will unlock the standard "Gauntlet" Crown with the wreckage cube.
- Doing something special (maybe looping through Gauntlet twice?) will unlock the Master Trophy (far right).
Scraps: Modular Vehicle Combat - Nition
Gauntlet tasks to do before initial release
Get local games fully working
Object for holding game state in Gauntlet mode
Auto-repair system + vehicle swap ability
Gauntlet game flow from menu to end
Score system
Level generation tweaks
Update scrap drop system
– Item unlock system
– Update How To Play screens
– Test and balance gameplay
– Music?

Sorry for the long gap between updates, the end of the year was a busy time. Having said that I actually forgot that I'd put "Update scrap drop system" on the Gauntlet TODO list as a separate line item and I finished that a while ago. I'm working on "Item unlock system" now, plus some other bits that weren't big enough to get on the list.

Updating the wreckage drop calculations
The reason I needed to update this is that the amount of scrap you'd get to collect from destroying a vehicle in total could vary a lot depending on how it was destroyed. This was OK in the old Melee mode but kinda lame in Gauntlet, where I'd prefer to have a decent idea of how much scrap I'm going to be supplying per level.

The main issue was the reliant part system. In the current Steam version (and older versions), the rules work like this:
  • 1. Look at the part that was destroyed. Are there any parts connected to the chassis ONLY through that part?
  • 2. If so, add them to the list of destroyed parts (so you don't get parts floating in space).
  • 3. Sort the destroyed parts from most to least valuable.
  • 4. Pay out 100% of the scrap value of the most expensive part, then 77.5% value for the next, then (77.5^2)% and so on.
  • 5. If the value multiplier gets below 10%, stop paying out.
For example say I built this thing:



And the outer 1x2 block got destroyed:



Then the wreckage would pay out in value like this:



I did it that way originally because it felt more fair, since it takes less effort to shoot off one part that takes out a whole lot, then it would to destroy them all individually. I also tried to be fair by paying out the more expensive parts at the highest percentages.

But maybe it's nice to reward skill for the shooter's aim and punish bad vehicle design too. Either way this wouldn't work so well in Gauntlet because it means vehicle scrap payouts can vary hugely depending on how the parts of a vehicle are destroyed, even when the vehicle design itself doesn't change.

So I changed it to just give an X% change to pay out 100% of the wreckage value for each part destroyed. So the payout is either 0% or 100% for each part.



And actually it feels fine, even in melee mode. If payouts end up too high or low, the percent chance can be tweaked. If it really doesn't work after I release it like this, I can roll back melee mode to the old version and keep the new one for Gauntlet. It ends up giving bigger payouts for destroying the final cockpit or chassis on a vehicle and less for destroying individual parts. Obviously this still results in variation in payouts since there's still randomness involved, but it's a sort of randomness now that averages out over time, which works better for Gauntlet mode.

 
Scraps: Modular Vehicle Combat - Nition
Gauntlet tasks to do before initial release
Get local games fully working
Object for holding game state in Gauntlet mode
Auto-repair system + vehicle swap ability
Gauntlet game flow from menu to end
Score system
Level generation tweaks
– Update scrap drop system
– Item unlock system
– Update How To Play screens
– Test and balance gameplay
– Music?

Level generation tweaks

Honestly not much to say about this one as I've already talked a fair bit about the level gen in Gauntlet mode in a few older posts. The work I've been doing on level gen recently is mostly code modifications that aren't very interesting to blog about - Just trying to generate nice levels and balance the game mode.

Zoomed in view

So I'm going to talk about something that's a bit more suited to a blog post.

Ever since Operation Flashpoint or even MDK to some extent, first-person shooters have tended to have an "aim down sights" mode where your view often zooms in a bit, it brings up your gun as if you're aiming down the sights, and you generally get some increased accuracy.

I'm not doing that, because the last thing I want is for close-combat vehicle fights to be full of confusing zoomed views of the action just to get slightly less bullet spread. And it'd make no sense to aim a gun first-person style in a third person game. But in Gauntlet mode there are some large areas and I noticed that I sometimes had trouble lining up the shot I wanted, so I'm putting in a minor zoom function, currently by default on the middle mouse button (not released, this is in my dev version only). It has no effect on accuracy and it can be safely ignored, but IMO it's kind of nice.

The simplest way to do a "scope" in an FPS type game is to simply decrease the camera's Field Of View. That method works perfectly if your aiming reticle is in the exact centre of the screen. But Scraps has an off-centre reticle - in fact it can be moved by the player as well.

This is what happens when you zoom with a non-centered reticle:



At the start of that for instance, I'm aiming at the bottom of the wall. When zoomed, my mouse hasn't moved but now I'm aiming at the ground. Not good.

Surprisingly few people seem to have this problem to solve; I think most games must have the reticle in the exact centre. However I found some genius had already solved it here. Like the best answers, he's answered his own question.

With that formula implemented, things look way better:



Although notably not quite perfect. As far as I can tell I think any remaining error comes from the changes in the perspective of the scene, since the camera has to rotate to keep the reticle pointing at the same place, and that means things that are close shift visually a different amount to things that are far away.

Probably the only way to completely solve it would be to do something like raycast to the thing the reticle is currently pointing at, then tell the zoomed camera to look at that particular point. Or of course just put the reticle in the dead centre like a normal game! But honestly, the current solution is close enough, especially for a feature that doesn't really affect the game.
Scraps: Modular Vehicle Combat - Nition
Gauntlet tasks to do before initial release
Get local games fully working
Object for holding game state in Gauntlet mode
Auto-repair system + vehicle swap ability
Gauntlet game flow from menu to end
Score system
– Level generation tweaks
– Update scrap drop system
– Item unlock system
– Update How To Play screens
– Test and balance gameplay
– Music?

Score

The trick to not making a terrible score system in a game is to make sure it rewards a type of gameplay that's actually fun. If it rewards playing the game in the way you actually intended, well that's a nice bonus.

In Gauntlet I've set the score to be based on total enemy scrap destroyed - get points for destroying stuff that shoots back, get more points for harder stuff. Then an added bonus for time to complete the level. I think I'm going to add a base score for just clearing a level as well.

Check this GUI out, it even has actual transition FX:


(ignore the time there - levels won't take 16 minutes...)

  • If there was no time bonus, score for each level would end up much the same as long as you cleared every enemy, no matter how good you were.
  • If there was no enemy scrap bonus, players could try to get a high score just be avoiding all enemies and going directly to the exit.
Although, I do like allowing different strategies which is why I might add a base level clear bonus as well. If the player avoids enemies they won't be able to collect scrap from them, which will leave them with a weaker vehicle, so there's still a balance in challenge there.

Turret revamp



The first Gauntlet level is mostly turrets because they're the easy enemy to fight, and it kind of sucked because you can't do much but sit and shoot at a stationary turret. I've tweaked their stats so they won't take so long to kill but that's still a bit boring, so I've also revamped them to have separate top components. All the gun parts will be separate components that can be shot off, meaning if your aim is good you can take out a turret more efficiently. Once the top is destroyed, the base automatically loses most of its health as well so it's not a chore to dispatch the remaining disabled foundation. Heatsinks/generators on the back are separate components as well and the guns overheat or fire less often when they're destroyed.
...

Search news
Archive
2020
Apr   Mar   Feb   Jan  
Archives By Year
2020   2019   2018   2017   2016  
2015   2014   2013   2012   2011  
2010   2009   2008   2007   2006  
2005   2004   2003   2002