×
top 200 commentsshow 500

[–]themikesem 3754 points3755 points  (274 children)

That has to include assets right? Like that can't just be the code.

[–]reohh 2661 points2662 points  (107 children)

Definitely includes assets. I work at a very large tech organization and our monorepo (code for our entire organization) is only around 8GB

[–]MSTRMN_ 1033 points1034 points  (60 children)

Also, I know MS was talking once that the entire Windows source tree for latest version is ~820 GB

[–]timdorr 737 points738 points  (29 children)

That's got to include a bunch of bundled apps with assets. The whole of the Linux kernel, including history, is 1.5GB.

[–]MSTRMN_ 278 points279 points  (16 children)

Obviously. It's probably all SKUs and built-in apps with assets

[–]ChocomelP 61 points62 points  (14 children)

SDKs rather than SKUs?

[–]MSTRMN_ 172 points173 points  (13 children)

SKUs as in Home, Pro, Enterprise, Server and others

[–]_Rook13 100 points101 points  (11 children)

SKUs on Windows is just a bunch of switches for features basically. There's no way that it will increase the code base/repository size.

[–]hesh582 66 points67 points  (5 children)

SKUs on Windows is just a bunch of switches for features basically

This is true in some cases but definitely not all.

[–]DontFearFailure 28 points29 points  (6 children)

How can that be when my ISOs are remuxed at 50GB each?!

[–]kozeljko 41 points42 points  (5 children)

Well a kernel isn't the whole OS you get in distros.

Also 50GB seems way too much for a single OS.

[–]DisheveledJesus 31 points32 points  (0 children)

It is. The Windows 10 ISO is like 8 gb ish.

[–]corybiscuit 14 points15 points  (1 child)

I think the dude was makin a joke about how his "Linux ISOs" (code in the hoarding community for pirated material, usually movies) are 50gb, especially considering he said remuxed.

[–][deleted] 7 points8 points  (0 children)

People are so used to that joke being bland and overused that when it's actually used relatively cleverly it's hard to pick up on lol

[–]pheonixblade9 28 points29 points  (0 children)

That is likely mostly drivers.

Fun fact - they invented GitFS to be able to handle that.

[–]blackmist 92 points93 points  (9 children)

Uncompressed full fat assets at that. The kind of thing they bring down to game-sized meshes, rather than the gargantuan monstrosities they'll be editing in ZBrush with 64GB of RAM.

[–]Porrick 66 points67 points  (8 children)

If they were including source assets, I'd not be surprised to see it be over a terabyte.

[–]GragGun 37 points38 points  (6 children)

It's probably all uncompressed Targa texture files and raw FBX or other source meshes, but definitely not Zbrush or Substance Painter files, my TL would absolutely murder my face if I was importing zbrush files into the trunk.

[–]PseudoPhysicist 10 points11 points  (5 children)

TARGA gives me such a headache. Yo, artists, I know lossless file formats are hot...but can you convert them to PNGs for final export please? I don't want a 10GB Car.

[–]jlat96 10 points11 points  (10 children)

I think I’m picking up what you’re putting down, and I’ve always wondered why some large tech organizations went with the monorepo approach. Is it hard to work with?

Edit: forgot to add my question

[–]Frodolas 18 points19 points  (3 children)

Nah it's pretty easy. Most of the places that do it have internal tooling to let you checkout only part of the repo at a time, and it makes cross-project changes a loooot easier. If you have any sort of microservice or even many-service architecture, having multiple repos for all of them makes cross-service changes such a pain.

[–]prtkp 6 points7 points  (0 children)

On the other hand, getting your changes into a monorepo can be a massive pain if everyone is trying to integrate at the same time which is what my last company was like. Especially when you have 2 main feature releases a year and around 10 hours required for all of the tests to complete in order to allow you to integrate.

My current company uses many micro services so i don't miss that part and building cross service features seems to work ok if we've set up the APIs up front.

[–]JRandomHacker172342 5 points6 points  (5 children)

Urgh, I wish we had a monorepo. I think the clearest explanation as to why monorepo came from an article I read that said "If you don't have a monorepo, you don't have continuous integration - you have, at best, very-frequent-integration".

[–]Ippildip 198 points199 points  (3 children)

