`Case 2:21-cv-09552-CAS-SK Document1-1 Filed 12/09/21 Page1iof17 Page ID#:7
`
`EXHIBIT 1
`EXHIBIT 1
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 2 of 17 Page ID #:8
`
`
`
`quinn emanuel trial lawyers | los angeles
`865 South Figueroa Street, 10th Floor, Los Angeles, California 90017-2543 | TEL (213) 443-3000 FAX (213) 443-3100
`
`
`
`
`
`
`WRITER'S DIRECT DIAL NO.
`(213) 443-3675
`
`WRITER'S EMAIL ADDRESS
`robertschwartz@quinnemanuel.com
`
`December 1, 2021
`
`VIA EMAIL
`
`Dawn Dempsey
`Valve Corporation
`10400 NE 4th Street, Suite 1400
`Bellevue, WA 98004
`(425) 889-9642
`dmca@valvesoftware.com
`
` Re:
`
`Dear Ms. Dempsey,
`
`Notice of Claimed Infringement re: Myth of Empires
`
`We represent Wildcard Properties LLC d/b/a Studio Wildcard and Snail Games USA Inc.
`(collectively “SWC”), the developer and publisher (respectively) of the video game Ark:
`Survival Evolved.
`
`This letter constitutes a “notice of claimed infringement” to Valve Corporation pursuant to
`the Digital Millennium Copyright Act (“DMCA”), 17 U.S.C. section 512(c)(3), better
`known as a DMCA “takedown” notice.
`
`Valve is offering for download, on its Steam Platform, a videogame titled Myth of Empires.
`According to the Valve website page for the game, the developer is a company called Angela
`Game. Based on our investigation, the game appears to have been built with trade secret source
`code copied and stolen from SWC. Valve’s distribution of the video game Myth of Empires is
`thus facilitating trade secret misappropriation and copyright infringement.
`
`SWC first published Ark: Survival Evolved on June 2, 2015, for the Windows platform on Steam,
`and subsequently by August 29, 2017 for Mac OS, Xbox One, and PlayStation 4 platforms. In
`2018, SWC published additional versions of Ark: Survival Evolved for the Nintendo Switch and
`Android iOS. The source code for Ark: Survival Evolved is protected by U.S. copyright law
`pursuant to Copyright Registration Nos. TX0008844750, TX0008844750, and TX0008850190.
`The source code was also subject to reasonable measures to maintain its secrecy, including
`
`
`
`
`
`quinn emanuel urquhart & sullivan, llp
`ATLANTA | AUSTIN | BOSTON | BRUSSELS | CHICAGO | HAMBURG | HONG KONG | HOUSTON | LONDON | LOS ANGELES | MANNHEIM | MIAMI |
`MUNICH | NEUILLY-LA DEFENSE | NEW YORK | PARIS | PERTH | SALT LAKE CITY | SAN FRANCISCO | SEATTLE | SHANGHAI | SILICON VALLEY |
`STUTTGART | SYDNEY | TOKYO | WASHINGTON, DC | ZURICH
`
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 3 of 17 Page ID #:9
`
`Dawn Dempsey – Valve Corporation
`December 1, 2021 – Page 2
`
`
`through employment contracts that prohibited SWC’s employees from using the code for any
`purpose other than assigned work and from disclosing the code to third parties.
`
`DMCA “TAKEDOWN” NOTICE
`17 U.S.C. § 512(C)(3)
`
`
`
`
`In 2020, at least one employee of SWC's parent corporation (Snail Games China) who previously
`had access to the source code for Ark: Survival Evolved left to form Angela Game which, as
`noted above, is the developer of Myth of Empires. Accordingly, when Myth of Empires was
`released on November 18, 2021, SWC became understandably concerned because of large-scale
`similarities between Ark: Survival Evolved and Myth of Empires. This similarity extended to
`features that could not be explained through independent development, such as the use of
`identical gameplay mechanics not found in other games.
`
`To investigate, SWC compared code “headers” found in the executable file for Myth of Empires
`to the code used in Ark: Survival Evolved. A preliminary analysis is attached as Exhibit A.
`SWC’s analysis confirms that its concerns are well-founded: Myth of Empires was built using
`source code copied and stolen from SWC. The analysis reveals hundreds of matching “class,”
`“variable,” and “function” names.
`
`Given the nature and extent of the copying, this cannot be a coincidence. For example, both
`games use hundreds of arbitrary yet identical, or minimally renamed, variable names such as
`“bOnlyUseExpireTimeMultipliersIfActivated” and “SpawnInventoryOnDestructionLifeSpan.”
`It is simply unbelievable that so many unnecessary similarities in variable, class, and function
`names can be explained by “random chance.” This is a textbook case of copyright infringement
`and trade secret misappropriation.
`
`Please be advised that if Valve does not take down Myth of Empires, then Valve may be liable
`for both indirect copyright infringement and trade secret misappropriation. See, e.g. Graduation
`Sols. LLC v. Luya Enter. Inc., 2020 WL 9936697, at *6 (C.D. Cal. May 5, 2020) (denying
`motion to dismiss and allowing lawsuit to proceed where “There is no question that Luya
`committed intentional acts in selling graduation apparel via its Websites and that those sales of
`products using Plaintiff's allegedly misappropriated trade secrets and infringed copyright
`constitute the basis of Plaintiff’s claims.”); see also A&M Recs., Inc. v. Napster, Inc., 239 F.3d
`1004, 1022 (9th Cir. 2001) (“In the context of copyright law, vicarious liability extends beyond
`an employer/employee relationship to cases in which a defendant has the right and ability to
`supervise the infringing activity and also has a direct financial interest in such activities.)
`(internal quotation omitted).
`
`Note also that the DMCA offers a defense, where available, only to copyright claims. It does not
`insulate anyone against claims for trade secret misappropriation. This is not SWC’s preferred
`course of action. But we would be remiss if we did not mention it.
`
`Accordingly, Studio Wildcard and Snail Games USA Inc. hereby formally request that Valve
`take down all versions of the game titled Myth of Empires from Valve’s Steam Platform because
`Myth of Empires is an unauthorized derivative work built on source code unlawfully copied and
`misappropriated from SWC’s Ark: Survival Evolved.
`
`
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 4 of 17 Page ID #:10
`
`Dawn Dempsey – Valve Corporation
`December 1, 2021 – Page 3
`
`
`Additionally, and pursuant to the DMCA (17 U.S.C. § 512(c)(3)), Studio Wildcard and Snail
`Games USA Inc. hereby state (or re-state) the following:
`
`DMCA “TAKEDOWN” NOTICE
`17 U.S.C. § 512(C)(3)
`
`
`
`
`1. Studio Wildcard and Snail Games USA Inc. have authorized me to submit this notice of
`claimed infringement.
`
`2. Studio Wildcard and Snail Games USA Inc. own registered copyrights in their video
`game Ark: Survival Evolved, which has been registered with the copyright office and is
`covered by copyright registration numbers TX0008844750, TX0008844750, and
`TX0008850190. Ark: Survival Evolved may be found on Valve’s Steam Platform at this
`URL: https://store.steampowered.com/app/346110/ARK_Survival_Evolved/.
`
`3. My clients’ copyrights in Ark: Survival Evolved are being infringed by the video game
`Myth of Empires, which may be found on Valve’s Steam Platform at this URL:
`https://store.steampowered.com/app/1371580/Myth_of_Empires/.
`
`4. Studio Wildcard and Snail Games USA Inc. may be contacted through me, and I am
`available at the following address, phone number, and email address:
`
`Robert M. Schwartz
`Quinn Emanuel Urquhart & Sullivan LLP
`865 South Figueroa Street, 10th Floor
`Los Angeles, California 90017
`(213) 443-3675
`robertschwartz@quinnemanuel.com
`
`5. Studio Wildcard and Snail Games USA Inc. have a good faith belief that Myth of Empires
`is infringing Studio Wildcard and Snail Games USA Inc.’s copyrights in Ark: Survival
`Evolved. Studio Wildcard and Snail Games USA Inc. have a good faith belief that Myth
`of Empires was built by: (1) stealing the Ark: Survival Evolved source code and (2) using
`the stolen source code as the gameplay foundation for Myth of Empires. Key employees
`of the developer of Myth of Empires worked at the Chinese parent of Snail Games USA
`Inc. and at least one of them had credentials that enabled them to access the Ark: Survival
`Evolved source code.
`
`I state, under penalty of perjury, that the information contained in this notice is accurate, and that
`I am authorized to act on behalf of Studio Wildcard and Snail Games USA Inc.
`
`The foregoing is not a complete statement of the facts relevant or the law governing this matter.
`All of SWC’s rights, claims, and remedies are hereby reserved.
`
`
`
`Robert M. Schwartz
`
`
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 5 of 17 Page ID #:11
`
`
`
`
`
`
`Exhibit A
`
`
`
`
`
`
`
`‘ARK’ / ‘ATLAS’ game codebase found in ‘Myth of Empires’
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 6 of 17 Page ID #:12
`
`V1 (November 26, 2021): This is a preliminary analysis, only comprised of an initial sampling of a handful of reflected game headers. It does not yet
`include:
`
`- The remainder of the game headers.
`- Any unreflected header code (would require PDB).
`- Any of the internal CPP source code (would require source code).
`- Any engine code (which was also substantially modified by Wildcard in our codebase).
`
`Full analysis of the rest of the code will yield far more hits.
`
`-------------------
`Steps to reproduce/generate files:
`
`Method 1 (for Atlas or ARK, recommended):
`1. Load AtlasGame.exe (Atlas) or ShooterGame.exe (ARK) in your disassembler of choice.
`2. Load debug symbols from AtlasGame.pdb (Atlas) or ShooterGame.pdb (ARK)
`3. Search through classes/local types/functions/etc
`
`Method 2 (use UE4’s reflection system to extract all data)
`1. Clone https://github.com/polivilas/UnrealEngineSDKGenerator
`2. Generate new project files for Atlas or ARK, using ARK as project template
`3. Change GlobalObjects to type FChunkedFixedUObjectArray (information on this class can be obtained from https://github.com/epicgames/unrealengine).
`4. Change GlobalNames to type TNameEntryArray
`5. Point GlobalObjects to address of GUObjectArray in Atlas or ARK (use debug symbols to find this)
`6. Point GlobalNames to return value of FName::GetNames (use debug symbols to find this static function)
`
`
`
`7. Fix all structs/classes in EngineClasses.cpp to match Atlas’s or ARK’s structs/classes (use debug symbols to verify).
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 7 of 17 Page ID #:13
`8.
`Inject compiled DLL into game, and dump all classes/variables/functions/etc.
`
`Method 3 (for Myth of Empires only - use UE4’s reflection system to extract all data, recommended)
`1. Clone https://github.com/guttir14/UnrealDumper-4.25
`2. Setup game to dump as any UE4.26 game, or use patterns:
`{"\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\xC6\x05\x00\x00\x00\x00\x01\x0F\x10\x03\x4C\x8D\x44\x24\x20\x48\x8B\xC8", 30},
`{"\x48\x8B\x05\x00\x00\x00\x00\x48\x8B\x0C\xC8\x48\x8D\x04\xD1\xEB", 16},
`3. Run game without battleye
`4. Run dumper and dump all classes/variables/functions/etc.
`---------------
`
`PRELIMINARY MATCHES:
`
`
`
`i
`
`ieC|
`otereelcllonlceedeleeeSe!
`eeslGhLAfe
`
`i}ee
`
`iosses
`
`aeeeee|
`
`fipeaeniGase 2.21CV-09552-CASSk Document 1-1) Filed 12/09/21Page.8of17__Page ID #:14
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 8 of 17 Page ID #:14
`bool
`
`
`eanemona
`bIsPreviewStructure : 1;
`eaeee)
`Se eeeetaeeeeeores
`
`aaaiateleeEa]
`Oaeee heepele)|ee
`
` PreviewMaterial;
`PreviewCreateMaterial;
`closs UMaterialInterface*
`I
`
`bool
`
`
`bForcePlacingOnGround : 1;
`®@ bForceCreateOnGround : 1;
`® MaxCreateRange;
`PlacementMaxRange;
`float
`
`ae ee ar eae ay
`TArray<struct FPrimal$StructureSnapPoint>
`SnapPoints;
`BindPoints;
`ia
`
`yeaTeelela)eeslee|oe ane int32— BindType;
`
`
`amFan tan)i
`PARTeriapeel
`“mE
`£teuct F¥ector
`CreateHitLocationOffset;
`amFaneraa
`
`PlacementEncroachmentCheckOffset;
`-— =
`Corie
`-
`CreateCheckBoxOtfset;
`amFan tan)i
`PlacementTraceScale;
`+3 na
`peoaseoc
`SomFag eea
`
`PlacementRotOffset;
`
`= [apapeldeedemety
`float
`
`ateemmaTWlgewe=dgieleroyelesRespare]tae ed ®MaxHeightToWor1dGround;
`
`bool
`bIsFoundation : 1;
`bFoundation : 1;
`
`bool
`bIsWall
`: 1;
`bWall
`: 1;
`fataleB
`
`bIsFloor : 1;
`bFloor : 1;
`
`bool
`bOnlyFoundationIfSnappedToFoundation : SEOMRmelatitpemRely litaglepagteiereMe)gre]ayelehaehe)| er1;
`
`
`
`class UtClass*
`AllowReplacementByStructureClassType;
`CanReplaceByStructuretlass;
`class UClass*
`
`PreventReplacementOfStructureClassType; rat = be reer as
`
`
`
`PreventReplaceByStructureClass;
`bool
`bReturnDamageOnHitFromPawn : 1; Sottamnhllge--- sintnte
`
`
`
`re)
`prnnnTOPPnO
`Panels
`ReturnDamageImpulse>SSStret rnDamageImpulse;
`panels
`class UClass*
`
`ReturnDamageType;
`ReturnDamageType;
`
`bool
`bRequiresPlacingOnWall
`aeee)
`: 1;
`bool
`bCanDemolish : 1;
`bCanBebDemolished : 1;
`ra
`rns
`
`panels
`PlacementFloorCheckStartOffsetz;
`CheckFloorzUp;
`
`panels
`PlacementFloorCheckEndOffsetz;
`heckF loorZDown;
`
`class UClass*
`
`
`CeEL)amd
`eeUtael
`=
`amFaneraa
`
`
`
`eeamel eeepeeetd a araoerorae SeverWaaMeleeneOgta
`
`struct FRotator
`afeTeUfmdLea
`SpawnEmitterRotationOffset ;
`
`
`class USoundBase*
`a=TememsTe ee
`~~ SpawnSound1D;
`eal
`
`float
`A
`ea Berets
`aiteeseg)otedt|eee
`heckEnemyFoundationRadius;
`bool
`fa)eeteedCadee +5
`bCheckNearByEnemyFoundation : 1;
`bool
`
`bForcePreventEnemyStructuresNearby : 1;
`pee
`Prien
`bPreventNearByEnemyFoundation : 1;
`fataleB
`IF
`LAL
`*pRealFoundation : 1;
`bOnlyAllowPlacementInWater : 1;
`amFaneraa
`Oem eAatgeeoota
`=.
`eee SSer
`heckWaterLocationOffset;
`float
`
`ObagiewesTeeBAceedeo d ageWMeales
`
`
`panels
`PreventPlacingNearEnemyRadius;
`iredegeeTe
`struct FName
`
`StructureTypelag;
`1aaanadBa
`Oeaeeea
`IgnoreReplacementCheckOfStructureClassTypes;
`IgnorePreventStructureClasses;
`
`bool
`bAttachToStaticMeshSocket
`: 1;
`lowAttachToStaticMeshSocket
`
`aeFoe Cod
`
`Piaafaeaeee dEd
`oe
`iaieTotehaaeTete oaoa
`panels
`DemolishGiveltemCraftingResourcePercentage;
`PRAeeeeeed eee
`
`bool
`bCanBeRepaired : 1;
`anRepair
`: 1;
`bool
`bIsRepairing : 1;
`a5
`carer
`Repairing : 1;
`Cela]ealaod
`
`MextAllowRepairTime;
`=
`“rinitirtae
`eameatersaed
`Pereeanerr)f pSiewla
`Panels
`toatewdeleLeneery £
`panels
`aretelakae Seenenn(UsSCSST
`
`class UtClass*
`panels
`NoTeam4reaDecayInterval;
`MoClaimFlagDecayDestructionPeriod;
`52
`PgeertE
`float
`eter0teed ee
`NoClaimFlagDecayDestructionPeriodMultiplier;
`53
`
`ee)
`Panels
`DecayDestructionPeriod;
`Bearereared
`
`panels
`tereLgeaeTaelaeodae
`Team4reaDecayHPPercent;
`
`eielae
`OwnerName ;
`class FString
`
`
`class FString
`ce,remytNeWa|Lied
`eae
`eT leeea
`
`amaaae0 = EETDS
`
`Seae]
`uint32_t
`
`oaeee
`ayceeeo
`1
`BindedStructuresByID;
`OraeeeaeoD
`LinkedStructures;
`aletee
`
`StructuresOnFloor;
`StructuresPlacedOnFloor;
`TArray<closs APrimalStructure*>
`elass APrimalStructure*
` PlacedOnFloorStructure;
`
`reateOnFloorStructure;
`yeeaCeghCea—— a]
`cr
`bool
`Snag120-010!0g)311) ee
`
`: 1;
`
`iv)
`
`eeeate)
`
`
`
`struct FText
`
`se.2:21-cv-09552-CAS-SK Document 1-1 Filed |12s09/AeeseesRage |D.#:15
`Wea TLAS
`Cc
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 9 of 17 Page ID #:15
`Catbeag f=|ea
`/ UPrimalRichTextBlock
`similar vari
`
`:
`FF
`= Text;
`aa
`treyBae ae eeaE
`Justification;
`Justification;
`asaetyee
`bool
`
`eaeecetUPLeLar]
`
`cease
`lar)=aae
`cos
`[=]00=a
`
`struct FMargin thasSSet=Le00
`
`Seer agaeeOOeeeUNC00tee)ae|
`
`
`iraMsMTo> etegaPo0ee vee] Po)Dg_ceceeaeTaoal ale]aoeoe ee] do)Pe)Dt
`
`void SetString(const class FString& inString);SaEEEEEEEEEEEEEEEEEEIEN—fnsaeiceeeeeATs a
`
`[J wanna nnn nnn nnnnnncee
`
`ATLAS(aSS similar variables
`
`eaeivth of Fonires
`
`f/f USGInventoryComponent
`
`TArray<class UClass*>
`DefaultInventoryItems;
`PTPamIerrSe eSSeSt
`
`ae|
`falt-peel
`a ryarane al re
`TaArray<class UClass*>
`DefaultEquippeditems;
`Secere eeeeee
`* DefaultEquippeditems;
`TArray<class UClass*>
`
`
`
`Oeeaeeaa Pia0—ceroc|ecoceee oees|eReeo
`TArray<class UPrimalItem*>
`CraftingItems;
`fe)aeae
`MaxItemCraftQueveEntriespagteem e-Mailoe
`cia
`
`TArray<struct FItemCraftQueveEntry> ItemCraftQueveEntries;#41_35\-—_TArray<struct—FitemtraftQueveintry>—#£—ItemCraftQueueEntries;
`
`TArray<class UClass*> CoregmreteCemelOaeeWl eeOm)|1iLeeaeeeeeeMQreleMeeelpe
`TArray<struct FItemMultiplier>
`ItemSpoilingTimeMultipliers;
`eeeee eee eere aae
`ARseepe
`
`TArray<class UPrimalItem*> BDaSeOyetLLLa
`aayeeeeeee
`EquippedItems ;
`CSeram
`quipItems;
`
`
`
`eeeeeeeed ItexsLots$@3-£_0-7}A21329—Fatrraytcloass56ten*>———_—_———_®ShortCutItems;
`bInital : 1;
`Peareg i bTnitializedMe : 1;
`Pee=aSte(PCR=ecFy
`
`|similar variables
`
`enee rene
`
`Ssossoosssssesossseossos5== aaa
`
`
`
`ns
`
`TWeakObjectPtr<class AShooterWeapon>
`AssociatedWeapon;7REaS Snipa UPel
`
`aaos
`H
`TWeakObjectPtr<class UPrimalInventoryComponent>
`Peeeeoeaeee
`BaseCraftingResourceRequirements;
`Eas
`:
`Ferotet
`Peet ss
`class UClass*
`2)iga
`ExpiredItem;
`eee
`SpoilingTime;
`ExpireTime;
`class UClass*
`
`BrokenGiveltemClass;
`BrokenGivelItemClass;
`OSetsyeeePate ee)eld
`MyEquipmentType;
`SSeSRSee
`aah
`MaxBlueprintCrafts:
`i ==
`romeelae
`unsigned char
`bResourcePreventGivingFromDemolition : 1;
`PreventGivingFromDemolish : 1;
`bCanBuildStructures : 1;
`bCanCreateStructure : 1;
`Peasele eae
`
`caepeWATSogeegmaaedF-20081
`
`Paaritaeae PSUacer0a6CeFSUea
`doubLe
`
`glOGGela
`unsigned char
`bDestroyBrokenItem : 1;
`epee es) 14-11)ce)
`SlotiIndexaAla
`cia
`
`caere
`aCea
`Sesaa ee oe
`ItemQuality;
`bBPCanUse : 1;boa— __esbhtanlse : 1;
`Paaritaeae
`
`unsigned char PaOeBOe5|Art#100-11100!|F)--1—
`unsigned char
`PsyCOMe)tse)Oetmeok9=17-10TU=] ea=1-9
`
`eaeele elsa UCTMOLTae]oeSOeed“101-1—00at)»ae
`
`
`
`
`TArray<class UClass*>;————____59__TarraytciossCraftingRequiresInventoryComponent USGiten®> *Craftinstructureltem;
`
`cease
`UeRer=madeDedre
`
`OSseeeee a6eS©|=U2d
`
`// Senn
`/¥ UPrimalItem similar variables
`
`faith of Empires
`/ USGItem 5imilar variables
`
`
`
`Ce]iere [eee
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 10 of 17 Page ID #:16
`Uti RM - leeeeeeMT
`’ ABoseCharaczer, ASGAiCharactes similar variables
`
`atone
`
`moa
`AActor
`
`WaT=a
`DefaultAngularDamping;
`DefaultLinearDamping;
`DefaultLinearDamping;
`Late] gokart te |eth
`CorpseDraggedDecayRate;
`CorpseDissolveTime;
`CorpseDestructionTime;
`CorpseDissolveFinishTime;
`CorpseFadeAwayTime ;
`ealeee
`sOet
`Setteaeee
`ceeeeeeLe
`ServerSeatedViewRotationyYaw;
`cle eter BeeeeRe
`ControlRotationInterpSpeed;
`ampate pee legect
`aaeTee
`Nae Te eee
`—_-
`re ee ee
`Anime
`=
`ceaEs
`Neeee
`aeeee
`orthed
`Peng Se che ekajis Led ieee = tall
`ee a)
`a — cs
`AnimalBoneDamageAdjusters ;
`etersP rurey totsmd od a
`FBoneDamageAdjuster>
`orthed
`| Pattie By
`i
`G@Llilei +
`Carriedtharacter;
`Carriedtharacter;
`Dm
`ee a)
`TWeakObjectPtr<
`PlTash tTCone
`re ae tad
`tesaegy
`Bas
`See P
`-
`mms
`ae
`RiderCharacter;
`MountCharacter;
`TWeakObjectPtr<
`PlTash tTCone
`aea tetas)ereg
`HardLimitwWildDinoToVolume;
`TWeakObjectPtr<
`ANPCZoneVolume>
`BindNpcSpawnVolLume ;
`
`bAllowTargetingCorpses:1; bAllowTagetCorpses
`me ete 1;
`eee 1;
`bIsImmobilized
`bImmobilized
`bIsAmphibious
`bIsAmphibious
`als
`bForceNoRotation
`bForbidRotation
`TamedMaxFollowDistance;
`MaxFollowDistance;
`MoveAroundBlockadePoint ;
`MovingAroundBlockadePoint ;
`Lea
`LastMoveAroundBlockadedActor;
`LastMovingAroundBlockadeActor;
`
`bRiderDontRequireSaddle:1; bRiderRequireSaddle 1;
`
`ReplicatedHealth;
`ReplicatedHP;
`RiderMaxSpeedModifier ;
`ExtraMaxSpeedModifier ;
`eae[pataeratebscy eleaere aae
`ExtraMaxSpeedModifier ;
`bIsMoveAroundBlockade
`bIgnoreMoveAroundBlockade
`at 1;
`bForbidMove
`ai
`
`bIsBeingDragged bIsDragged:1;1;
`
`
`bIsSleeping:1; bIsSleeping:1;
`bPreventImmobilization
`bPreventImmobilize
`bRiderDontRequireSaddle
`bRiderRequireSaddle
`oDEtettcrate
`1;
`bUseCharacterSex
`10aa ee
`ieee
`DefaultWeapon;
`DefaultWeapon;
`elimaeletaleae
`uocce..1-2 eo
`MountMontage ;
`OPTalelphea
`Lert) rater) eri
`Pea) ae Saree eeeeer ae
`taeTeeaseele
`ablaelae
`DeathExploitComponent ;
`BabyAge;
`AnimalAge;
`BabyScale;
`AnimalBabyScale;
`[E-Panhea T- 1)4a
`LastMakeDamageTime;
`NextMateRemainTime;
`eatweeaeathe gaa
`saa)let
`
`eae)let
`
`= a
`
`ai
`1
`
`ee ed
`
`an
`1;
`
`ai
`
`maton
`
`i
`
`1;
`
`
`
`ATLAS
`
` cy-09552-CAS-SK Document 1-1 Filed 12/09/3)--Paut-L1oePageID#47.
`Acareseee
`7
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 11 of 17 Page ID #:17
`
`bool
`bHasWater boo——FebHasWater+ 13 22-00 ese 68 =: 1;
`
`
`
`
`class UMaterialInterface*
`Eelhealeiee
`sl
`ra es
`peelLmetaobpados
`feces theese|ee
`Deatl aeaEEEEaESaaeLeeeeoieeeeLeee ———— NolaterReplaceMaterial;
`int
`WaterMaterialIndex;
`: iReplaceMaterialiIndex;
`
`
`
`void OnRepHasWater(bool bNewHasWater);
`
`ee eres
`
`ATLAS
`//| UUI_PreviewWwidget| similar variables
`
`void OnRepHasWater(bool bPreviousHasWater) ;
`
`
`
`faith of Empires
`Aesetrater| ee DaoRe
`
`float
`struct FRotator
`struct FRotator
`amanee a
`
` eea he hn nna error
`
`class USceneComponent* classUSceneComponentightladEte : *——_————_ MyDoorRootComponent;
`
`
`
`
`
`peeeiela
`RotationSpeed; Oe ———_® RotationSpeed ;
`class USoundCue*
`
`DoorOpenSound; a ———®OpenSoundID;
`class USoundCue*
`DoorCloseSound;SeaeeeemeoeTe =CloseSoundID;
`bool
`bInvertOpenCloseDirection : 1; ———-—-183——bool
`—bOpenCloseDirection : 1;
`bool
`Oe AO eeeEEEEnnnIIn==Iicise:Bun“iiiGe—————bIsLocked : 1;
`
`
`eae
`DoorOpenState;
`——*DoorSwitchstate;
`fataral R
`bRotatePitch : 1;
`Secca| ie
`fataral R
`bRotateRoll
`: 1;
`——— hRotateByRoll
`: 1;
`bool
`teeeers
`————bRotateByYaw : 1;
`bool
`
`CMMs OeWear)0)9)eerad110106C0LarsLene|| :| ‘i
`bool
`oNtetera0eleaes) eee ——*bDoubleDoor
`: 1;
`struct FRotator
`SecondDoorDefaultRot ;
`DoubleDoorDefaultRotation;
`bool
`bSupportsPinLocking : 1; —————————_—_112
`boot = bCanSetPassword : 1;
`
`its) ares CurrentPinCode;2——_____1_413pi39 CurrentPas swords
`bool
`[oA| AaaaeOr mmr ome 0.09209(100010(+e a
`
`rrasje
`ele
`shRotation;
`eesaee
`OrbitRotation;
`CO)siateal
`PreviewScale;
`iaeee
`
`Paella bmad|=erete==]=|Poa]at
`aera
`BrakeSpeed;
`rer
`BrakeSpeed;
`
`
`eee RotationSpeed ;———H_______885—_fLeat—nn ceete)ate
`eTa eeTy
`struct FRotator
`AutoRotator ;
`AutoRotator;
`aeeea
`class UWorld*
`GameWorl1d;
`GameWorld;
`class UWorld*
`PreviewWorld;
`eee|Seae es
`
`TArray<class USceneComponent*> awele|regeesee BeLCG0G)6bood ReMele
`aaaonae anea
`RotationVelocity ;————_______- i ———® RotationVelocity;
`class USceneCaptureComponent2D* aaeenn erm omarsgcheSel)s18)trnS——*CaptureComponent ;
`
`
`
`er error
`
`ee a nn ho nn ene ener rreee
`
`MLAS
`//|APrimalStructureDoor |Similar variables
`
`fea yth of Empires
`
`i ASGStructureDoor| similar variables
`
`
`
`void NetGotoDoorState(int#_t DoorState);
`void OnRepDoorOpenState(inta_t PrevDoorOpenState);
`void NetGotoDoorState(int&_t DoorState);
`
`——1t6 void SwitchDoorState(unsigned char DoorState);
`SS ceceeee gsalet
`— 148void NetSwitchDoorState(unstgned char DoorState);
`
`
`
`USoundBase
`USoundBase
`
`a
`
`Is
`
`APrimalStructureBed |similar variables
`
`ASGStructureBed similar v
`
`
`bDestroyAfterRespawnUse:1; bReSpawnDestroy=:1;
`hog ats
`ity er-Temeleehese)0
`PlayerSpawnLocOffset;
`FRotator
`RespawnRotOffset;
`PlayerSpawnRotOffset;
`BedName;
`BedName;
`
`ladeeealeeTe
`
`ASGStructuretTurret
`
`APrimalStructureItemContainer |similar varia
`etces eel ao eed
`ncainer similar
`variables
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 12 of 17 Page ID #:18
`bOnlyUseSpoilingMultipliersIfActivated bOnlyUseExpireTimeMultipliersIfActivated:1;
`
`bAutoActivatewWhenFueled
`iF
`jayaats)Von AED =)Ctl =e
`ai
`bCanActivate
`a
`bCanToggleActivation:1;
`ActivateContainerString;
`ContainerActivateString;
`DeactivateContainerString;
`ContainerDeactivateString;
`DeathCacheCharacterID;
`DeathCharacterGuid;
`aE
`bContainerActivated
`NTCoetTpms
`a
`NextConsumeFuelGiveltem;
`NextConsumeFuelGiveltemType;
`LastCheckedFuelTime;
`LastRefreshFuelStateTime;
`
`bDropInventoryOnDestruction:1; bSpawnInventoryOnDestruction:1;
`DropInventoryOnDestructionLifespan;
`SpawnInventoryOnDestructionLifeSpan;
`NetDestructionTime;
`SavedNetOnDestructionTime;
`ContainerActivatedSound;
`ActivatedSoundID;
`ContainerDeactivatedsound;
`DeActivatedSoundID;
`CurrentPinCode;
`eireels) aet
`bIsPinLocked
`bLockedByPassword
`
`UnRideSoundID;
`
`UClass
`aad
`
`UClass*>
`
`A Tost Fhe Cok aoraDT| od
`PlTapTwataha
`
`TWeakObjectPtr<
`Tem ates
`elmhae)
`OFetealt-] <0)e etna
`USoundCue
`USoundCue
`
`AVTaek Weer ia-a
`
`Oia)tere] ool0)
`TPVCameraPitchMax;
`SeeRe hee)
`PitctViewRotation:
`aaa hewno)
`AlternateAmmoltemTemplates ;
`
`SeatedCharacter;
`NumSeats ;
`SeatedCharacterLocationOffset;
`tatshmats] alee eee ae)Oot a
`CharacterPerSeat:
`RideSound;
`UnrideSound;}
`
`fimilar variables
`ASGStructureSeat
`oees oe
`aeee Sas
`
`ait Tas stole
`SeantJ
`
`TPVCameraPitchMin;
`tAG1)ala] obiaed |tba
`Peei)eae]ae)
`PitchViewRotation;
`eae een oteeh
`AllAmmoltemTemplates;
`
`SeatedCharacter;
`NumSeats;
`SeatedCharacterLocationOffset;
`SeatedCharacterRotationoffset;
`FWMeolalega le
`RideSoundID;
`
`
`
`Qf) 2eeseeoscescos2secese ees ss9s soos se sees eee os sass eee soe ssosssso2ses
`
`J) 2eocesosseess 2 saeco sss sessssesssss sess tes sse sss sessess assess ssesseess
`
`// ES
`MaeythofEmpires}
`f/f ScriptStruct ShooterGame.DecalData
`// ScriptStruct 56.DecalData
`
`struct) FDecalData
`struct!
`{
`if
`DecalMaterial ;
`class UMaterialInterface*
`Si7CTcoor=ooda0>|et=rEFbaldasIe
`rcs *DecalSize;
`
`Sees
`DecalSize;
`paaeeis
`DecalDepth;
`ars
`* DecalDepth;
`
`DecalImpactNormalOffset8feat DecalImpactNormaloffset ;
`float
`Loot
`LifeSpan;
`aay)
`rarer
`aa)
`1
`5
`teem
`RandomAngleRange;
`i
`
`FDecalData
`
`ie
`
`ee ai eee
`
`eeease 2:21-cv-09552-CAS-SK Document1-1 filed 12/09/21
`3 0f17 _Page.|D #:19
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 13 of 17 Page ID #:19
`
`
`eeeeeae
`DefaultZoneSpawnVolumeFloors;
`efree eeeeel
`=DefaultSpawnVolumeFloors;
`
`OeeeeeneEee
`DefaultZoneSpawnVolumeF LoorTags;
`Ceeeee eae
`=DefaultSpawnVolumeFloorTags;
`aa a cag)ereda=)aeeeea
`
`
`radeae0aoe NPCSpawnEntriesContainerObject;
`TArray<class ANPCZoneVolume*>
`LinkedZoneVolumes ;
`are re PtereeRe a
`com)ereeT ed
`aeeaean aeeenseeartee
`
`peureneneeerLRRoteMh stasheterCeeteestamLecce
`
`
`MaxNumberSpawnZoneRandomPointChecks ;
`as
`SS MaxNumberVa lidSpawnDataChecks ;
`MinDesiredNumberOfMPc;
`a semegtiheehee)leeraLee
`AbsoluteMaxNumberOfMPC ;
`ee ee erTigiee
`EWi-ePaRaeeeelelee
`eons 0019.90)1oe1 ol
`StructureDistanceFromSpawnPoint ;
`ce —™CheckStructureDistance;
`
`ae
`
`// ES
`// ScriptStruct ShooterGame.NPCZoneManager .LinkedZoneSpawnVolumeEntry
`
`struct FNpcSpawnVolumeData
`struct| FLinkedZoneSpawnVolumeEntry
`i
`f
`LinkedZoneSpawnVolume;
`class ANPCZoneSpawnVolume*
`ra PerreseLenaae
`*NpcSpawnVolume ;
`ZoneSpawnVolumeFloors;
`TArray<class AActor*>
`
`TArray<ciessAActor*=SpawnlumeFloors;
`TArray<struct FName>
`ZoneSpawnVolumeF loorTags;
`Seec}eTLOMA(1alMele]alFF|oii
`float
`USee
`ace’ 2-301161
`ieeesteeadle
`UnknownDatae@a[@x4 ];
`Pieegaeste adgel
`UnknownDatae@e[ a4];
`
`// ScriptStruct SG.NpcSpawnVolumeData
`
`ie
`
`hi
`
`ee ai eee
`ee eee ere herroeee
`
`es
`EeiythofEmpires
`
`f/f ScriptStruct ShooterGame. PrimalGameData.NPCSpawnLimit
`ff ScriptStruct $G.NPCSpawnLimit
`
`FNPCSpawnLimit
`
`struct)
`isa adel ee
`i
`i
`class UClass* Geneenmeee<=5Suerot 1-9Lae SePCTemplateClass ;
`
`class FString
`NPCClassString;
`pee
`Percentage;
`float
`MaxPercentageOfDesiredNumToAllow;————— 335. —O™
`Scatrt atele
`UnknownData@e@ [G4];
`ieeesteeadle
`UnknownDatae@a[@x4 ];
`
`
`
`a
`
`caela eeeee
`if eeee re
`struct FVector
`
`AdjustedLocation;
`Expectedlocatian;
`
`struct FRotator oeraneeeeLeeee
`AdjustedRotation;
`ne! casie:Latet
`bool
`ee
`
`aeathAtte|re] 1;
`bSnapped;
`bool
`ieeeeeLele Madlela Ue tareProne)2)oe
`
`bDisableEncroachmentCheck;—__
`bool
`class ASGStructure*
`bIsWaterGrounded;
`_—— ParentStructure;
`unsigned char
`UnknownDatadeal[éx1];
`____—= ReplaceStructure;
`aria
`Teiead elen ie
`MySnapToIndex;
`aria
`PreventCheckVolume;
`TheirSnapToIndex;
`CreateOnStructure;
`unsigned char
`UnknownDatae@1[@x4];
`faa eae tons]ee
`FloorHitActor;
`PlatformCharacter;
`class APrimalStructure*
`ParentStructure;-————
`class APrimalStructure*
`meleewetatsaolacrTehae
`class APrimalStructure*
`ReplacesStructure;——
`fae)
`AttachToPawn;
`Seed
`AttachToBone;———
`class APrimalDinoCharacter*
`DinoCharacter;——_
`
`i (
`
`0) seeeeeesse0seesees0sssesssssesssssess5 22 seesssseesssssees5555552===5
`
`if
`aythofEmpires
`f/f ScriptStruct ShooterGame. PrimalDinoCharacter.PrimalSaddleStructure
`f/f ScriptStruct $6G.PlatformStructure
`Eas FPlatformStructure
`struct FVector
`tee ca
`DinoRelativeLocation; ——--@————_
`Rha)aciaa med
`struct FRotator
`
`DinoRelativeRotation;— —\————al struct FVector —wRelativeLocation;
`struct FName
`struct FRotator
`BoneName ;—
`Re lativeRotation;
`aaaone lt
`class APrimalStructure*
`=BoneName >
`a
`
`struct| FPrimalSaddleStructure
`if
`
`
`
`ti
`
`hi
`
`nie a ne he heroines
`
`rene
`
`ed
`mythofEmpires
`ela) cygo Tele| eTco Pet|
`ie pel 2) cya To)
`
`struct FPlacementData
`t
`
`a
`
`class ASGStructure*
`seeoa
`Beerecielaa erearae
`class Peeta
`a
`Serees)yaaaaed
`saoe
`
`—
`bool
`eeeLas|
`|an
`
`7
`
`7
`
`eee5
`=
`~“bIgnoreCheckObject
`UnknownData®@1[ x7 ];
`
`:
`
`Empargs
`7
`ced a Eeeeeeeea Document 1-1 Hileg 42/09/2 b
`ata eeceve
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 14 of 17 Page ID #:20
`crip
`
`struct)
`{
`
`FItemCraftQueueEntry
`
`struct FiltemNetID
`irks
`bool
`bool
`unsigned char
`pees
`pees
`
`tl
`Oa re
`COEDasOo
`—__
`[ou tet
`bIgnoreInventoryRequirement;
`UnknownData@@[@x2 ];
`RepairPercentage;
`Litey-WAedoleaead
`
`aaaregaebemeTe
`t
`fale cle
`struct Fouid
`eins
`float ————_
`pees
`Lalere]
`TEnumAsByte<EItemQuality>
`
`ie
`
`Qi) s22=2eee0202=2252000=22=5552===-
`
`ItemTemplate;
`SU queld 5
`Quantity;
`Stee=2=
`TotalRemainingCraftTime;
`-—*bIsRepair : 1;
`UseRemoveltemQuality;
`
`7
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 15 of 17 Page ID #:21
`ScriptStruct ShooterGame.PrimalGanclata. NPoSpannEntry
`FNPCSpawnData
`eet =2
`
`FNPCSpawnEntry
`
`FString
`UClass*>
`alaed
`ale
`aelaared
`gee Peatte fagegtdne}a
`aes
`a9 ea
`a3
`TArray<
`aa|e
`ara9
`ra3
`
`aaaes
`
`sie
`ta
`
`AnEntryName;
`NPCsToSpawn;
`NPCsToSpawnStrings;
`NPCRandomSpawnClassWeights ;
`NPCsSpawnOffsets ;
`NPCsToSpawnPercentageChance;
`afm gy asOet
`NPCMaxLeveloffset;
`NPCMinLevelMultiplier;
`NPCMaxLevelMultiplier;
`bAddLeveloffsetBeforeMultiplier
`bForcePreventSpawn0n0cean
`1;
`UnknownData@e[ x7];
`NPCOverrideLevel;
`ExtentCheck;
`ilealeyeete
`Seanea
`
`criptStruct ShooterGame.PrimalStructureSnapSettings.PrimalStructureSnapPoint
`
`etl esea lala as
`FName
`ota at
`FRotator
`FRotator
`
`UnknownData@e@[ x3];
`
`eA|e kph
`SnapPointDescription ;
`BindPointLocOffset;
`PointLocOffset;
`BindPointRotOffset;
`PointRotOffset;
`CanBindType;
`PointComparisonExtraRotOffset;
`ahaTe ee)eR ile
`CanBindTypeGroup;
`are Tel ae) ee
`ExcludeBindType;
`bBindPointTo
`il?
`if
`bHighPriorityAttachTePoint
`bBindPointFrom
`faste) eRe eetWma wThmet=Leco
`bBestBindPoint
`ay:\m= Taleo) ber] Tod eyDta 1;
`bAttachToDisableVisibilityCheck
`i
`lar lsatne hea)
`ai
`
`bInvalidForStructureLinking:1; bIgnoreCheckObject=1;
`
`bSnapForceNoGroundRequirement:1; bIgnoreCreateOnGroundwhenBinded
`Seti) RCHORWMwyaeee
`bSnapTolInvertYawhWhenFlipped
`ip
`bPorthole
`als
`bMeshOffsetUpdateSnapLocation:1;
`bSnapForceAllowPlacementAtOtherActorLocation
`UnknownDatage[@x2];
`ToPointSnapTypeF lags ;
`ToPointSnapTypeExcludeF lags ;
`ETT]e) sera heypea clea es
`
`eT as
`Pee
`TArray<
`
`Pe
`Paes
`ees
`Pares
`Pe
`reiae4
`ares
`Pee
`TArray<
`TArray<
`oFUae
`oer
`
`a
`FString>
`FString>
`
`criptStruct 56.BindPointInfo
`artes tance
`
`SpawnDataName ;
`NpcTemplateClasses;
`NpcSpawnGroupMinNum;
`NpcSpawnGroupMaxNum;
`NpcSpawnGroupDistance;
`UnkRpwnDatadel[ ax4] ;
`sedlimnee
`NpcMinLeveloffset;
`NpcMaxLevelOffset ;
`NpcOverrideLevel;
`NpcMinQualityCorrection;
`NpcMaxQualityCorrection;
`MinDistanceToPlayer ;
`MaxDistanceToPlayer ;
`Plated ect TeEa eteLe
`NpcOverrideAllowSlleep;
`NpcStartSleepTime;
`NpcEndSleepTime;
`
`1
`1;
`
`
`
`DamageMultiplier;
`PaO Teereere toe
`DamageHarvestAdditionalEffectiveness;
`DamageDurabilityConsumptionMultiplier;
`eM elWate iatheen iP
`UnknownDatae@eal[ x7J;
`Etta
`HarvestDamageFXOverride;
`
`UDamageType
`
`DropWrapperiId;
`DropWrapperFactor ;
`DamageMultilier;
`ExploitQuantityMultilier;
`OTEwale
`
`Oe Vente) ee tee
`
`leg E-ts4
`
`BaseResourceRequirement ;
`Wa atera) OE Bee5) se
`ResourceltemType;
`bCraftingRequireExactResourceType;
`UnknownData@1[ x3];
`ForceMultipleResourceTypesRequirement ;
`
`tel ds eha tee ret the
`
`Me peatet
`
`ee
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 16 of 17 Page ID #:22
`
`/ ScriptStruct ShooterGame.Damagetaives fad go 2) a ea enML -| Cord bo8ea
`age
`FDamageExploitEntry
`Beyeae
`
`oyato eld
`
`ScriptStruct ShooterGame.PrimalItem.CropItemPhaseData
`FCropitemPhaseDat
`
`Losaooodoh
`
`NextStageFertilizerCacheThreshold;
`UnknownDatage@[ Ox] ;
`StageStaticMesh;
`
`ee) ee) pe)
`
`UStaticMesh
`
`er eto telate
`UnknownDatade[Bx4] ;
`ResourceltemType;
`bConsumesDurable
`UnknownData@1[ 8x7 ];
`
`1;
`
`yarea dren ed
`StageStartScale;
`StageEndScale;
`UnknownDatade[ex4];
`
`
`
`Case 2:21-cv-09552-CAS-SK Document 1-1 Filed 12/09/21 Page 17 of 17 Page ID #:23
`
`Inside the Myth of Empires binary, there are references to “Primal” Mod GameData - “Primal” being specific to ARK & ATLAS (e.g. PrimalGameData, UPrimalItem,
`APrimalCharacter, APrimalDinoCharacter, PrimalArmor, APrimalStructure, etc…)
`
`