[PC] Scraps: Modular vehicle combat


Edit December 2020: Scraps is now complete and out of Early Access.


I’ve been posting in a DevLog thread for years now, but it’s time to show Scraps here because

☞☛**Scraps is now available on Steam Early Access**☚☜

Yes it’s still Early Access, but I’ve been working on this game for coming up near three years now - it’s pretty solid as-is, I just have more still to add.

Early Access Release Trailer:

Scraps is a vehicle combat game where you build your vehicle from parts from the chassis up. Most parts are functional in some way (power, cooling, engines etc), and often inter-dependent (like weapons will require power and/or heat management), but I’ve also tried to keep things fairly simple. You don’t have to wire up components or do anything too fiddly. It’s more like building vehicles out of Lego, except you can actually drive them at the end and the pieces actually work.

There’s also a heavy physics basis with weight distribution being a big factor and weapon recoil being a notable point to manage.

Gameplay is your typical melee deathmatch sort of thing, where you get x amount (chosen by the host) to spend on your vehicle. During a match you can also collect wreckage and use it to repair/upgrade your vehicle in-game by using an Evac Pad - so it’s possible to build a vehicle worth more than your starting allowance, although purchase and repair costs slowly increase as your total worth increases to prevent a snowball effect. If you die, you can respawn with any vehicle worth up to the initial scrap allowance.

There’s single-player against AI, Internet play (and it’s easy for anyone to create a server that’ll show up in the global list), and LAN. The Scraps demo is also a LAN joiner, so people can join your LAN game even if they don’t own the full game.

Scraps History

Way back in the 90s I played a bunch of Interstate '76, and I loved how you could customise the weapon loadout and various components of your car and it all really made a difference. Later I played a demo of Lego Racers, and you could totally build your car from the ground up, but I was disappointed that it didn’t have much of an effect on the car’s performance. It was a step up in customisation but a step down from Interstate '76 and the other sweet demo I had of Stratosphere: Conquest Of The Skies in terms of meaningful build choices.

What I really wanted was a game where you designed your whole vehicle and the parts really mattered - and no-one was making it. Roboforge showed that building your own fighting machines was doable back in 2001, but it wasn’t quite what I wanted. Finally in 2012 I had a good opportunity to just start making it myself.

Things have taken a while (I’m making this mostly on my own), and in the meantime vehicle building games have started to pop up everywhere. When I started there was Kerbal Space Program, there was Rawbots (RIP), there was Gimbal, but nothing recent with road vehicles except maybe Gear Up. Now there’s Robocraft, TerraTech, Besieged… but Scraps has kept chugging along and now it’s really looking pretty solid and a lot like what I always wanted it to be.


“Looks like Robocraft”

This comment is getting more and more common to the point where I know a comparison is going to be asked for sooner rather than later. You may like to try Scraps vs. Robocraft if you’d like to:

  • Pay once and get everything rather than the free-to-play model.
  • Host your own Internet or LAN games.
  • Play against AI.
  • Focus more on functional parts and less on building and rebuilding with basic blocks.
  • Employ deeper strategy in part choices, with interdependent parts (a weapon might also require power or cooling, for instance).
  • Repair and upgrade your vehicle in-game, using scavenged wreckage.
  • Put multiple weapon types on your vehicle at once (and they’ll all automatically adjust their movement ranges to avoid shooting your own vehicle).
  • Have a more detailed physics system. Want to build a vehicle that moves by firing its guns backwards?
  • Play a more traditional deathmatch-style game, in the spirit of games like Interstate '76 or Twisted Metal.
  • Ram vehicles and do collision damage (without needing a special melee weapon).
  • Respawn with a different vehicle design at any time during a match.

Robocraft is cool though, and I’m sure they have their own things they do better. Scraps is definitely not as polished as Robocraft since they have 10x the team I do: I have someone who does the AI and helped with the Internet connectivity, but the rest I’m doing on my own. If you like one game though you’ll probably like the other.