The code is actually Word documents of bitmaps of text characters.

[–]NtheLegend 56 points57 points  (1 child)

In 7 languages.

[–]Ippildip 21 points22 points  (0 children)

And all 3 wingdings.

[–]juhotuho10 269 points270 points  (88 children)

560gb of pure code.

[–]1000000thSubscriber 443 points444 points  (8 children)

When you have to debug the intern's work

[–]MtFuzzmore 33 points34 points  (5 children)

Or your offshore guys.

[–]CareerRejection 6 points7 points  (0 children)

Cries in doing the needful.

[–]rpkarma 12 points13 points  (3 children)

Hey now, my Malaysian team produces good code. Because I work so closely with them I’m basically virtually breathing down their necks lol

[–]GarbageTimeline 120 points121 points  (4 children)

Damn I didn't realize Yandere Dev coded Watch Dogs Legion

[–]Philiard 75 points76 points  (1 child)

Can't be true, Watch Dogs Legion actually had a full release.

[–]kz393 14 points15 points  (0 children)

Maybe it was in development for 50 years?

[–]xXPumbaXx 37 points38 points  (1 child)

if(watch_dogs_legion_name == "watch dog legion") { return watch_dogs_legion.name; } else if(watch_dogs_legion_name == "watch dog legiom") { return false; }

[–]themikesem 141 points142 points  (48 children)

Maybe they've never heard of a loop?

[–]rodinj 212 points213 points  (44 children)

Their AI is just a bunch of if else statements

[–]BearlyReddits 148 points149 points  (8 children)

As an indie dev starting out I feel personally attacked

[–]SyleSpawn 37 points38 points  (7 children)

As someone who just codes in some low level VBA at work... smiling nervously and sweating profusely

[–]texanapocalypse33 29 points30 points  (6 children)

VBA

Do you hate yourself?

[–]404_GravitasNotFound 16 points17 points  (3 children)

Hey. Maintaining code that could have kids in college is a valiant effort

[–]texanapocalypse33 11 points12 points  (1 child)

I've never used a more suicidal language than VBA. Like it actively tries to break itself - it's almost sentient

[–]404_GravitasNotFound 5 points6 points  (0 children)

I've had to recreate an application made in VBA. Then in another case I had to make an app that used Windows API calls to control the window of a VB app that had no source... Believe me I know the horrors...

The programmer is not at fault here...

[–]sickvisionz 4 points5 points  (0 children)

It has use in a setting where MS Office is used a lot. I'm not advocating for it over other stuff as like a general use language but it's useful in offices and it's pretty easy to pick up if you've ever done any programming.

[–]jmdg007 58 points59 points  (0 children)

What do you mean that's not how AI is supposed to work

[–]yabboi_ 19 points20 points  (24 children)

How are AIs made then? The only alternative I can come up with is creating different states (classes, maybe) and make the enemy jump among these

Edit: thanks to everyone for explaining

[–][deleted] 103 points104 points  (16 children)

A lot of modern AI is created using either State Machines or Behavior Trees. In some cases, the AI itself isn't even written in code and uses a secondary GUI for actually creating these structures out of modular classes and some sort of graph-based interface. Explaining just the one I'm familiar with (UE4 Behavior Tree) would require several paragraphs, but you can just Google it to get a general sense of what's going on. In that case, it's a branching graph, every node on the graph is an individual class, and every modifier on every node is also an individual class.

No sane modern AAA AI would be written in a single class regardless of approach. State Machines and Behavior Trees use modular (essentially component-based) and extensible structures, with a few high-level management classes interfacing with one another, each of which in turn is handling a few to scores of other object classes.

[–]yabboi_ 16 points17 points  (0 children)

Thanks for explaining, that's exactly the idea I had

[–]jawni 12 points13 points  (14 children)

Genuinely asking because I've only dabbled in coding, but Behavior Trees, at least the basic structure, sounds just like a bunch of different chains of if-elses statements. Can you ELI5 if there more to it than that?

[–][deleted] 18 points19 points  (4 children)

