{"id":52060,"date":"2021-03-25T06:00:31","date_gmt":"2021-03-25T10:00:31","guid":{"rendered":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=52060"},"modified":"2021-03-25T14:56:30","modified_gmt":"2021-03-25T18:56:30","slug":"i-dont-like-satisfactory","status":"publish","type":"post","link":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=52060","title":{"rendered":"Un-Satisfactory"},"content":{"rendered":"<p>I gave Satisfactory <a href=\"?p=48794\">my #3 spot in 2019<\/a>. There were things I loved about the game, and there were things I didn&#8217;t. At the time, it was easy to dismiss the things I didn&#8217;t like as simple growing pains. The game was in early access and it&#8217;s natural to assume that a good game is going to keep getting better as it grows. The things you love will become more polished, the stuff that bugs you will get fixed, and so by the end you&#8217;ll have the best version of the game.<\/p>\n<p>But as Satisfactory has grown, I find myself becoming more annoyed and less interested in it. The stuff that bugged me has become more bothersome, and the stuff I liked seems to have gotten lost in the noise. I come back to the game after every major update, and these revival sessions get shorter every time.\u00a0<\/p>\n<h3>What I Like<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_base2.jpg' width=100% alt='There&apos;s no Lorax around to speak for these trees. So screw this planet.' title='There&apos;s no Lorax around to speak for these trees. So screw this planet.'\/><\/div><div class='mouseover-alt'>There&apos;s no Lorax around to speak for these trees. So screw this planet.<\/div><\/p>\n<p>To get where I&#8217;m coming from: I loved Factorio. According to Steam, I&#8217;ve clocked almost 2,000 hours in that game. Now, the defensive fan-boy response here is:<\/p>\n<p><b>&#8220;Satisfactory is not Factorio! If you want to play Factorio, then go play Factorio and don&#8217;t criticize this perfect jewel of a game!&#8221;<\/b><\/p>\n<p>In order to discuss a game we need to start <b>somewhere<\/b>. I&#8217;m not saying that Satisfactory needs to copy Factorio, I&#8217;m just explaining what initially drew me to the game.\u00a0<\/p>\n<p>I love solving emergent logistical problems. Every game ends up being its own puzzle, and no matter how well I do there&#8217;s always that nagging suspicion that I could do it all <i>even better<\/i> next time. It&#8217;s this constant process of visualization, experimentation, and implementation as I work on various optimization problems. I&#8217;m always looking to make it a little more efficient, get it working just a little faster, or pack the whole thing into an even smaller space.<\/p>\n<p>The idea of having this style of puzzle-solving in a first-person world sounds almost too good to be true. The world of Satisfactory looks amazing, and watching the sunrise over the vast industrial complex I&#8217;ve carved into the face of this otherwise virgin planet fills me with a deep sense of accomplishment. Maybe I&#8217;m committing some sort of ecological crime, but damn if this isn&#8217;t one fine-looking, well-maintained ecological crime.<\/p>\n<p><!--more--><\/p>\n<h3>The Problem<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_base1.jpg' width=100% alt='' title=''\/><\/div><div class='mouseover-alt'><\/div><\/p>\n<p>Satisfactory seems like it offers this same sort of puzzle, but once you&#8217;ve spent a few hours with the game you realize that the puzzles are sort of shallow and the whole process is buried under mountains of inconvenience and busywork.<\/p>\n<p>As a programmer, I want to write code that runs fast. I want that code to be beautiful and readable, and I want it to be organized in a way that makes sense and is easy to maintain. In a Factory-building game, I have very similar goals:<\/p>\n<ol>\n<li>Maximum efficiency. I don&#8217;t want machine C to be stalled waiting for B, and for B to get backed up because of irregular output from A. Everything should be tuned to flow smoothly.<\/li>\n<li>Neat and tidy. My base shouldn&#8217;t look like a big pile of tangled up Christmas lights, with conveyor belts crossing randomly all over the place.\u00a0<\/li>\n<li>Good organization. The machines should be packed close together and there should always be some walking space. It should be easy to tell where things are made and where they go.\u00a0<\/li>\n<\/ol>\n<p>I don&#8217;t mind if a game makes the first one a challenge. In fact, it would be boring if it didn&#8217;t. Sure, make it so that I need 3 of machine A for every machine B, but 2.5 of C for every B. That&#8217;s fine. What I don&#8217;t like is if a game is designed to make the second two things difficult. It feels like programming with a variable-width font in a language where you can&#8217;t leave comments. That&#8217;s not making the puzzle more interesting, it&#8217;s just making your tools worse.<\/p>\n<h3>The Grid of Lies<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_grid1.jpg' width=100% alt='These floor tiles make an excellent grid. Too bad NOTHING LINES UP WITH THEM.' title='These floor tiles make an excellent grid. Too bad NOTHING LINES UP WITH THEM.'\/><\/div><div class='mouseover-alt'>These floor tiles make an excellent grid. Too bad NOTHING LINES UP WITH THEM.<\/div><br \/>\nIn Satisfactory, you can slam down these huge 8m floor tiles. They snap together to form floors. The natural thing to want to do next is to treat these tiles like a grid.<\/p>\n<p>Except, <b>nothing fits on this fucking grid<\/b>. Machines are always 1.125 tiles wide by 1.675 tiles deep, or some similar bullshit.<span class='snote' title='1'>The internal grid is based on meters, which means 1\/8ths of a tile. This would be fine if everything was powers-of-two, but no. Everything is 9 meters or 10 meters. I don&#8217;t think ANY machine in the game fits neatly into 8m.<\/span> Worse, the conveyor belts are infuriating analog things that don&#8217;t care about your grid. They default to waist level. creating endless blockades for you to bunny hop over, turning even the simplest of factories into a spacebar-destroying obstacle course.\u00a0<\/p>\n<p>Earlier I said that having machines operate in odd ratios is fine. And it is! In theory. But since I need 3.5 of A for every 2 B, then I need to take output conveyors, combine them, then split them again to properly balance the load. On Factorio&#8217;s grid, this is just a matter of slapping down the right parts. In Satisfactory, you need to surrender enormous amounts of space to this sort of thing and spend endless time trying to get the conveyor inputs and outputs to line up properly. You&#8217;ll find yourself deleting three items and rebuilding them again and again, trying to get a stupid conveyor to make a simple 90 degree turn.<\/p>\n<p>Just building a simple conveyor belt T junction winds up being an ordeal. <i>I just need to build a belt. And now a splitter. Now I finish the T with the second belt except&#8230; oops that doesn&#8217;t quite line up, so let me delete the splitter. Now I&#8217;ll crawl over all this bullshit so I can see what I&#8217;m doing from the other side. Now I&#8217;ll line up the splitter juuust right, even though that&#8217;s what grids are for but splitters ignore the grid. Now I just need to build the final belt, except no. The auto-snap won&#8217;t let me build from this angle and it wants to snap onto some bullshit in the background. So let me climb back down and back up to where I was earlier and see it from the other side so I can build the final bit of belt. NO WAIT I&#8217;M OUT OF FUCKING METAL PLATES AGAIN AND I&#8217;M RAGE QUITTING A BUILDING GAME. I DIDN&#8217;T EVEN KNOW THAT WAS POSSIBLE.<\/i><\/p>\n<p>In Factorio, this would be a two-second job. In Satisfactory, it requires a bunch of fussing around and building and re-building crap again and again until you can appease the snap system. This is such a simple and common operation, which makes it all the more mystifying that it needs to take 15 seconds, three position changes, and six trips to the build menu.<\/p>\n<p><b>This is not a puzzle<\/b>. Conceptually, I solved this problem ten minutes ago. I know how this needs to work. This &#8220;gameplay&#8221; isn&#8217;t presenting me with interesting logistical problems to solve, but instead creating endless interface headaches for me.<\/p>\n<p>Eventually I&#8217;ll just give up on the annoying little conveyor and let it spill into the next tile rather than fight with it all day. And then another. And another. Pretty soon all the parts of my factory exist in these massive warehouses the size of airplane hangars, even though the machinery they contain is conceptually very simple. So now my base covers this massive area. Suddenly I run out of concrete or metal panels and I can&#8217;t build anymore. That&#8217;s not a big deal when you&#8217;re ten seconds away from the nearest refill, but in these gargantuan bases I spend most of my time just running around my base. I actually get hand cramps.<\/p>\n<p>Do you have any idea how crazy that is? I play videogames all day long. I play shooters for hours at a stretch, where you&#8217;re constantly mashing W or S as hard as you can. That never bothers me. After three decades, my hands can take it. But running around in Satisfactory is so constant that it actually puts more stress on my hands than DOOM.\u00a0<\/p>\n<h3>Bounding Boxes of Madness<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_tall.jpg' width=100% alt='The room is gargantuan, yet there&apos;s no room to move around and I can&apos;t see what I&apos;m doing. You can slightly mitigate one of these problems at the expense of making the other two much worse.' title='The room is gargantuan, yet there&apos;s no room to move around and I can&apos;t see what I&apos;m doing. You can slightly mitigate one of these problems at the expense of making the other two much worse.'\/><\/div><div class='mouseover-alt'>The room is gargantuan, yet there&apos;s no room to move around and I can&apos;t see what I&apos;m doing. You can slightly mitigate one of these problems at the expense of making the other two much worse.<\/div><\/p>\n<p>Making things worse is just how enormous all the machines are. They&#8217;re so big they obscure your vision of the work you&#8217;re trying to do. They tower over you. Even the &#8220;small&#8221; machines are 5 meters tall! They also have this annoying metal frame around the base, which makes the building&#8217;s footprint even larger. I want to build as compact as possible, and all the machines are greedy space hogs that want to practice social distancing. And making it <b>even worse still<\/b> is the fact that these metal frames don&#8217;t create space the player can use.\u00a0<\/p>\n<p>I can&#8217;t pack the machines together to make them nice and neat because of these obnoxious metal bases. But then the resulting gap is usually too small for the player to fit through. It&#8217;s the worst of all worlds. The space is huge and sprawling, and yet there&#8217;s never enough space for me to fit through without bunny-hopping all over the place.<\/p>\n<p>The looming machines blot out your view of your surroundings, which is a pretty serious drawback in a game about <b>designing room layouts<\/b>. The game gives you this enormous watchtower thing. I guess you&#8217;re supposed to build that and then run up and down the ladder every time you want a look at what you&#8217;re doing. <i>Gosh, I wonder why my hand is cramping so much<\/i>.<\/p>\n<p>But hey, this game is 3D, right? So why not build up? Just make a vertical factory!<\/p>\n<p>It&#8217;s a great idea, but these machines are incredibly greedy with vertical space as well. Their bounding box is enormous. The machine is 5 meters tall, but they have this little antenna on top that pushes the bounding box even taller, and the wall sections you build are only available in 4 meter sections.<\/p>\n<p>So this machine is 5m tall. But then it insists on having all of this empty headroom, so I really need 9 meters. The wall will round it up to the next increment of 4, meaning that even a room with simple machines needs to be a whopping 12 meters tall. <i>Great, more fucking ladders to climb<\/i>.\u00a0<\/p>\n<p>One design pattern you&#8217;ll run into is that you&#8217;ll want to provide power to a long string of machines. Each power pole can only connect to 4 things. Except, you&#8217;re building a string of them. Connecting to the previous and next items in the string take 2 of those 4 slots, so really you need a power pole for every 2 machines in your base. That gets out of hand very quickly!\u00a0<\/p>\n<p>And then there&#8217;s trains&#8230;<\/p>\n<h3>Trains Are Awesome<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_train.jpg' width=100% alt='I love these trains, but the pleasure of having them is ruined by the misery of NOT having them when you REALLY need them.' title='I love these trains, but the pleasure of having them is ruined by the misery of NOT having them when you REALLY need them.'\/><\/div><div class='mouseover-alt'>I love these trains, but the pleasure of having them is ruined by the misery of NOT having them when you REALLY need them.<\/div><\/p>\n<p>Okay, maybe train platforms are obnoxiously large and that certainly contributes to the ongoing problem of needing to run a marathon every time you run out of some worthless early-game material and need to hike to the other side of your base to get more. But train rails allow you to cover vast distances, and they carry both cargo and electricity.<\/p>\n<p>The problem &#8211; and this is where I really start to hate the game &#8211; is that Trains arrive several hours too late in the progression. To unlock trains, you need oil. To get oil, you usually<span class='snote' title='2'>It depends on the starting location.<\/span> need to build a transport system that reaches a <b>few kilometers<\/b>. So what you end up doing is building two kilometers of conveyor belts and power poles through the wilderness. If you thought it was annoying to hike back for a fresh stack of metal panels, then just wait until you&#8217;re a kilometer and a half into the jungle. Enjoy that 3Km round trip. And the carpal tunnel syndrome!<\/p>\n<p>So after hacking your way through the godforsaken wilderness, fighting several boss monsters with the jank-ass combat system, and building power poles and conveyor belts all over the place, you finally have some oil. I don&#8217;t want to gloss over this point: <i>This process can take hours.<\/i> I&#8217;m here to solve engineering and logistical problems, but suddenly I have to stop for two hours so I can play fucking <i>Lewis and Clark Simulator<\/i>.\u00a0<\/p>\n<p>Once that oil starts coming in, you&#8217;ll unlock trains, which is THE IDEAL TOOL FOR THE JOB YOU JUST FINISHED. It&#8217;s like the game asks you to dig out the foundation for a house with a spoon, and once you&#8217;re done your reward is a bulldozer.<\/p>\n<p>(You can also setup a truck to auto-drive goods back to your base. Trucks have their own advantages and drawbacks, but the important point is that the setup time is about the same. You can build a 2km conveyor or you can set up a 2km truck route, but when you count land-clearing and bridge-building for the truck it&#8217;s about the same. And you still need those power poles either way.)<\/p>\n<p>So what am I supposed to do now? I just spent an entire play session building this ugly, stupid, inadequate conveyor through the wilderness. Do I leave that janky eyesore in place, or do I spend an hour tearing it down and replacing it with a train? I&#8217;m likely very sick of that stretch of the wilderness by now, having made the trek several times in the process of building the original delivery system. Doing the trek a couple more times in the process of cleaning up the mess and building a train doesn&#8217;t sound fun.<span class='snote' title='3'>And OF COURSE they&#8217;re built with different resources, so while you&#8217;re switching over you&#8217;ll be starved for the newer resources while your pockets overflow with the old.<\/span><\/p>\n<h3>Is This SUPPOSED to be Annoying?<\/h3>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory2021_base3.jpg' width=100% alt='' title=''\/><\/div><div class='mouseover-alt'><\/div><\/p>\n<p>You don&#8217;t get the ability to build a train until long after you&#8217;ve had to build conveyors across the world. You don&#8217;t get the jetpack until you&#8217;ve already built extensive infrastructure for climbing up and down buildings. You don&#8217;t get the improved melee weapon until you&#8217;ve finished clearing the monsters around your base. You don&#8217;t get the improved 7-slot power pole until you&#8217;ve built your entire electrical infrastructure around 4-slot poles.\u00a0<\/p>\n<p>You don&#8217;t have a chainsaw at the start of the game, which means you can&#8217;t clear land. So you end up building all your stuff 20m in the air so you won&#8217;t have trees and undergrowth in your way. Once you&#8217;ve got the foundations built, you finally unlock the chainsaw so now you can clear the undergrowth that has since become irrelevant to your plans.\u00a0<\/p>\n<p>Satisfactory is a constant stream of &#8220;Gosh, THIS would have come in handy an hour ago!&#8221; type moments.\u00a0<\/p>\n<p>You can&#8217;t see what you&#8217;re doing over all the towering machines. Getting around is a pain in the ass. You&#8217;re constantly making runs to fill your pockets. Power is endless busywork of building more poles so you can build more poles. Building compact is an unrewarding battle against the UI and a grid that always seems to be 0.01 units off.\u00a0<\/p>\n<p>The pipe won&#8217;t make this turn. This conveyor is 0.2 units out of alignment and I can&#8217;t build it. This power line won&#8217;t quite reach. This machine sticks out 0.1 units from the building. <i>Nothing lines up, nothing fits, and my pockets are empty again.\u00a0<\/i><\/p>\n<p>So little of the player&#8217;s time is spent thinking about layouts and production optimizations. Most of your time is spent just enacting decisions you made ages ago. You can&#8217;t get to the game because the game is in the way.\u00a0<\/p>\n<h3>Salt in the Wound<\/h3>\n<p>And also, there&#8217;s the fact that mouse-invert controls are ignored when you&#8217;re in a vehicle. Which means <a href=\"https:\/\/www.theguardian.com\/games\/2020\/feb\/28\/why-do-video-game-players-invert-the-controls\">if you&#8217;re a mouse-inverter<\/a>, then the vehicle controls are always backwards. It&#8217;s bad enough to have a game with backwards controls, but it&#8217;s even worse to have a game change controls on you every time you enter or exit a vehicle. You could excuse this as part of those early access growing pains, but this problem has existed for <b>two years<\/b>. This is an incredibly simple change to fix a major usability issue that&#8217;s been around for ages and that people have been steadfastly complaining about.<\/p>\n<p><div class='imagefull'><img src='https:\/\/www.shamusyoung.com\/twentysidedtale\/images\/satisfactory_flipped.jpg' width=100% alt='IT&apos;S BEEN TWO YEARS. THE FIX FOR THIS BUG IS LESS WORK THAN IT TOOK TO MAKE THIS IMAGE. DO IT ALREADY.' title='IT&apos;S BEEN TWO YEARS. THE FIX FOR THIS BUG IS LESS WORK THAN IT TOOK TO MAKE THIS IMAGE. DO IT ALREADY.'\/><\/div><div class='mouseover-alt'>IT&apos;S BEEN TWO YEARS. THE FIX FOR THIS BUG IS LESS WORK THAN IT TOOK TO MAKE THIS IMAGE. DO IT ALREADY.<\/div><\/p>\n<p>To the folks at Coffee Stain studios, here is the solution you need:<\/p>\n<pre lang=\"cpp\">\r\n\/\/The bullshit driving controls\r\nif (CheckGodDamnUserSettings().MouseInvert == true) {\r\n    FuckingMouse.y *= -1;\r\n}\r\n<\/pre>\n<p>There. I release this code under the MIT license. Feel free to use it. You might need to rename some variables to get it to work, but it&#8217;s only three lines of code and one of them is a curly brace. I know you can do it.<\/p>\n<h3>Wrapping Up<\/h3>\n<p>Factorio gives you good tools to solve complex problems. Satisfactory gives you horrible tools to solve simple problems. Factorio feels like you&#8217;re constantly optimizing clean, quality code to make it a little better. Satisfactory is the experience of endlessly refactoring nightmare spaghetti code.\u00a0<\/p>\n<p>I want to love this game. It really is pretty, and I&#8217;m so burned out on Factorio by now. But what I&#8217;m looking for is out of alignment with what the developers are designing by about 0.125 units, and I can&#8217;t make it fit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I gave Satisfactory my #3 spot in 2019. There were things I loved about the game, and there were things I didn&#8217;t. At the time, it was easy to dismiss the things I didn&#8217;t like as simple growing pains. The game was in early access and it&#8217;s natural to assume that a good game is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-52060","post","type-post","status-publish","format-standard","hentry","category-reviews"],"_links":{"self":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/52060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52060"}],"version-history":[{"count":23,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/52060\/revisions"}],"predecessor-version":[{"id":52083,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/52060\/revisions\/52083"}],"wp:attachment":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=52060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=52060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}