Links and stuff

Official site.
TIGSource Devlog that’s been going since Dec 2012, if you want to see more history.
Steam store page
Direct Steam app link (opens in Steam)

15 Likes

I think this is the first footage of the Internet multiplayer on YouTube:

Gives a decent idea of things, although he only uses the laser weapons.

Edit: Nice video with a bigger vehicle:

I’ve got a plan for improving the scoring system, but I’m also interested in any feedback on why my plan is actually terrible: Working on improving the score system: Feedback welcome :: Scraps: Modular Vehicle Combat General Scraps Discussion

Also, here’s a preview of the AI destroying me in low-gravity mode, which is coming in the next update:

Nice job mate. Never realised you were a kiwi!

My AI is always destroying my vehicles. its awesome and annoying at the same time. ha

Wondering why there’s not a Linux release available on steam, I would have definitely purchased it. I’ve never had to do anything special with my games to get them to work on Linux when developing with Unity, so I’m just wondering if it’s something you didn’t do because you didn’t know if it would work / wasn’t tested, or if you had issues / just didn’t do it.

If you need someone to test I’ll be more than happy to run it for you.

– Ubuntu Server 14.0x LTS
– NVidia 750 Ti 4GB graphics.
– AMD 5800k 4-core 4.4GHz processor.

Scraps v0.5.1.0 is up. You can now get assist points for helping to destroy a vehicle so “kill stealing” is less of an issue. I’ve been thinking about potentially more complex solutions that would also help direct gameplay (as I linked a few posts up), but this should help for now.

There’s also a new Low Gravity game modifier that you can select and apply to any game, and for the next 24 hours or so I’m also running an official Low Gravity game server (the LOW GRAVITY ZONE).

Full changelog:

2015-07 - 0.5.1.0

  • Add Low Gravity game option.
  • Added “assist” points for score and XP.
  • Redesigned SMG to give it a little left/right movement.
  • Balance: Increased engine efficiency multiplier a little. Cars with multiple engines will get a little faster.
  • Balance: For Laser and Tesla, see Bug Fixes.
  • Balance: Reduced Plasma rotate speed.
  • Balance: Reduced Plasma and Large Cannon fire rates a little.
  • Balance: Reduced container scrap capacity slightly from 2100 to 2000.
  • Weapon damage spread stats look bigger, but the calculation has changed, and things now get knocked around a bit less in general.
  • Some improvement for “teleporting” at high latency in multiplayer.
  • Re-wrote the modal overlay (loading screen) system to poll state instead of reference count. I knew reference counting would be bug prone and lo, it was.
  • Chat stays up a bit longer (you can always see recent chat by pressing T as well).
  • Chat text and the round timer on the Build screen don’t get in the way of each other quite so much.
  • Updated fan translations for Russian, Swedish and Danish, and added a new French translation.
  • AI players get a little (AI) designation by their name, and their full difficulty setting info on the leaderboard.
  • Some changes to collision damage calculations.
  • Started putting full-stops at the end of changelog entries.
    Bug Fixes:
  • Fixed laser and Tesla weapons only draining half the stated power, and laser also doing half damage. Balanced their stats a little after fixing.
  • Remove some minor light halo effects due to an old, old Unity engine bug. Thought I had a workaround but apparently not in every situation.
  • Fixed player scores not resetting between rounds.
  • Fixed scrap and round length settings not applying if the field was still active when Deploy was clicked.
  • End Of Round chat font now matches the in-game chat font.
  • Fixed minor text misalignment on chat.
  • Fixed server list jumping around in the background while entering a password.

It’s mostly working, but a few things don’t carry across to Linux perfectly, especially when you’re doing things in batch mode (for dedicated servers). There’s a crash in particular that only occurs on Linux that I need to sort out. Once the Windows version is looking decent and people can see I do regular updates etc, I’ll be looking back at the Mac and Linux support - it is coming soon. And the multiplayer is cross-platform as well (Win/Mac/Linux players can all join the same game).