Not really. It is a tree. Traversing (exploring a tree) is it’s own particular algorithm. The if would be at the node, but you can go down the tree (multiple choices) or go back up (one choice) Let say, in FIFA, the current state of the player is: Have, the ball, standing still, in the opponent’s half. From that, he can either run with the ball, pass it or shoot. Selecting the strategy will be based on various conditions. If he decides to shoot, he can go target a particular point of the goal which will be again weighted. If none of it worked, he will go back at the root node and decides to pass which will leads againt to a whole set of decisions, each of it can go down another set and so on.

Doing this with if’s only would be a nightmare, so that’s why they’re using a tree. States change because of actions, actions are decided with decisions tree and decisions are defined for each stages. And how complex these are may makes the AI very realistic

Not a real ELI5 but I hope it’s clear enough

[–]DancesCloseToTheFire 5 points6 points  (2 children)

There's an argument to be made that it's just ifs and jumps, but low-level stuff always boils down to that in the end.

[–]oNodrak 14 points15 points  (0 children)

Behavior trees are just fail-through If Statements stacked in a smart way.

[–]ThisIsMyFifthAcc 6 points7 points  (0 children)

That's more like it.

[–]rodinj 4 points5 points  (0 children)

Definitely easier to understand and more efficient too

[–]Seivy 8 points9 points  (0 children)

"yup, this Intelligence is extremely Artificial"

[–]Mayor_Lewis 7 points8 points  (0 children)

YandereDev got a job at Ubisoft?

[–][deleted] 20 points21 points  (0 children)

"We've heard of loop unwinding, so we just did that"

"You know that compiler generally does that for you right?"

"No you see there was a single case when it didn't so now we do it manually"

[–]Mormoran 53 points54 points  (5 children)

560gb of raw code no assets? Sure, it's just a few dozen billion lines of "if > else" statements

[–]PrintShinji 67 points68 points  (2 children)

Damn didn't know Yandere Simulator was that big.

[–][deleted] 9 points10 points  (1 child)

I wouldn't even be mad if he just finished it back in 2018 like he should have.

[–]TheOldPope 9 points10 points  (0 children)

So 550gb of AI

[–]blackmist 80 points81 points  (13 children)

function IntToStr(x: Integer): string;
begin
  //unrolled for speed
  if x=0 then Exit('0');
  if x=1 then Exit('1');
  if x=2 then Exit('2');
  ...
  if x=2147483646 then Exit('2147483646');
  if x=2147483647 then Exit('2147483647');
end;

[–]pSyChO_aSyLuM 30 points31 points  (0 children)

Does anyone smell burnt toast?

[–]cycle_schumacher 4 points5 points  (0 children)

codegen gone wild

[–]Trankman 11 points12 points  (0 children)

Those uncompressed textures baby!

[–]satoshi_reborn 9 points10 points  (0 children)

Yes definitely

[–]alo81 1069 points1070 points  (84 children)

This seems incredibky interesting from a learning perspective. I wonder how old this source code is?

[–]Spekingur 654 points655 points  (73 children)

Yeah, as a programmer it is super interesting to see how other programmers do things, even if it can be infuriating sometimes :)

[–]svipy 486 points487 points  (20 children)

[–][deleted] 141 points142 points  (4 children)

I really feel for "this didn't port easily... what does it do?"

I need it, so I brought it over. I don't know why

[–]21524518 123 points124 points  (2 children)

It's the classic "I never call this function, but it crashes when I remove it and I don't know why." Bane of my existence.

[–]ShadeofIcarus 51 points52 points  (0 children)

Chances are it is a public function and someone imported the whole class and used it for something it isn't meant for.

[–]AmateurHero 19 points20 points  (0 children)

Ah yes. AOP, but years of properties, functions, and aliases has obfuscated the caller such that it's no longer searchable by normal means.

[–]honeybro 67 points68 points  (1 child)

I have never seen this. utterly soul crushing and anxiety inducing as a programmer. thanks so much lol

[–]n0stalghia 34 points35 points  (0 children)

"Doesn't matter, it shipped"

[–]EricLightscythe 15 points16 points  (0 children)

I knew what this link would be :')

[–]nascentt 25 points26 points  (4 children)

I'd like to see comments for games that had no way of patching via the internet after release.

Coders now consider everything temporary because it can be patched later

[–]MKanes 10 points11 points  (0 children)

