22 ms·
KSP2 is spamming the Windows Registry until the game stops working
- proactivesvcs 3y agoI went to download the attached .txt file and actually saw Firefox's download pie gradually filling. I thought, how big is this single registry key‽ 344Mb, that's how big!
- burrish 3y agoSorry for the language but Wow this is incredibly stupid How did this get allowed ?
- ye-olde-sysrq 3y agoLook at the reviews for KSP2. This is not even one of the larger problems with the game. They released into EA with terrible, nearly unplayable performance... on an RTX 4090! a $1600-2000 GPU that at the time was difficult to obtain even if you had the cash.
- bragr 3y agoMore saliently they did all that but also set a full retail price on the EA game as well.
- dotnet00 3y agoIt gets worse because they don't consider the current $50 price to be 'full price'. They claim it's the discounted EA price and full retail would be higher.
- bragr 3y agoI didn't think I could be more annoyed at them, but I guess not! -_-
- anticensor 3y agoShould we expect $500? $50k?
- Intralexical 3y agoGiven the publisher, I think you can only expect it to cost 2K.
- brucethemoose2 3y agoThat kind of performance is fine for a pre alpha. Its pretty clear the dev team did not want to push it out so soon. The game was not ready for Early Access. But they apparently did, and here we are.
- SketchySeaBeast 3y agoKSP2 is really becoming the premier example of "Nearly perfect labour of love's legacy ruined after being bought by a larger company." More on topic: I have no idea why one would want to use the registry to store this information.
- pratikss 3y agoIt's far worse than that. Take-Two bought Squad and KSP along with it. Soon after they took Squad's original IP from them and gave it to Private Division to develop KSP 2. Then they poached staff from Squad. It's not like KSP 2 is developed in some innovative way, I was expecting that game like KSP 2 should have been developed in it's own engine since it's so unique among other games. But nooo. KSP 2 still uses Unity, and in worse way. You are better off installing better graphics mods on KSP.
- Arcanum-XIII 3y agoNot sure, but isn’t unity in this case covering your need for some tools, like rendering, assets management and so on, but maybe not all - i.e deferring to them the physic. Or so would I say assume ?
- sBqQu3U0wH 3y agoI heard from someone who actually works in the industry (as engine developer) that companies usually don't use Unity out-of-the-box and write their own tools and extensions (e.g. memory management) and change parts of the engine as the needs vary greatly depending on the game they are making. Not sure how common that really is though.
- capableweb 3y agoCommon patterns from non-indies using Unity is something like that: write your game with the idea that Unity handles the rendering and media stuff, everything else you write/manage yourself with a proper C# codebase.
- 3y ago
- tyingq 3y agoOne of the comments mentions this: "Alright, doing some investigating it seems that they are saving the Pqs preferences based off of the instance ID of the pqs object, which, according to unity's own documentation, changes between runs of the game, hence why its saving 10 trillion different copies of the same data" So, somebody didn't notice a "changes every game" instance ID was in the path and/or data. They thought they were overwriting a single key.
- echelon 3y agoComing from a Linux background, what is the windows registry and why do things need to write to it? All I ever read about it seem to be horror stories. Can't you store stuff alongside the install? Or in some user data location?
- 4gotunameagain 3y agoIt's kinda like a system wide dconf
- mjburgess 3y agoIt's just /etc
- hulitu 3y ago> It's just /etc Some files in /etc have manpages.
- ElectricalUnion 3y agoSome registry keys also have The Old New Thing posts by Raymond Chen [1] /s [1] https://github.com/mity/old-new-win32api#registry https://github.com/mity/old-new-win32api#registry
- dataflow 3y ago> what is the windows registry and why do things need to write to it? It's a centralized, high-performance small key value store that's the alternative to writing a million config files in random places. It's arguably much better in my experience. E.g. one of the never-ending headaches I always have on Linux is updating config files when a package updates. There's no automatic file merge in general (hence .pacnew and such) so you gotta do it by hand (and not everything is available with the foo.d/ hack). The registry already operates at the value granularity so it bypasses this kind of issue. And as a developer you don't have to worry about some things you might not think about, like the trade-off between corrupting your config files with in-place updates vs. having to create a new file and replace the old one after every config change.
- elzbardico 3y agoI haven't done Windows native development for over 20 years, but at my time during the 90's we already used the registry rather sparingly. And at this time, cross-platform development was not even in our radars. I wonder how in the Year of Our Lord of 2023 someone feels confortable using the Windows Registry like some kind of blackboard.
- potemkinhr 3y agoThere's the odd game that uses registry for the purpose of save files for some reason, which is stupid when you have several PC's and want to sync progress for the odd session. There's one example with a very solid puzzle game (Lyne; https://store.steampowered.com/app/266010/LYNE/ https://store.steampowered.com/app/266010/LYNE/) that used registry but I see they now have Steam cloud on the profile page but back in the day I had to export registry keys to not have to replay the same puzzles, not fun.
- Xeamek 3y agoWell it's not like they randomly decided to use it. It's official and recommended API in Unity. You can use it and not even know it ises registry under the hood (although, at this caliber, you definetly should know such things)
- Pannoniae 3y agoNot surprised at all; KSP as a franchise is in the enshittification stage where they aim to invest the minimum amount of money and maximise returns. This is just simply inexcusable software engineering and quality control. Bit tangential but I'd like to remind everyone that this is the game where the lead designer (?) said that wobbly rockets and physics bugs are adding to the fun of the game, and they are implemented deliberately. This is doomed.
- olliecornelia 3y ago[flagged]
- unsui 3y agoseems a bit hyperbolic, especially for a supposed free-speech bastion like HN.
- ta8645 3y ago> Cory Doctorow should be imprisoned for coining that lame-ass term. And who should we prosecute for "lame-ass" ?
- deleted 3y ago[deleted]
- olliecornelia 3y agoCory Doctorow.
- Noughmad 3y agoWell, I still believe it's going to be good eventually. Like KSP1, for example, or No Man's Sky. There certainly have both the resources and a guaranteed player base to make that happen. That said, I cannot be sure of that, so I will not buy it until it is actually good.
- digging 3y ago
- kortex 3y agoIt feels like the Windows Registry is one of those well-intentioned ideas that ended up being a tremendous mess in actual implementation. "Let's use a central database to store things that the OS, drivers, and UI need to access" somehow became "half assed KV dumping ground for every process and their dog to litter with whatever while acting as a singular bottleneck". See also: https://news.ycombinator.com/item?id=32275078 https://news.ycombinator.com/item?id=32275078
- foobarian 3y agoThey are global variables. Worth working very hard to block in any project. Separate microservices are the most effective way I saw so far to stop people in a large org from making shortcuts via global contexts. I feel bad for our frontend devs dealing with a tide of global constructs in our React codebase.
- recursive 3y agoI still haven't seen a non-handwavy method for orchestrating a transaction across microservices. That means I still can't use them. Although I don't think I ever wanted to particularly.
- duped 3y agoYou wouldn't ever design a microservice architecture that required transactions across them. Every microservice owns its own data.
- recursive 3y agoMaybe it's just the domain, but I guess it means the scope of my microservice is just the whole damn thing anyway. I guess I was doing microservices the whole time.
- toast0 3y agoThat seems domain specific. I can imagine some services where transactions across everything are unavoidable, but I've also worked on lots of things where there's different databases and transactions aren't needed between them. Some times it is a relaxation of requirements though. Some people might want/need account deletion to also remove all the content related to the account transactionally, etc, and if that's a requirement, everything account related must be in a transactionable system. If you can be more flexible on that, separating account management from other data is pretty common in my experience.
- dotnet00 3y agoKSP2 had all the warning signs of being a disaster ever since the initial delays and controversies with the original studio. Unfortunately, as usual, the community put on hype blinders until it became impossible to ignore.
- TylerE 3y agoI knew it was going to be a disaster as soon it became obvious that it was a continuation of the old code base, which has a lot of fundamental issues.
- mattsan 3y agoThis is the first time I'm hearing it uses the old code base - do you have a source? I thought in the initial marketing they were big on saying it's a full rewrite.
- SketchySeaBeast 3y agoYou'd think if they were using the old code base they'd have more of the old features.
- eterm 3y agoIt might not use literal code (although it might), but there's definitely signs that some things like the terrain system were cribbed from KSP1, complete with the limitations of that system. Which means they've ended up in an awful state where even if they were competant (which they are not), best case things might not be much better. You're right they marketed it as a full re-write to avoid the problems ("Slay the Kraken"), but what was delivered was trash.
- gs17 3y agoI'm pretty sure it's not using much if any of the old code given how many bugs it had/has that don't exist in KSP1.
- moffkalast 3y agoAnd every time anyone mentioned any of that on the subreddit they got downvoted to oblivion, including myself. It's like everyone was (and to a smaller extent still is) on a heavy dose of weaponized hopium because the studio invested half their budget into a prerendered trailer. Even the youtubers that got to play the prerelease version pulled out every excuse in the book to not present what they saw objectively.
- Guvante 3y agoA comment says a dev tool got included by mistake
- comprambler 3y agoEveryone seems to love shitting on KSP2, when the same people forget what KSP1 was like in Alpha. No science, shitty graphics, excessively wobbly rockets, inconsistent orbits, (other than graphics) seems familiar? It took a looooong time for KSP1 to get where it is now, it will also take awhile for KSP2 to be as polished. Chill out.
- brucethemoose2 3y agoKSP2 can't be developed forever. KSP1 had (AFAIK) a cheaper dev team with no demanding publisher and a good reputation that brought a steady stream of money during alpha. If they progress at the speed of KSP1 from this point, they are going to get cut.
- mattsan 3y agoI forgot KSP2 was made by an indie studio /s
- jylam 3y agoExcept KSP was cheap (I got it for $9 IIRC, which was good value) when still in beta. KSP2 is $50 for the same level of beta, after years of development and drama. Don't chill, don't buy this crap until it gets better.
- pdntspa 3y agoIs this "not corrupting the registry" really a thing that people are worried about when you're using Windows' APIs to access it?
- bloqs 3y agoHonestly when the brains come together on hackernews to reverse engineer and unfuck a high profile videogame I get unreasonably excited. The guy that fixed the GTAV loading times via identifying a broken JSON loop downloading cosmetics was astonishing to me
- lamontcg 3y agoPeople doing work on their own free time to fix a corporation's mistakes for them gets you excited?
- Bjartr 3y agoHe did say "unreasonably"
- bloqs 3y agoYes - it reminds me that despite any overbearing corporatist or draconian protections on games in this very modern "service game" era, people are still clever enough to not only reverse engineer them, but resolve issues that cost some people thousands of hours of pain. I still game an awful lot, GTAVs loading screens is one of many examplea that have juat caused me collectively hours of pain. I hate the anti-consumer world in which games are now made, but individual hobbyist brilliance fills me with joy.
- londons_explore 3y agoAdding 322 mb of data to the registry isn't going to be healthy for windows either. Registry hives expand but don't contract again. The registry is effectively held entirely in RAM. You are therefore effectively wasting 322 mb of RAM even when KSP isn't running.
- wolpoli 3y agoI remember it used to be an optimization thing in Windows 9x to compact the registry on startup. I am surprised that it's not really resolved.
- londons_explore 3y agoYou can still do it manually, but you need a bootable disk to do so: https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/compress-bloated-registry https://learn.microsoft.com/en-us/troubleshoot/windows-serve...
- ilyt 3y agoI'm surprised they didn't just shoved it in SQLite and called it a day. It's public domain. NIH I guess. Or maybe some old fart in company doesn't want to let go off their abomination.
- londons_explore 3y agoYou're surprised Microsoft doesn't replace the registry with SQLite in Windows? If so, you might not be aware quite how many millions of entries are in the hierarchical key value database that is the registry, and quite how critical read-write latency is. sqlite can do clever things like multiple indexes and full text search, but won't beat the windows registry on the performance front at the narrow usecase it was designed for.
- anticensor 3y agoSQLite only has two types: INTEGER, BLOB (all other SQL types are implicitly converted to/from BLOB). Registry has many types: SZ, WORD, DWORD, QWORD, BINARY.
- ad-astra 3y agoAs a teenager I played so much KSP that my grades suffered, played KSP2 a few days ago & did a moon landing, the game has a long way to go but the experience wasn’t nearly as bad as the reviews suggested.
- fnordpiglet 3y agoIt’s improved over the last 6 months or however long it’s been. But it’s still a shadow of ksp1, while ksp2 was sold with breathless discussions of interstellar ships with colonization and a bunch of stuff that would really have made it a next generation on ksp. But instead it’s still a year or more from parity with a laughable cadence of improvements, minor patches coming out every two months. This is after they slipped their deadline repeatedly on early access. I think the community and reviews would be different if the parent company hadn’t outright screwed the original developer of KSP, which was a beloved game. The drama around that poisoned a lot of community good will, because the original developers clearly had a love for the game and the community and made something unique, then were unceremoniously dumped and cut out of what was supposed to be a well funded effort to build KSP “right.” Then they release this as “right” and it’s a huge disappointment.
- babypuncher 3y agoWho still uses the Windows Registry in 2023?
- Xeamek 3y agoUnity does, in their official API :)
- babypuncher 3y agothat is pretty sad in 2023
- raverbashing 3y agoThis is yet another example on how, while Windows can have its problems, 90% of them are other developers treating the system as their personal dump truck/litterbox (as per another comment) > having the Pqs preferences based off of the instance ID of the pqs object, which, according to unity's own documentation, changes between runs of the game This looks like someone copy-pasted something off of Stack Overflow (wouldn't be the first time)
- ilyt 3y agoI think only thing worse to do with registry would be using it as savegame storage. Holy fuck those guys are clueless, no wonder KSP2 launched in such shit state.
- tambourine_man 3y ago“Be warned though, deleting the wrong thing can stop applications from working, or even break the entire operating system.“ You gotta love Windows.
- PretzelPirate 3y agoThis is the same case in any OS when you're deleting things with root privileges.
- charcircuit 3y agoJust because current OS suck at protecting themselves, that doesn't mean that it is acceptable.
- tambourine_man 3y agoI macOS you can’t delete system files, even with root privileges, unless you disable system integrity, which requires a restart. Not the same at all.
- LoganDark 3y agoin macOS a developer is like 90% likely to already have SIP disabled, because if at any point they had to do even one single thing that SIP didn't like, they would have had to completely turn off all security for the entire operating system
- tambourine_man 3y agoWhere did you take that percentage from? It’s very likely the other way around. Almost no one, developers included, have SIP disabled. If you need kernel extensions you should look for a different solution, at least on the Mac.
- LoganDark 3y agoLittle Snitch required a kernel extension until the Network Filter API was introduced. Homebrew required SIP to be disabled when it was first introduced but that's almost definitely fixed now. Some other software like certain hypervisors could have required it. I just think it's more likely for someone to disable SIP than find a different program that doesn't mind it, and those programs were all over the place when it was first introduced. Less so now, I suppose. > If you need kernel extensions you should look for a different solution, at least on the Mac. In 2023 sure.
- Xeamek 3y agoPeople in both threads shit on devs as if they manually modified registry with a crappy script at that, but this is the official Unity API and this is the idiomatic way to store preferences. Ofcourse, it is unfortunate to have bug here of all places, but it looks like people don't like KSP2 devs in general (maybe even for good reasons, I don't know) and try to exaggerate this issue as some kind of proof, when in reality there is nonw
- Xeamek 3y agoPeople in both threads shit on devs as if they manually modified registry with a crappy script at that, but this is the official Unity API and this is the idiomatic way to store preferences. Ofcourse, it is unfortunate to have bug here of all places, but it looks like people don't like KSP2 devs in general (maybe even for good reasons, I don't know) and try to exaggerate this issue as some kind of proof, when in reality there is none
- asddubs 3y agoyeah, I thought it was a bit silly too, and obviously a case of "hindsight is 20/20". "They should have been more careful." They assumed an ID that was static and it turned out not to be. I'm not saying the bug would have been impossible to prevent, but things like that will slip through the cracks on occasion.
- ivanjermakov 3y agoI'm so grateful Unix did not implement its own registry. Files all the way down.
- TeddyDD 3y agoIsn't gsettings/gconf/dconf something like registry? Gnome tends to implement worst stuff from Windows and Mac after all...
- baal80spam 3y agoReally? I see it as a mess in the whole house instead of a mess in one room only.
- LoganDark 3y agowindows is a collection of thousands of rooms each with their own mess
- pluc 3y agoIs it common to use the registry essentially as a database? 300mb is way more than I expected that thing to support in a single key, but I admittedly know nothing about Windows. I've only ever seen it used to store booleans or simple string values.
- thefifthsetpin 3y agoI just exported the registry on my personal windows machine to see. It was 400 MB as a .reg file and zipped down to less than a tenth of that. I'm not sure what's common, but clearly not many programs are dumping large data into my registry.
- thisiswater 3y agoUnity's default save system "PlayerPrefs" saves to the registry, but I find it difficult to see why this is a good idea for anything but global settings (e.g. graphics settings). Serialization to JSON is a fairly simple alternative. Why would this be used for player data in a production game? It's frustrating to port playerprefs data between systems for testing purposes. Is there something I'm missing?
- terafo 3y agoAfter doing some profiling when that game released I'm not surprised. Game lacked LOD system, 70% of frame time was spent doing terrain rendering(IIRC it also generated mesh from texture every single frame).
- WentFullRetard 3y ago[dead]
- xinayder 3y agoThis is amazing. It shows that a developer team from a triple-A publisher with billions of dollars at their disposal is just incompetent. The single-man team headed by HarvesteR and later some other devs that joined him were much more competent and it was an indie game. Take2 killed the KSP franchise and they continue to do so. From less and less frequent updates (KSP2 has received only 3 "major" patches since it was released in February, taking 2 months between updates), to useless hotfixes that take a week to be deployed to fix just a single bug, to them taking 6 months to try to find out the reason the rockets are wobbly, to them releasing a game in Early Access which wasn't even ready for EA, it was an alpha prototype, completely broken down, and just trying to milk the franchise lovers for their $40 for an INCOMPLETE PROTOTYPE (which will be raised to $70 once the game leaves EA), I wish they just abandoned KSP2. KSP1 with its modding community has produced so much and it's a much better game than its sequel. The charts don't lie, right now 1k players on KSP1, 67 on KSP2. Now someone's going to tell me "this is not how game dev works". Well. They have billions at their disposal and a predatory publisher on their back. And their dev team consists of a lot of modders from the KSP community which I particularly don't blame them for not delivering, but Nate and the team that was poached from Star Theory by Take2 because the former didn't agree with the time frame Take2 gave them to release a working prototype, they are really incompetent. They are "building the game from ground up" using the same engine as its predecessor and amazingly they came across the exact same bugs that KSP1 had fixed like 8 years ago. This is not even newbie game dev, it feels like they're just a bunch of people that just started to learn how to write software. I have an opinionated website tracking their lies and deceptions (based on Web3 is Going Great), if anyone is interested: https://nokerbal.space https://nokerbal.space
- ouraf 3y agoMakes sense. one of the simplest ways of saving data in Unity (but not the most correct) is saving values via PlayerPrefs[0]. In Windows, this saving method defaults to registry instead of creating a separate save file in the game folder. if you don't make your own system for storing variables or running everything in cache and then use a smarter way of saving data, it can get out of hand fast. This was way more common in the old Unity 5 days, though [0]https://docs.unity3d.com/ScriptReference/PlayerPrefs.html https://docs.unity3d.com/ScriptReference/PlayerPrefs.html