New update, v0.5.1.2, brings a new aiming mode which is now the default, where selected weapons will only fire if they’re aiming near where you’re aiming.

You can press R to switch the mode on and off. It’s super useful for vehicles with weapons facing in different directions, and actually pretty useful for any type of vehicle (except ones with no weapons…).

This update also adds score multipliers that come from destroying vehicles without getting destroyed. At the top left you’ll see a “x2” etc after destroying vehicles (up to a maximum x3) - if you destroy someone when you’re at x2 for instance, you’ll get double points.

Basically the idea is to add some incentive to try and stay alive and repair/upgrade when damaged, versus the alternative of self-destructing. Although self-destruct loses you a point and potentially gives a point to someone else, the extra time spent on the Build screen not earning points sometimes offsets that alone. In the future I’m also planning to make repairing able to automatically add back parts that have been destroyed, which should speed up time spent on the build screen a little. Anyway, it’s fun to try and stay alive and kicking.

The multiplier system will quite possibly need some tweaking for balance - I’ll see how it goes.

Full changelog:

2015-08 - 0.5.1.2

  • Added “proximity firing” mode, now on by default. Sets weapons to fire only if they’re aiming near the crosshair. Press R to switch.
  • Added score multipliers for “killstreaks” - destroying multiple vehicles without being destroyed.
  • Changed the assist points system a little in regards to vehicles that destroy themselves.
  • Some general wreckage balancing. Also made wreckage easier to pick up.
  • Sped up aim around in chase cam camera mode.
  • Made game camera always default to the orbit cam on entering a new game. Having the camera save its setting only really caused confusion.
  • Balance: Increased collision damage a little.
    Bug Fixes:
  • Fixed a bug with terrain dirt FX.

I haven’t been making a post for each small update but I’ve made a few recently:

2015-08 - 0.5.1.5 and 0.5.1.6

  • Revamped collision damage calculations.

2015-08 - 0.5.1.4

  • XP earned now syncs with Steam Cloud.
  • Edited a default vehicle and added a new one.

  • More minor weapon balancing.
  • Maybe a little fewer crazy physics events when colliding with laggy vehicles (there’s still SOME crazy physics, but I’ve been experimenting).
  • Removed the old screenshot code - Steam supports this anyway with F12.

2015-08 - 0.5.1.3

  • Multiplayer work that should make things generally smoother and improve “teleporting” laggy vehicles.
  • Stopped vehicle damage sounds playing when setting initial health on vehicles when joining games.
  • “Proximity firing” mode isn’t the default anymore, but made the keys to switch it show in the GUI.
  • Sped up unlock progress a little again.
  • Some minor weapon balancing.
  • Updated “how to play” screens with the proximity firing mode key.

Expect new parts in the next serious update: Full turret versions of the MMG and Medium Cannon and a non-turret version of the Large Cannon.

It’s been suggested to me that the name “Scraps” on its own is not very searchable. Despite the fact the Google loves to return me Scraps game related results, I’m very much inclined to agree. I must concede that Google certainly knows I search for Scraps the game a lot, and other types of scrap… never.

Therefore Scraps shall henceforth officially include a subtitle: Scraps: Modular Vehicle Combat.

Please remain calm in this time of change. A rose by any other name and all that.

Made a video of the Scraps Godlike AI being awesome in low-grav mode:

Incidentally what networking solution did you use?

Scraps uses uLink, with Steamworks for the Internet play connections. I’m not sure if I’d recommend uLink now: It’s been good to use but it’s also been quite a while since the creators last updated it. It moves very slowly.

Currently working on full-turret versions of the MMG and Medium Cannon and a non-turret version of the Large Cannon.

Yeah I was looking at uLink when I initially started thinking about MP, but that was quite some time ago. I like the idea behind ulink, but if the updates are a bit slow, Ill have to consider alternatives.

Cheers

It’s been a couple of weeks since the last update so I’d like to show what’s going on, even though there’s about a week remaining until the next update.