TOO BAD!

[–]MrPaineUTI 8 points9 points  (0 children)

Damn I identify with a lot of these. I really need to be more honest with my code comments.

[–]buzzkillington123 104 points105 points  (3 children)

i sense a lot of pain behind that ':)'

[–]-JudeanPeoplesFront- 48 points49 points  (0 children)

There is nothing but pain behind that :)

[–]socialMediaIsLies 26 points27 points  (1 child)

Having dug through production game code in the past, it can be pretty hard to learn straight from it. It would be like trying to learn about running by studying foot tracks in the dirt. You're seeing leftover evidence of the (usually frantic) development process but you're not seeing the big picture or the thought process.

[–]danudey 14 points15 points  (0 children)

Not to mention that for gigantic source repositories, you completely lack any context for anything until you’ve studied it for a long time. It’s like trying to learn about a rainforest ecosystem by learning everything you can about the first tree you saw.

[–]EASK8ER52 954 points955 points  (144 children)

Wonder if this will have any affect on modding. Who knows if anyone dates using the source to create some crazy mods. Who knows what Ubisoft will do to those who download the mods.

[–]DrBoomkin 489 points490 points  (30 children)

You often hear about games being more moddable than others, but if you can compile from source you have 100% moddability. Literally everything can be changed.

It's a shame this isn't Fallout VR or Skyrim VR. Those games have so much potential, and yet the VR port is so shitty, and there is only so much mods can fix. If moders had the source code, they could have made those games into trully amazing VR experiences...

[–]Wild_Marker 221 points222 points  (12 children)

That said, modding from source code probably takes a whole lot more effort than modding "moddable" games with tools.

[–]rathlord 142 points143 points  (8 children)

Not probably- having access to the source is amazing, but unless it’s extremely well documented and clean chances are it will take a long time to do anything major.

[–]mtarascio 61 points62 points  (4 children)

Ubisoft uses distributed development. I think they're across 3 countries or something and that's in house without contractors.

That should mean that's it's pretty modular and well documented.

It may also mean home base holds the keys to the city and no one else knows what the hell is going on.

[–]rathlord 46 points47 points  (0 children)

A lot of studios maintain knowledge based outside the code base, regardless of whether it’s a distributed or local team, which would mean the documentation is (probably) not with the source.

But don’t count on code to be modular and well documented because it’s a distributed team. In a perfect world and all that, but in the field? Nah.

[–]Wild_Marker 17 points18 points  (1 child)

I think it was 9 countries. I used to watch game credits after finishing but Ubisoft was the company that got me to stop. They... they don't seem to ever end.

[–]JanDroid7 34 points35 points  (0 children)

Probably yeah, but with the source code you can make modding tools and make modding easier

[–]debugman18 6 points7 points  (0 children)

Once you get a feel for the code, it's a lot better, since you aren't restricted to the modding sandbox normally allowed to you. Although yes, it will take more work to get there. Potentially less work than an entirely undocumented mod api, though.

[–]Illidan1943 387 points388 points  (102 children)

0 effect on modding unless the modders are suicidal, Ubi would sue them to hell for touching said source code

[–]kakatoru 76 points77 points  (10 children)

How'd they prove it?

[–]Cewkie 67 points68 points  (6 children)

They could reverse engineer the source code, which is easier if you can actually reference it, but if their mods contain parts of the source code they could be sued.

[–]hitosama 38 points39 points  (1 child)

You don't need to use target game's or program's source for modding, the source could just be used to find places to attach hooks and such easier.

[–]Frekavichk 13 points14 points  (1 child)

Who is going to be sued? Noobman69 from the nexus mod forums?

[–]UA_UKNOW_ 16 points17 points  (11 children)

Do any Ubisoft games even support mods? I might just be dumb here but I’ve never seen a modded Ubisoft game in my life.

[–]mom_dropped_me 13 points14 points  (5 children)

iirc odyssey has some mods? mostly just shit like nude textures.

[–]TheProudBrit 9 points10 points  (1 child)

Yeah, alongside some shaders, and... Well. Mods that're more just "gimme 9999 resource pls thnk u."

[–]EASK8ER52 179 points180 points  (55 children)

