





🌟 Special thanks to our amazing supporters:
✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Arch Toasty][Benedikt][David Martínez Martí]
Dear Scraps players
Scraps will soon be delisted from the Steam store.
Scraps has been selling near zero copies for quite some time, and although I've kept it running for a long while, I can't keep supporting it forever. Apart from keeping the main server running, eventually some OS or hardware update is bound to come out that breaks something in Scraps, and it's running on such an old version of the Unity engine that it'll be impossible to fix without a huge amount of work to upgrade. I don't feel it's fair to continue selling a game that's unsupported.
Soon Scraps will no longer be available to purchase, and the remaining USA server that I keep running will be shut down.
Thankfully Scraps does not require a central server to keep multiplayer working. If you already own the game, you will still be able to download it in your Steam library and play it, and although there will be no permanent official multiplayer server running, anyone should still be able to host a server - be it either a dedicated server, or a game they're playing in that they've set to allow others to join. On LAN or Internet as always. Those systems run on Steam's own back-end.
Thank you all so much for the great memories of making and playing Scraps: Modular Vehicle Combat.
Update: I've applied a 90% discount closing down sale price.
- AI now only shoots at its target if it has weapon line-of-sight (previously was based only on whether it could see/hear the target.
2021-02 - 1.0.2.1 - Fixed the Melee mode timer not pausing when the game is paused, when playing singleplayer - Fixed the end-of-round screen not working correctly if the round ended while a game was paused
1.0.2.0 - Increased AI hearing range a bit - Gauntlet vehicle test exit menu is less confusing - Modified post-loop Gauntlet vehicle spawns and costs Bug Fixes: - Fixed not being able to connect to a game with the correct password after previously attemping to connect with an incorrect password
- Fixed missing lightmaps for ColdHill walls - Fixed a text fitting bug on the Build screen - Fixed a bug joining LAN games from the demo version - Fixed some Kickstarter content not showing up - Fixed a bug with Kickstarter reward flag animation
Well, this has been a long time coming. Scraps is released, finished, done! I'll continue to support major bug fixes or issues if they come up for at least the next six months, as detailed in my previous post here. That post covers everything about this release already, so I'll use this post to look back at some Scraps history.
Scraps has been in development for a long time. I started this game in late 2012, working full time. I had originally hoped to get an initial version out by mid-2013. When it took longer than that, I ran a Kickstarter campaign in late 2013. It was relatively successful and kept things going. In late 2014 I had multiplayer working and showed Scraps at PAX Australia. In mid-2015 it released to Early Access on Steam after making it through the Steam Greenlight process (remember that?). In early 2016 things were really taking longer than I had hoped, and since the multiplayer servers were usually empty, I decided to work on a new singleplayer mode named Gauntlet that would make the game a much more worthwhile purchase even without an active playerbase. In late 2016 Scraps was taking much longer to complete than I had initially hoped, especially with the new Gauntlet mode, and Scraps sales never did very well. I reluctantly picked up another full-time job to provide an income, knowing that it would only prolong the trek to complete Scraps even further. I was very lucky to land a job making games at Facepunch Studios, and I continued to work on Scraps in the free time I had remaining, usually around an hour a day during the week. I never stopped working on it, and Gauntlet mode was recently - finally - released in full. It's got seven worlds to fight through against enemy vehicles, turrets, and drones, all while upgrading your vehicle. More content than I originally planned, and the levels you fight through are a bit different every time.
Gauntlet mode is complete with all worlds available. There are seven worlds to fight through while upgrading your vehicle to fight increasingly difficult enemy vehicles, turrets and drones. I hope you enjoy it.
Scraps itself is now almost done as well. I'll make another post in the next few days that will detail what's still to come. Much of it is actually already done in a separate branch, so we're not too far off now.
Thank you for your patience, truly.
This update adds a new world to Gauntlet mode, adding three more levels to Gauntlet in total, along with other fixes and improvements.
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:
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
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
Merry Christmas.
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:
I'm going to try and post news about what I'm working on a bit more often again. Here's my list of what I need to do for an initial Gauntlet mode release:
Thank you for your extreme patience as I continue to bumble along with this game in what spare time I have. Last update, I suggested that I'd get Gauntlet mode's World 1 finished, and then work on the framework for Gauntlet mode iteself. In the end I decided to get the first two worlds done first, since both will be needed for a playable release of Gauntlet anyway. I've now got the content for the first two worlds complete. The Gauntlet mode worlds will be loosely themed on the classical Greek elements: Earth, Water, Wind, Fire. Earth and Water now have all their content, and if I give them three levels each, that'll be enough for an initial release of the new game mode that you can try out. As in an actual game update, not just more progress news like this. What I still need to do first is write the framework around the new mode: How you enter levels, progress through them, repair between levels etc. It's stuff that's mostly in the game already but it needs to be strung together correctly and have some new concepts added. At the moment to test Gauntlet mode, I use dev tools to select a vehicle and drop into a level manually. I'm afraid I don't have a release time estimate because the amount of time I have for Scraps currently varies a lot week by week. It'll get done. I've also been making a few other changes to the game as I go, that'll make it in when Gauntlet launches. One I can show off is a new primary firing mode: https://www.youtube.com/watch?v=mJVNoWncFjQ It's something that was brought up in the forums a while ago. People were carefully building vehicles that didn't have quite enough power supply for their weapons, so the weapons would end up dropping down into a sequential firing mode instead of all firing at once - meaning less recoil, and more spread out power and heat. Now that mode can be automatic, but the old mode is still there as well. There isn't really any additional complexity to worry about for the player - left-mouse will be the new mode, or right-mouse will fire using the all-at-once mode that's in the game now.
I haven't posted for a while as I haven't had anything particularly interesting to show, so I just want to check in to show that I'm still here. When I get some time I've mostly been working on content in Gauntlet mode World 1. Once I've done everything in that world I'll be writing the framework that surrounds Gauntlet mode itself - that is, the process that you go through from clicking to select Gauntlet, choosing a starting vehicle, entering a level, going to the next level etc. The different parts of that are basically features the game already, but they need to be strung together and bolstered in the right ways. Luckily Gauntlet maps past World 1 will also be a lot faster to create because 90% of the time I've spent on World 1 has been in making tools and systems rather than the content itself - both creation tools, and code for the semi-random generation of the map's content when it's played. I'll check in again when I've next got something to show.
The Unity engine has a built-in terrain system that's been around for ages. It's honestly pretty great actually, but it has a few quirks. The tree system is maybe the quirkiest part.
There's a special system for trees, separate from the one for placing glass and other detail stuff. Your trees must use two specific built-in shaders. Your trees must reside in a folder with the text "Ambient-Occlusion" in the name. They may have colliders, but other components on them will be ignored.
I tried the tree system out, I haven't used it before. It's got some nice features - for instance it'll automatically turn your trees into billboards at long distances to save rendering work (much like Jurassic Park: Tresspasser did way back in 1998). Although even that has its quirk - the billboards have a slightly different perspective to the meshes so they do some weird bending as they switch over.
I had it all working actually quite well, but the killer was the lack of support for custom components. The trees would have to be permanent; immovable. Scraps with indestructible trees? It wouldn't do.
Look at that realistic tree-smashing action (pls don't destroy trees IRL).
So anyway I added some trees.
(not to SandyBridge - I was just testing them there)
They're not using the special tree system. They're just meshes with a couple of LODs. LODs being levels of detail - showing the lower LOD at far distances. Works fine.
The trees I have actually came with two LODs already, but I wasn't exactly impressed. Does this look like a seamless transition to you?
The branches are fine. The leaves not so much. So I made my own low LOD versions that aren't particularly great either but everything looks OK.
I'm still adding level content. Each "world" in Gauntlet mode is big - but at least it does get reused for three levels. My new job is taking up a lot of time as I knew it would, but I'm still managing to get a little Scraps work done. See you next time.
Let's get the bad news out of the way first. Last week I got a nice job offer that I've accepted. And it had to be a full-time position, so it's not going to leave much remaining time for Scraps. It's an offer that I would be silly to ignore in favour of my obscure little game that I've already been working on for years without much success (income-wise anyway). Of course Scraps could take off in success after Gauntlet mode is added, or after it leaves Early Access, but historically that's very rare: Almost always if a game's sales are slow at first during Early Access, they remain a small-time thing at full release.
So I apologise to anyone reading this because development is gonna get real slow on Scraps. I don't like to let the community down even though it's small. You can still rest assured that I'm not going to abandon this project - Scraps is still gonna get done! But here's what I'm going to do:
- I'm going to stop the current weekly news updates since I expect there won't be much for each one. I'll post whenever I have interesting new stuff to share instead.
- I'm going to add information to the game's description on the Steam store page saying that it's a hobby/side project at this point and development will probably be slow. I don't want to deceive anyone here.
- I'm not going to put the game in sales anymore (25% off etc) until either Gauntlet mode is in, or I go back to having more time to work on it.
The Scraps community is so nice; I want to deliver you an awesome game. But as I said earlier I'd be silly not to take this job, which is exactly the sort of job I want. Here's what I did in my last week of freedom:
I made some more level content. Yeah, I'm still on world 1, because I keep making things like tools for level building or things to put in the levels rather than actually putting things in levels. Subsequent maps should be way faster to populate, like how the terrains for worlds 2 and 3 were done much much faster than the terrain for world 1.
A thing I did this week in that vein was make a new type of vehicle spawner. I already had vehicle spawners that I could place on the map with a list of vehicles they could spawn. Looked like this in the editor:
When playing, they'd randomly select a vehicle to spawn from the list, and that worked OK. Gauntlet mode is sort of half procedural, half hand-placed, and it's important to be careful with how procedural it is. Fully hand placed would make it exactly the same every time, which would get boring fast. But fully procedural almost always ends up boring as well - a million variations on the same thing. No Man's Sky is the procedural game du jour to complain about, but there are many.
However, in this particular case I realised that there were many scenarios where I really just wanted a vehicle spawner that would spawn any vehicle I had that was appropriate for the current level. Same potential set for every spawner. On top of that, really the vehicles should get harder as you progressed to another level within the same world, but to do that currently I'd have to place multiple spawners and limit them to just the level they were intended for.
So I made a vehicle library that loads up all the vehicles I've put in a folder, and lets me select them with filters. For instance if I wanted a vehicle in a certain price range with only cheap weapons on it I could do:
vehicleLibrary.GetVehicle(VehicleFilters.TotalCost(minValue, maxValue), VehicleFilters.EachWeaponCost(weaponCostLimit));
Or for a vehicle in a certain price range with a small chassis:
vehicleLibrary.GetVehicle(VehicleFilters.TotalCost(minValue, maxValue), VehicleFilters.ChassisType(VehicleData.ChassisOptions.Small));
"But writing code every time? That sounds like even more work than placing two spawners." Well yeah, it would be, but I made a new vehicle spawner that automatically detects which Gauntlet level the player is on and sets the appropriate filters. So there's no vehicle info to set in the interface at all:
And I can still use the old spawner type if I want specific vehicle options.
In other news, at one point I also accidentally broke everything in a fun way:
This week I've been mostly placing content in Gauntlet mode levels. I did make an SMG drone as a less deadly version of the the existing MMG drone:
I also made a little Unity editor prefab placer script which I'll share for any Unity devs out there.
In Unity, if you want to add things to a scene you usually drag prefabs from the Project window, which is really just a folder view. It works pretty well but it means that you need to switch around in folders to find things, and you also can't see the object while you're positioning it. Unity provides pretty good tools to customise the editor so I made a little custom window instead:
It lets you spawn arbitrary prefabs with the buttons, and it automatically raycasts to the ground and places things there. You can show a visual indicator for placing invisible prefabs, and there's an option to give things a random starting rotation. You could also rotate the selected object with the keyboard like in the gif above, but for some reason it often ran at like 1fps and was horrible to use, so I've removed that feature.
The code isn't anything special because it's just meant for my personal use in the editor, but I'll share it here as I think it could be useful to other unity devs. If you're using it, read the code comments as there are some changeable things within, but it should work as-is as long as you replace the paths in LoadPrefabList with your own.
Here's the code: http://pastebin.com/E3xmmUWd
2016-8 - 0.5.6.0
- Reduced XP required to unlock some later parts a little. Final unlock is at 4000XP versus the previous 4700XP
- Added eight stationary turrets to the test map to facilitate testing armour etc
Bug Fixes:
- Fixed several null reference exceptions that could occur when vehicle parts were destroyed
- Players with laggy connections could still get incorrectly kicked for "cheating". Threw out that code for now: It won't kick you anymore but still needs some work later
- Various small fixes
Weekly update time. This week I've continued working on level content and generation. I added some more content to the Earth level, and added the remaining features to the level gen that I needed:
This week I fixed some bugs with the Gauntlet mode level generation and I've been testing my level generation out. I looked at two things that I noticed were an issue:
The first week after I made the Gauntlet announcement post was a bit of a mess and I didn't have a lot of time for Scraps work. It was getting near time for an update post and I was left wondering what I could make the next one about. What could I do in a couple of days or so? I didn't really want to do another small Gauntlet mode work post because that's all I've been doing for a while.
So my decision was, you know what, it's time to take a short break from the new game mode work and put something new in the game, for the players.
I looked through my figurative bag of potential parts to add and the Plasmanator came out.
Since I’m being slow with the next update post, here’s a sneak preview. https://www.youtube.com/watch?v=9hKUO4t5y3M
The new singleplayer Scraps game mode I'm working on is called Gauntlet.
You know how games are prone to having some sort of epic conflict you've got to resolve? Yeah well, here that conflict happened, and now it's long over, and it left only ruins behind.
Here, we fight over the scraps.
And there's one place with the biggest stockpile of scrap of all. And it's well defended. But you're already on the road.
Just a small update mostly fixing a couple of issues with the previous release. 2016-6 - 0.5.4.5 - Improved in-game camera collision avoidance - Made damage label colour more obvious Bug Fixes: - Fixed power management bug in previous release - Fixed false cheat flags
I've been working on the third and final terrain type I want for the initial release of the new singleplayer mode. To complement the existing Earth/Fire worlds, the next element is Water. Cold water.
Slippery ice.
Tune in next weekend and I'll properly explain what the new game mode actually is!
No special preview this week I'm afraid, but there is a game update. I didn't intend to do an update right at this moment but I've finally, finally fixed a memory leak on the Scraps server that I've been trying to track down for months. I've been looking at it on and off in the evenings so that it didn't impact development on the game, but I've also really wanted to get it fixed. If you ran a game, even a single-player one, for a long time with lots of vehicles being spawned and destroyed, it'd eventually mess up and weird things would start to happen - like all damage would stop registering. It also meant that dedicated servers needed much closer supervision than they should have needed. In the meantime while I've been working on the new game mode I've also been fixing other things, so there are some other bonus changes here as well.
For the new singleplayer game mode I need three maps to start off with.
You've seen the initial Gorge map:
Super secret new content preview #7/10: "Procedural and hand-crafted"
This update is going to end up giving away a bit about the new game mode but that's OK, I'll explain everything at preview #10 and that's not too far off anyway.
So, in the new game mode I wanted levels that are a bit different every time. Each one short but always something new. The standard solution to that is to use procedural generation, and have the code create something that's different every time. But procedural can also mean bland, generating the same things with the same rules in different places, and for every game where it works well there's one where it doesn't.
I'm taking a sort of a hybrid approach here which with some luck will almost give you the best of both worlds. Here's a complete map for one "world":
That's big - it's over 7km long. But when a level generates it just takes a small chunk of that complete terrain, starting anywhere along it, and putting travel in a forward or reverse direction. I'm still tuning the exact length that'll be, but it's in the region of 1.5 or two kilometres.
Then within that area, things get more complicated.
Throughout the whole level the road is your guide.
Spawn on the road, leave on the road.
Within the level I can hand-place scenery, walls, turrets, enemy vehicles etc. A lot more stuff than the level will actually need. Then I tell the level generator OK, spawn some stuff in the level for a total of about x amount of scrap, and about 60% of it (or whatever) should be in stuff that attacks you, and the rest should be harmless (like crates). It then looks at all the groups of things and probabilities within the selected section of the map and decides what to spawn.
I've set it up so I can pack the entire contents of the level up so instead of having a bajillion things spawned in the world and then deleting most of them (which would waste a bunch of time and RAM), everything in the level is stored only as information about that thing, and then only what's selected is spawned. Everything can be unpacked (basically, spawn everything) so I can edit it, and then packed again for in-game use. In Unity engine terms it basically stores the prefab used, the position and rotation, and then any other custom information that particular thing needs to configure it.
But the key feature is that I've also set it up so I can create everything in groups with custom spawn probabilities. Here's an example of one group of things that could be selected to spawn:
This whole thing - the roadblocks, the turret, and the two crates - has a "normal" chance of spawning so it has about as much chance as anything else to be selected. If it's too close to something else that's already selected, or its scrap values don't work out with what the level needs, then it probably won't be chosen.
But within the group itself, it can choose different subsets of things to spawn as well. This subset will be chosen as soon as the level generator looks at it, so that it can know exactly what scrap value it'll have.
The roadblocks in the middle are set to always spawn the concrete barriers OR the wooden walls, but but never both. So it'll never actually look like the above in-game.
Neither the crates nor the turret are guaranteed to spawn at all, even if the group is chosen - you could get just the roadblocks. But somewhere between zero and all three will be chosen, with one of the crates in this case being a rarer spawn than the other. I could also set it to only spawn one thing out of three, or 1-3, or 0-2 or whatever. And the spawners can be nested so one of the choices could be another spawner with its own mix of guaranteed things and sub-choices.
But even as it is there are 16 possible combinations of just that one small set.
For AI vehicle spawns, I can now define patrol paths so they can patrol around, or just sit and wait.
Right now most of the code for level generation is done, as is most of the stuff to put in the levels, but I still have a lot of work to do in actually populating levels and in the actual framework of the new game mode. Sometimes it feels like things are progressing at a decent speed, sometimes it doesn't, but rest assured that I'm working on it.
See you next weekend.
For the first couple of days this week I was working on something that I then decided against. I've got other work done but it's not really ready to show, it's mostly just code that doesn't visibly do anything yet. So let's talk about the other thing I was working on because I'm interested in what people think as well. I do apologise that this isn't much of an interesting "preview."
A small taste of things to come. https://youtu.be/gBy166Hnu5Y
Scraps vehicles so far always ostensibly have a human driver in a cockpit. Even if they're actually controlled by the AI, there's a cockpit that a person can fit in.
I wanted some mini vehicles as a sort of starter enemy, more like a ground-based fancier version of the drones I showed earlier. Easy enough to code because they're still vehicles, but different. Instead of a human driver in a cockpit they have a Brain CPU.
It's still a key component of the vehicle so the vehicle is lost if it's destroyed, like with the standard cockpits.
I made it a micro chassis to use, that'd be too small for a normal cockpit.
To be clear, the CPU cockpit and micro chassis aren't player usable, at least not with my current plans. They're just for fighting against. Look how cute it is though.
I'm going to be away on family business for a few days next week (actually I'm already away now!) so I'm not sure if Super Secret New Content Preview #5 will make it on on schedule next weekend. But I'm hoping I'll get enough work time in that it will.
This week I made a flying drone enemy type.
They track you, zip around the place, and are fun to shoot.
Initial tests were interesting, almost boids-like:
I found that for the drones I could use a surprising amount of the same code I used for the turrets which was nice. Apart from the actual flying code, a drone is pretty much a turret that moves. And similarly to the turrets I showed last week, they're made of functional parts just like vehicles. Here's a group of them where the one on the right has lost its heat sink and is starting to overheat, and another gets it heat sink shot off:
(sorry for the huge gif! Webm support will get better one day...)
I gave the drones some basic AI. I won't claim it's anywhere near as interesting as Dave's vehicle AI but it doesn't need to be in this case. They don't "fake" their flying though, they thrust around with real physics, so of course you can shoot or crash into them to throw them off. Hitting stuff way up in the air is tricky and not really good fun, so I've designed them to hover along close to the ground.
You can see the physics at work in this scenario when I first gave them weapons...
Yeah so, standard recoil is a bit much for them. Hence I must confess they are cheating a little now: It was either spend ages writing some smart AI that'd attempt to counter weapon recoil while flying somehow, or just let them have less recoil on their guns. I hate it when AI gets to cheat (vehicle AI never cheats by the way, it only sees what it can actually see and collects only scrap that it really collects) but the pragmatic choice here was obvious. So the drones you see elsewhere in this post are using specially engineered reduced-recoil MMGs.
See you next week.
Edit: I just decided to see if I could
I made some stationary gun turrets to use for the currently-in-development new game mode.
I've also written some simple AI for them.
Note that generator and those heat-sinks: They also have inter-dependent functional parts like vehicles. Here's a demo video of everything where I explain what's going on:
https://www.youtube.com/watch?v=vWePrtx9OzE
Not the vehicle kind unfortunately. Every now and then recently I've been getting automated error reports of a stack overflow exception in Scraps. But no-one's actually reported a problem to me directly, everything seems to be working perfectly for me (and clearly most others), and the error report doesn't come with any additional information. So just putting out a general plea, if your game crashes or does anything weird, please do let me know and send me your output_log as described on the website Contact page.
I just wanted to do a small fix-up update today to tidy some things up: 2016-3 - 0.5.4.2 - Some performance improvements, mainly on CPU (the previous terrain graphics upgrade made CPU performance worse) - Added some grungy texture to scene objects in general - No more lag spike (one-frame FPS drop) the first time wreckage spawns - Added a little help dialog thing when first playing a game to point out adding AI players - Added hover tooltips to the server list that show the full game name, in case it doesn't fit Bug Fixes: - Got rid of grass growing through evac pads on the test map - Missing button click sounds added to lobby screen - Fixed AI info in the server list going away after 30 mins when the lobby refreshed By the way, I'm also aware that running the game in DirectX 9 mode (if you don't have a DirectX 11 compatible graphics card) at the moment causes some issues with how the terrain looks. I'm looking into it.
- Main Menu layout changes - AI players now show in the server info - If an AI player gets kicked from a game by a human player joining with no free slots, when a slot is free again they'll now come back... for revenge Bug Fixes: - Fixed rotation range calc bug - Fixed "aim sphere" rotation range visual bug - Fixed null reference exception that occurred on dedicated servers in no-GUI mode with the new terrain - Fixed music player playing the wrong track if the track was changed and then changed back to the original track while the original track was still fading out The main menu looks different, but it's actually the same functionally. The main aim is just to sort of encourage starting games that other people can join, but it also makes room for introducing a new game mode later. Equivalents: Playing single-player: Old: Singleplayer New: Play->Start A Game, have "Allow other players to join" unticked. Joining an Internet game: Old: Multiplayer->Internet->Join A Game New: Play->Join A Game Joining a LAN game: Old: Multiplayer->LAN->Join A Game New: Play->Join A Game, select the LAN tab Hosting an Internet game: Old: Multiplayer->Internet->Host A Game New: Play->Start A Game, have "Allow other players to join" ticked, and set to Internet Joining a LAN game: Old: Multiplayer->LAN->Host A Game New: Play->Start A Game, have "Allow other players to join" ticked, and set to LAN "Allow other players to join" is ticked by default, but it remembers what you last set, so if you always play Singleplayer for instance it'll stay unticked once you've set it that way.
The latest Scraps update adds a little air control, a save format upgrade, tweaked weapon hit forces, and a terrain graphics upgrade. Full changelog: 2016-3 - 0.5.4.0 - Terrain graphics upgrade. But no more switching to greyscale terrain when in low grav mode I'm afraid - Magically, vehicle save files are now also PNG image screenshots of the vehicle itself - Separated weapon recoil and hit force, so they don't have to be the same anymore. Reduced hit forces in general - should help with Medium Cannon spam in particular - Rewrote the weapon movement range calculation AGAIN. More bugs fixed with it. Hopefully very correct and consistent now - Added a little air control: Pitch = Throttle forward/back. Roll = Throttle + Steering. More engine power gives more control - Finally the test map side road is actually 100% flat, right up to the ramp - Updated uLink and Steamworks.NET to their latest versions - Added grass density graphics option Bug Fixes: - Tooltips now update their text to match language changes without requiring a restart - Fixed mass from held wreckage not being subtracted after wreckage was offloaded on evac - Stopped evac pad ambient sound from playing when the pad is turned off (Test map)
The last couple of weeks of dev have been a bit frustrating. I came up against an engine feature that I wanted which - my mistake - I had thought was in Unity 4 but was actually only introduced in Unity 5. Scraps has been halfway converted to Unity 5 for a while so I did a bit more on that conversion, tested the stuff I needed, and realised it still wasn't going to work anyway. Not a real loss of time because I'll most likely need to move the game from Unity 4 to 5 eventually anyway, but annoying because I want to get new content out as much as the next person.
I can actually show some work on content rather than code for once though. You may have seen the new pile of crates and barrels on the Test Map in the last update:
In the editor the crates look like the left image, but when the game is run they take on some random colour variation to look a little more interesting. Giving them all different Materials with different tints would blow out the amount of draw calls in the scene, so instead they all share the same Material, and the tint colour is set via the vertex colour on the mesh itself. Pretty simple code:
void SetTint(Mesh mesh) {
// Tint is set via mesh vertex data rather than in the shader properties,
// so that we can still use the same shared single material instance on everything!
byte colour255 = (byte)(Random.value * 255);
Color32[] colors = mesh.colors32;
for (int j = 0; j < colors.Length; j++) {
colors[j].b = colour255; // Setting the blue channel
}
mesh.colors32 = colors;
}
The meshes are simple so running through the array is super fast - but it only runs once on level load anyway. Then in the surface shader I use the blue vertex's blue colour channel value to do whatever - it's really just a way of getting information from the game to the shader.
// Any extra tint stored in BLUE channel
// fmod is % (mod). Using it to map all possible RGB values
float4 tint = 0.7 + float4(IN.color.b, fmod(IN.color.b * 2, 1), fmod(IN.color.b * 4, 1), 1) * 0.3;
if (IN.color.b > 0) {
c.rgb *= tint;
}
You may wonder why I set just the blue channel and then calculate a colour tint based on that rather than setting the whole vertex colour RGB and setting the tint to that value.
The reason is that a lot of things in Scraps are actually done this way - heat effects on vehicle parts, damage texturing on everything, and how shiny vehicle parts are (specularity) are all specified by modifying the different colour channels in the mesh vertex data, so that each vehicle can be shown with one Material and the environment can be drawn with another. So I need the red and green channels for other things. Otherwise every time something got damaged or heated up, it'd have to use its own Material and have its own draw calls, making graphics performance a lot worse.
I also made these barrels. The red one explodes of course. I wrote a generic script that I can attach to any world object to make it explode when destroyed and damage surrounding stuff.
Driving a vehicle by ScrapsEnthusiast there. Yesterday I also added subtle air control to the game, so that'll be in the next update. It's tuned more for gameplay than being realistic, but you can at least pretend it's created from the torque of the wheels spinning in the air.
And I made some light beam/forcefield-style walls that I can use to create more subtle level borders for some levels. Functionally they work the same as the current walls.
For the next game mode I need lots of terrain, so I've been improving my terrain creation workflow. I can now take a basic low-detail terrain and put it through my Scraps-specific World Machine setup to get out a terrain fairly quickly with erosion and varied texturing.
OK, the bottom one still doesn't look amazing yet, but that's without any grass, fog, sky, etc etc. It's a lot better than the top one considering the minimal manual effort involved. One thing that's not obvious in the screenshot is that the "after" terrains also have more fine detail - so I can map out a fairly low-res base terrain and then run erosion on it to make it into a more fully detailed one.
Today's Scraps update doesn't change anything exactly, but the install size of the game is now almost half what it was! Basically there was a lot of duplication between the main game and server components. This was OK when the game was very small anyway, but it's been getting steadily bigger, so I've refactored things so there's no separate server app at all anymore. Now a server is just the main game with a server flag passed in, and all the duplication is gone. You can still host a game and play on it at the same time.
The latest Scraps release is again focused on fixing bugs and generally making the core game better. In the background I've also been working on the new Singleplayer mode, but that's not ready to show off just yet. 0.5.3.0 - More efficient shader/material usage for environmental stuff - Bigger shockwaves move faster (just looks better) - Some new destruction FX - Fixed some lightmapping glitches and improved some normal maps on terrain - Added some new stuff on the test map that I've been creating for the upcoming singleplayer game mode - Using the lowpassed music track in the lobby instead of the full one, it's more chill - Added an additional vertical adapter block Bug Fixes: - Fixed multiple issues where games could get stuck at Dropship In Transit when starting games. Please let me know if this happens to you after this update - Fixed AI sometimes being lazy and just hanging out until being destroyed for the first time, causing it to henceforth spring into life - Fixed game start failing if scrap limit was changed lower, then deploy clicked right away, causing the limit to lower and make a vehicle selection invalid - Fixed some incorrect cube weights on the Test Map - Fixed shockwaves sometimes not showing up when they should Two Dropship In Transit bugs - one that happened on going from menu to lobby, and the other while going from lobby to game - were horrible timing bugs that only occurred when the stars were aligned just right. The issues I found are definitely fixed now, but please let me know if you still get stuck at a loading screen in the future. Of course, report any bugs you find - I do try to fix things!
It's been a bit longer than usual since the last Scraps update, so I just want to give some reassurance that I'm still working hard on things. There was a little time off over Christmas and New Years, but recently I'm working on something that I've alluded to a little in the past: A major new single-player game mode. My thoughts are that it should help a lot to flesh out the game content whether or not Internet multiplayer numbers pick up. I won't go into details of how it'll play just yet because I'm still testing things out myself, but I will in the near future. I think it'll be a lot of fun. The new mode is pretty major, and is going to take several months to finish completely. I'll attempt to get some stuff out to try earlier, but I'll also keep doing some smaller game updates in the meantime regardless. The next game update will be next weekend but it'll be mostly bug fixes and minor improvements. Still, things are happening, and I'll have more to show soon.
This update is mainly lots of bug fixing and code cleanup behind the scenes. I also did a smaller v0.5.2.14 update that I didn't make an update post for earlier, which improved CPU performance. The specifics: 2015-12 - 0.5.2.15 - Added heavy armour part - Better support for XBox 360 controller on Mac and Linux. Separate default key bindings keep actual inputs the same on all platforms - Engine sounds with multiple of the same engine work together better - Removed an annoying ridge in the RiverRift terrain - Added some subtle fades between scenes Bug Fixes: - Fixed occasionally coming back from testing vehicles to the build screen and your vehicle has flown off into space somewhere - Removed more false positives and not-really-bad words from the swear filter - "Open save folder" button now working on Linux - Fixed the loading screen getting stuck if your vehicle spawned in right as a round ended - Fixed visual glitch between light beams and edge wall glass - Fixed screen staying white if your vehicle was destroyed right at the moment of evac completion - Fixed game modifiers (low gravity) not being unapplied on connected clients if the server shut down - Fixed SkinnedMeshRenderer errors being generated in-game (in the background) if a vehicle had no moving parts - Lots of refactoring and fixing issues with chassis, propulsion systems and their hit points and other values - Tooltips for chassis select now include the extra HP gained from the wheels (so they show the actual full chassis HP now) 2015-12 - 0.5.2.14 - CPU performance improvements due to physics and rendering optimisation work - Tweaks to the RiverRift map layout - Swedish translation update Have a good Christmas everyone. I won't be able to join the Weekly Game tomorrow. Thanks everyone who reported bugs that are fixed here.
[ 6084 ]
[ 1345 ]
[ 4067 ]