Large chassis:

Updated turret (full Y-axis rotation) versions of the MMG and Medium Cannon, and a non-turret version of the Large Cannon (cheaper, more snap points):

Plus game performance work. Objects made up of lots of smaller parts, many doing their own movement (turrets etc), all of which need to be able to detect hits individually and operate with appropriate physics has always been a bit of a challenge. I’ve worked out some potential tricks recently, and learnt a couple of others from people who are better wizards than I. Working on implementing that magic now.

Mac and Linux people, I have not forgotten you. I am putting a tentative release date for the Mac and Linux versions of Scraps at September 29th. Getting all that working perfectly will be the focus after this next update goes out next weekend.

Scraps version 0.5.2.0 is now live on Steam. I’ll go into some more detail but here’s the changelog first:

0.5.2.0

  • Added full turret versions of the MMG and Medium Cannon, and a semi-fixed version of the Large Cannon. Balanced other weapons to match.
  • Added Large Chassis.
  • Some in-game CPU performance improvement, particularly for vehicles with many parts.
  • Major in-game GPU performance improvement.
  • Switched from DirectX9 to DirectX11.
  • Increased max scrap limits a little (40,000->50,000 for 8 players. Select less Max Players for more).
  • Build screen inventory shows a little icon next to turrets (weapons with full y-axis rotation).
  • Small and Large sizes for the Proximity Firing mode.
  • Made the spinning camera effect in menus much slower (it hurt some people’s heads).
  • Increased max suspension spring value by 25%.
  • Darker shadows.
  • More outlines on stuff.
  • By popular request, leaderboard now only shows while the key (~ by default) is held.
  • Background music for Round End and Game End screens.
  • Other minor audio changes.
  • Changed the angle calculation for projectile weapon trails - looks more “correct” when shot from moving vehicles.
  • Added something to the Test Map?
    Bug Fixes:
  • In-game messages now show the correct amount of points a player earned from destroying another vehicle.
  • Fixed weapon “can’t fire” sound playing too much.

Weapons and Large Chassis

The new turret versions of the MMG and Medium Cannon can rotate fully around if the space is available, but cost a bit more. They should help in the early game against opponents who’ve unlocked other turret weapons. The semi-fixed version of the Large Cannon is cheaper and a little stronger.

One minor note: Currently in the “same type” weapon link mode, all the weapons are considered as different, whereas I’m sure it’d be better to have normal and turret types of the same weapon linked together. I’ll change that in an update tomorrow.

Performance

The other major work in this update was on performance (check the changelog above for all the other, minor stuff).

I learned some graphics magic and implemented that to drastically reduce draw calls on the GPU, and graphics performance is now much improved. You might get a framerate that’s improved 50% or more in some cases.

In fact GPU performance has got so much better, that the game is now often heavily CPU bound when dealing with complex vehicles with lots of weapons, mainly because of all the physics work. I also did some physics optimisation in this update, but it’s not as drastic as the graphics improvement. I’ve pretty much optimised things as far as I can for now, and the next big step might be upgrading to Unity 5, since it’s supposed to have that improved physics performance. Unfortunately before I update the game to Unity 5 I need to write a custom wheel collider (or buy someone else’s one), because the built-in wheel colliders have changed completely and can’t work well with Scraps anymore.

Graphics Batching

A few technical details here, particularly for Unity devs. The graphics improvement came from being able to combine more vehicle parts.

You guys will probably know that static 3D models - things that never move at all - can be marked as Static and get automatically batched by the graphics engine. Separate meshes, as long as they use the same material with the same shader, can be combined into one draw call, which means less work for the graphics card (although I’m no expert on how this stuff works exactly).

All parts on Scraps vehicles use the same material. All the part textures are baked into one big texture atlas image (think like the Minecraft texture file, but much bigger), and data in the vertices of the parts themselves determines whether they’re shiny or dull, or damaged, or hot - allowing the whole thing to use the same single shader.