Well that's the thing about source code. It's source and when you make a mod, you compile it. Take far cry 3. I've modded several textures in that game because someone created a tool to unpack the archives. Of course that's not the case with a lot of their newest games because it's getting harder and harder to unpack their archives and reverse engineer their scripts. But now with the source code, we could do that and compile it all back up and they'll be unaware.

[–]Illidan1943 111 points112 points  (51 children)

And said tool was done by someone that figured out how the packaging system worked without ever getting access to the source code, which made it legal, creating a tool based on the leaked source code is illegal and will follow legal action by Ubisoft

[–]EASK8ER52 80 points81 points  (22 children)

Yes but that's the thing. It's near impossible to tell if a tool was made with source code or not because it's already compiled. So at this point they would have to take the grueling process of decompiling executables (and even then they still might now know wether it was used with their source) for tools or just ban mods all together which I don't know if banning all mods is even possible. I'm sure they could do it but wether they would is another story all together.

[–][deleted] 51 points52 points  (9 children)

Yes but that's the thing. It's near impossible to tell if a tool was made with source code or not because it's already compiled.

Well, there are 3 situations there, not 2:

  • completely reverse-engineered from scratch
  • looking at code to know how it works, writing new code from scratch
  • writing your code using parts from the original one

In last case you definitely can. If you compile the source code and compile the clone and the compiled executable only have trivial differences (say names of the functions), that's easy to prove

In second case it just requires a ton of discipline to see it done and then write it differently, as some problems solutions are straightforward enough that few programmers might actually just write same code when given the task.

[–]Forty-Bot 10 points11 points  (4 children)

There's a fourth case

  • One person looks at the code to know how it works then documents it very thoroughly and a different person implements their spec

[–]itchylol742 24 points25 points  (2 children)

Just upload mods from a throwaway account using a VPN

[–]klonkish 17 points18 points  (0 children)

Make sure you're using incognito and behind at least 7 proxies

[–][deleted] 21 points22 points  (3 children)

lmao that's never stopped modders before.

[–]salgat 3 points4 points  (0 children)

I'm cringing reading this. The vast majority of modders are anonymous and just doing it for fun, with no financial backing and nothing to sue. At worst case they get a cease and desist, which they can easily ignore in most cases.

[–]teerre 527 points528 points  (39 children)

The hackers probably released it because Ubisoft judged that it didn't matter. It seems like a reasonable judgement. Even thinking of a highly harmful and technical player, security through obscurity was never a good idea, so even if malicious players can find exploits in this source code it shouldn't affect newer releases.

[–]TheyCallMeMrMaybe 248 points249 points  (26 children)

Hell, if anything, if they leave the modding community alone with this source code, modders might end up fixing the game so Ubi doesn't have to.

[–]ConspicuousPineapple 123 points124 points  (19 children)

If they could start by fixing that insane CPU bottleneck, that would be great.

[–]JohnConquest 10 points11 points  (1 child)

It absolutely didn't matter, this originally leaked a week ago and no news outlet picked it up. Just now is there coverage

[–]Thievian 381 points382 points  (59 children)

Damn that's the real size for uncompressed games? Also I guess Ubi neber paid the hackers...

[–]Opsatcat 91 points92 points  (9 children)

Uncompressed game is 2tb. Original art assets can be hefty.

[–]root88 50 points51 points  (4 children)

Not only is it uncompressed, it's not compiled. The code is there in human readable format. When they compile it, it is in a machine readable format. It's way more efficient and WAY smaller. They could have a ton of debugging tools and unused assets in there too. They also probably have code to support every platform in there. Only the platform specific stuff actually makes it into the build for each specific one.

[–]StickiStickman 34 points35 points  (1 child)

You say that like the code even makes 1% of this. That alone would be an INSANE amount of code. Like, multiple times the Linux source.

[–][deleted] 26 points27 points  (0 children)

I wonder how usable this is. As far as I know, most companies have servers and stuff set up for development and various other tools that the engine connects to.

[–]enderandrew42 12 points13 points  (6 children)

  1. Does this source code include code for integrating with UPlay that might lead to exploits?
  2. Does this source code include code for Denuvo or any licensed DRM that might lead to better cracks for said DRM?