But that’s not enough to get batching working on its own. Unity can do a small amount of “dynamic batching” - batching for objects that aren’t Static - but its limit is only a few hundred polygons. One vehicle part has a few hundred already.

On the Build screen, your vehicle is always made up of the individual parts that you’ve placed. But one thing I was already doing is taking all the parts on a vehicle that don’t move (I mean, the whole vehicle moves, but those parts all move together with it) and combining them into one big combined mesh when you entered a game. Having one combined mesh is the final tipping point to getting everything batched and reducing the draw calls. (When parts get destroyed I zero the appropriate ones out.)

That helped, but I couldn’t combine anything that moved on its own, like weapon turrets and spinning fans, and there was still a lot of that.

Here’s the trick. Unity devs, listen up, because I know there are others out there searching for the same powers I was searching for. Even batching stuff on the Asset Store often does less than this.

You can combine everything, and have the GPU do the transforms directly on the vertices of the parts that move to put them wherever they need to be. Create one model and change the model as you go. You could write a shader to do it, but you don’t even have to, because Unity has built-in support for it. Ever used SkinnedMeshRenderer to animate something with bones? The transforms of the separate moving vehicle parts can be the bones! The Unify Wiki even has an example of how to do the conversion!

So now I combine everything, and it’s real fast. There is a little bit of overhead in doing the transforms: People with DirectX11 or newer cards, you’ll be doing it on the GPU (Devs, check your Player settings for the checkboxed to enable this and DX11 mode). Those with DX9 or DX10 cards will be doing it on the CPU. But it’s a small amount of extra work either way compared to the gains in total performance.

Please use these powers responsibly.

What’s Coming

For the next few weeks I’ll be working on the Mac and Linux versions, with a plan to hopefully release those publicly on the 28th or 29th of this month. I’ll be seeing how crazy or sane that deadline actually is in the next couple of days as I start testing on those platforms again.

I’m also aware that the multiplayer has gone quiet recently. I always feel especially sorry for that lone person on a server when the stats read 1/8 (sometimes I join for a few minutes :)). I’ve been doing what I can with both some paid and unpaid marketing, and I have more to do, but the best thing I can really continue to do now is make the game as good as possible.

So the next major thing I’m currently planning to focus on after the Mac and Linux releases will be some expanded single-player content. I have a plan but I won’t elaborate on that just now. That way even if things don’t pick up multiplayer-wise there’ll be more fun single-player stuff to do, so you shouldn’t miss out too much either way.

Of course there’s already the AI (and you can always Multiplayer → Internet → Host A Game with AI to play against, that’s open to humans to join as well), and the Scraps demo can also join LAN games - so only one person needs to own the full version to play on LAN. Or if you can find some people that do have the full version, you can also host your own Internet games and they can join.

Thanks for continuing to follow Scraps. :slight_smile:

1 Like

Just a short announcement that the Scraps Mac and Linux versions are set for a Monday September 28th release on Steam, and are looking good.

Some Scraps players on the forum have also been organising a time to join multiplayer, so if you want to get in some multiplayer when there’re people on, check out this thread: http://forum.scrapsgame.com/t/weekly-games/335

The scheduled one right now is for 8pm EDT on the 19th. That’s midnight UTC. Here’s a timezone converter that should tell you when that is in your local time.

Actually had lots of people on for the organised game above. Would be good to do it again sometime.

I did some recording while I was on:

The Scraps “weekly game” is happening again this week, where everyone is invited to join the multiplayer at roughly the same time to get some people on playing together.

The main one is again at 8pm EDT on Saturday (that’s midnight UTC). But if that’s out of your timezone or you just want to play twice, try coming on 12 hours earlier at 8am EDT (midday Saturday UTC).

I’ve added both to the Steam events calendar which should also auto-convert to your timezone: Scraps: Modular Vehicle Combat :: Group Announcements

People are starting to filter in for the weekly game time. Come join!