[–]KoniGTA 70 points71 points  (4 children)

As an Ubisoft intern......guys I think I pushed the code in the wrong repo....

PS:if someone is so thick headed to believe that, yes I'm an intern but even I'm not stupid enough to do this.

[–]Termight 35 points36 points  (1 child)

Imagine pushing 560GB and not noticing. Phat pipes indeed.

[–]dilzo999 7 points8 points  (0 children)

They obviously don't have source control. The guys run around with hard drives.

[–]Surfacelfx 18 points19 points  (1 child)

Even jokingly, you shouldn't say things like that.

You really can get in trouble mate.

[–]Mishakat 22 points23 points  (7 children)

What does this mean is it bad?

[–]MagwitchOo 66 points67 points  (3 children)

It doesn't affect the end-user so it shouldn't affect sales, but a leak of this size is rare, especially for a brand new game.

It might help some modders but due to copyright mods using the original source code might get removed.

When you install a game you don't have access to the source code, just a bunch of compiled binaries that are basically unintelligible for humans. Releasing source code is especially interesting because:

a) you get to see how the sausage is made

b) you could hypothetically tinker around and essentially mod a custom version of the game from the source

[–]Kreygasm2233 94 points95 points  (48 children)

Ubisoft really can't catch a break lately huh. This probably means it will be cracked very soon.

They really need a hit with AC Valhalla

[–]Tornada5786 78 points79 points  (1 child)

This probably means it will be cracked very soon.

If this is even the code for the release version of the game

[–]Kaelnaar 33 points34 points  (4 children)

This probably means it will be cracked very soon.

I doubt it, maybe pirates will be able recompile the game (if the leak includes all the assets and the like), but even then the source is probably of an earlier build than the release version.

As far as I know, the protection is implemented by Denuvo Software Solutions themselves, and there shouldn't be any code in the leak related to Denuvo.

[–]CaptainCupcakez 10 points11 points  (1 child)

If there's no code related to Denuvo then the work is done for them.

Denuvo takes an executable that's ready to ship and adds their protection from there. If you somehow had a final build from before it was given to Denuvo, then you effectively have a DRM free copy.

(Disclaimer: this is only based of what I have read about Denuvo, I am by no means an expert. They could have easily changed their process)

[–]Kaelnaar 5 points6 points  (0 children)

Denuvo takes an executable that's ready to ship and adds their protection from there. If you somehow had a final build from before it was given to Denuvo, then you effectively have a DRM free copy.

As I've mentioned, if a program can be compiled from the leak, sure - it'll be a drm free version (unless, Denuvo have changed their process).

However personally, I doubt that the final build got leaked. And if that is the case, then it's not as simple as replacing the release version's executable with the one that you'll get by compiling the code from the leak. As far as my limited experience tells me, it probably won't work.

(Disclaimer: there's, most likely, a lot of more experienced programmers reading this thread. I only occasionally dabble with C# as a hobby. So, if I'm totally wrong or said something really dumb, I sincerely apologize in advance)

[–]Shadyfurball 14 points15 points  (1 child)

Hacking? Leaked? Sounds like marketing for this game!

[–]CocoDaPuf 3 points4 points  (0 children)

Or just super ironic.

[–]Chancoop 4 points5 points  (1 child)

All I think of is current open-sourced projects around games from the 90s that are still going strong. It would be so cool if "OpenWD:L" is the "OpenTTD" of 2045.

[–]nmkd 4 points5 points  (0 children)

I doubt anyone in 2045 really wants to play a mediocre 2020 Ubisoft game.

[–]HookshotTDM 23 points24 points  (3 children)

TIL that file sizes can be described as weight. Such a small (and ultimately unimportant) detail I didn't know but I find very interesting for some strange reason. The brain My brain is weird.

[–]Wild_Marker 16 points17 points  (0 children)

That happens in a bunch of languages. In spanish we often ask how much a file weights, even if windows still lists it as "size".

[–]door_of_doom 2 points3 points  (0 children)

It isn't a very common use, but most people would grasp it's meaning, yes.

For example, I wouldn't expect more mainstream media to use that definition. I would expect them to say that it simple "Is" around 560GB, or that it "takes up" 560GB, or something to that effect.