Giter Club home page Giter Club logo

cybercat's Introduction



GitHub Release Date GitHub Workflow Status GitHub milestone GitHub all releases GitHub issues GitHub commit activity

⚠️ This repository focuses on REDengine 4 for Cyberpunk 2077. For WolvenKit for The Witcher 3: Wild Hunt please see: https://github.com/WolvenKit/WolvenKit-7

WolvenKit is an open-source modding tool for Cyberpunk 2077. Our vision is to develop a standalone software which is capable of reading and writing all REDengine file formats. Additionally the WolvenKit application is designed to simplify and accelerate modding workflows. This repository was created to demonstrate how CDPR's proprietary REDengine reads and writes file formats.

This toolkit is being made solely for research and educational purposes, and the dev team is in no way responsible for any malfunctions that occur from its use. It's completely open source, licensed under the GPL-3.0, and in no way is it made to generate revenue.


Installation

Wolvenkit requires the latest .NET 8.0 runtime:

  1. Go to Microsoft's .NET download page
  2. Find the ".NET Desktop Runtime 8.0.x" section and download the installer for your architecture (x64)
  3. Run the downloaded installer

There are multiple ways to install Wolvenkit:

The WolvenKit.Installer app

The WolvenKit.Installer app is a simple program for managing (installing, updating, removing) different WolvenKit versions similar to the Visual Studio Installer app.

It is hosted on github and you can install it from there. Click here: GitHub release (latest by date)

Portable or Installer

Download either the latest stable version or the current nightly (beta) version from here:

Package Latest Release Checks
WolvenKit Nightly GitHub release (latest by date) GitHub Workflow Status
WolvenKit GitHub release (latest by date) GitHub Workflow Status

To install the app quickly download WolvenKitSetup-x.x.x.exe and double click to run the installer.

You can also simply download WolvenKit-x.x.x.x.zip and extract it to a location of your choice

Usage

📑 Check out the wiki: https://wiki.redmodding.org/wolvenkit

Build instructions

If you want to build the app from source yourself:

  1. Download and install Visual Studio 2022 Community Edition or a higher version.
  2. Clone this repository.
  3. Open the solution (All.sln)
  4. Build the projects.

Contributing

Do you want to contribute? Community feedback and contributions are highly appreciated! It's a good idea to create an issue when implementing a feature so people don't work on the same feature/issue in an asynchronous manner.

For general rules and guidelines see CONTRIBUTING.md.

For any questions:

Developer Role Email
Seberoth Project Lead / Core Development
Rfuzzo Project Lead / Core Development Email
Traderain Project Lead Email

Screenshots

WK 8 6 Home Page Example

WK 8 6 Editor Example

Credits

WolvenKit is a direct result of the hard work and continuous support, financial and otherwise, of the many researchers, programmers, artists, contributors, and companies that have helped with this project. Without their outstanding work and generous support, we never would have been able to create WolvenKit for Cyberpunk 2077. A very special thank you goes out to...

JetBrains Logo (Main) logo.

An ancestor to this tool was W3Edit, initially developed by Sarcen in 2015, around the time The Witcher 3 first came out. After Sarcen stopped working on it, a few of us picked it up and continued from there.

License

Copyright Disclaimer: Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.. This project is solely made for research and in no way made to generate any revenue.

cybercat's People

Contributors

clevergrant avatar envy avatar hallatore avatar seberoth avatar sirbitesalot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cybercat's Issues

Cannot Load Patch 1.1 Save File - Throws Generic System Exception

Exception is thrown when opening organic save game data from game version 1.1
Exception comes from a call stack ending at "GetInstanceFromName(string name)" method, line 249 in "GenericUnknownStructParser.cs" file, in the CyberCat.Core project.
Method is looking to create an instance of class type "Uint16", which is not found in the class list.

I was able to open and view a post-patch game save after making the following adjustments, but I have not tested any further functionality, such as saving the file or the subsequent loading of a modified save.

"GameItemID" class in "GameItemID.cs" needs an additional property:
[RealName("uniqueCounter")] [RealType("Uint16")] public ushort uniqueCounter { get; set; }
Additional switch case statement to handle the Uint16 data, added to following two methods in the "GenericUnknownStructParser.cs" file:

  • ReadMappedFieldValue(BinaryReader reader, GenericUnknownStruct.BaseClassEntry cls, string fieldName, string fieldTypeName) - Line 506
  • ReadUnappedFieldValue(BinaryReader reader, string fieldName, string fieldType) - Line 590

Additional switch case:
case "Uint16": return reader.ReadUInt16();

I have not taken the time to fully understand the project, so I suspect it is more complicated than this.
Just putting the info out there in-case it is helpful.

If you need any more information from me, please let me know!

Copy nodes between save files

Is it possible to copy a node as is from one save file to another?

What I aim to achieve is to create something similar to what a New Game Plus functionality does in games. Like copying the entire inventory of one character to a freshly started character save. By using a hex editor, I tried copying the inventory node between decompressed save files then recompressing the changed save but no luck. The recompressed save file still shows its old inventory.

An automated process would be very handy. As CDPR promised to deliver NG+ for this game, but didn't (like many other features).

GenericUnknownStruct.RemoveHandle performance issues

On heavily bloated saves, looping through all redundant IsItemCrafted stats and calling GenericUnknownStruct.RemoveHandle on each one can take upwards of 5 minutes to execute.

I have tested to make sure that it is not my loop bottlenecking performance by running SetId on each handle instead of RemoveHandle. This test resulted in a <1s time to execute.

Example Bloated Save

Example Loop:

var statsCon = (GenericUnknownStruct)activeSave.Nodes[activeSave.Nodes.FindIndex(x => x.Name == "StatsSystem")].Value;
var statsMap = (GameStatsStateMapStructure)statsCon.ClassList[Array.FindIndex(statsCon.ClassList, x => x is GameStatsStateMapStructure)];
foreach (GameSavedStatsData stats in statsMap.Values)
{
    if (stats.StatModifiers != null)
    {
        if (stats.StatModifiers.Count() > 100)
        {
            for (int i = 0; i <= stats.StatModifiers.Count() - 1; i++)
            {
                statsCon.RemoveHandle((int)stats.StatModifiers[i].Id);
            }

            stats.StatModifiers = new Handle<GameStatModifierData>[] { };
        }
    }
}

Update for 1.5

CyberCat wont work after update 1.5... shows
errors occurred:(unkonwn type:"sslotvisulinfo")(unkonwn property:"uiscriptablesystem.dlcaddeditems")

Add ability to diff nodes of two save files or export save files for diff

I'm not sure how easy this is to implement given the current codebase, but the ability to diff nodes (or just export the hex-decoded raw data as CSV so they can be loaded into another diff tool) would significantly improve on the ability of users to figure out the format of the save file and its nuances.

Together with #11, it would make save editing and figuring out the format more accessible, allowing more people to work towards figuring out the format.

This would be superior to simply editing the decompressed file, due to the already discovered save file data nodes. For example, the CSV dump could contain something along the lines of (per node within the save dat):

NodeName (eg [7]PlayerSystem)
DataName (eg FirstPerson, TrailingBytes)
RawData (eg hex-decoded raw bytes, or the Collection object)

Possible sav.dat *file size* compression feature?

Hey all! First off, great tool, loving it and it gives me some cool insights into how their save games are structed (I'm in devops in IT so I find it interesting regardless).

TL:DR - I crafted too much shit and dismantled it and my sav.dat is 11MB and the game takes forever to load so I was wondering if there's a way to shrink the size of a sav.dat file using your tool.

The whole story:
This is more of a feature request/question; is it possible to compress the size of a sav.dat file in general so the game loads faster? I created a quick powershell script to click, hold, release the Craft button for "bounce back mk1" stims and crafted like 10,000 of them overnight then dismantled the stack for components to sell for cash (yes, I know I could just mod the save but I was trying to play that first game thru without "cheating") and now my save file is over 11MB and it takes a good 70 seconds to load the save game. Not a huge deal but a pain in the ass.
I was looking thru the tool and it would appear that inventory items, or any item picked up really, is giving an increasing unique int/long value:
image
So I'm assuming that huge jump in the node hex is like, the thousands of stims I crafted...

So, my question is, is the game just keeping all that crap in the save file? Since it's all been dismantled is there a way to just cut out that part of the binary so my save file is not so big? Or is it just padded with zeroes or something? I couldn't really figure it out by looking thru the decompressed binary file myself (it's >40MB lol).

Thanks folks, keep up the good work!

Cannot load savegames from V1.20

Savegames from Cyberpunk patched to 1.20 cannot be loaded. Error message:

Error reading file: Nicht negative Zahl erforderlich (non-negative number required)
Parametername: count

Savegames pre-patch can still be loaded.

Adding/Removing an entry in an AppearanceSection causes data destruction

Steps to Reproduce:
1.) Create a character in-game with the default eyes (Eyes 01) and save
2.) Open save in CyberCAT.Forms & add a new entry to First Section -> TPP -> Additional List
3.) Set First String to "eyes" and Second String to "h071" (Eyes 08 for Female Character)
4.) Save

The resulting save is loadable in-game and the appearance is changed, but other nodes (such as stats) suffer data destruction. Attempting to re-open the save in CyberCAT causes a NullReferenceException at NodeEntry.SetNextNode

Can't load saves on v1.23

As I'm sure you probably know by now, saves made on v1.23 cannot be loaded.

(Unknown property: "FastTravelSystem.lastUpdatedAchievementCount")

Opening an issue because I do not see an existing one.

Saves prior to v1.23 still load.

EndGameSave can not be opened

I think this is a really minor bug, but still.

When trying to open EndGameSave save I have an exception:

CyberCAT.Core.Classes.Parsers.GenericUnknownStructParser.GetInstanceFromName(String name) 
in C:\git\cyberpunk_saves\CyberCAT\CyberCAT.Core\Classes\Parsers\GenericUnknownStructParser.cs:line 249

private GenericUnknownStruct.BaseClassEntry GetInstanceFromName(string name)
{
if (MappingHelper.DumpedClasses.ContainsKey(name))
{
var classType = MappingHelper.DumpedClasses[name];
return (GenericUnknownStruct.BaseClassEntry)Activator.CreateInstance(classType);
}
throw new Exception();
}

The name of gameSceneTier5Data is missing in MappingHelper.DumpedClasses.Keys,

Full list of keys for that save

System.Exception: 'AccessPointControllerPS
ActionBool
ActionsSequence
ActionsSequencerControllerPS
ActivatedDeviceAnimSetup
ActivatedDeviceControllerPS
ActivatedDeviceSetup
ActivatorControllerPS
Agent
AgentRegistry
AIArgumentInstancePS
AIbehaviorWorkspotList
AIBoolArgumentInstancePS
AICommandQueuePS
AIFollowerRole
AIHumanComponentPS
AIInt64ArgumentInstancePS
AIISerializableArgumentInstancePS
AINoRole
AIPatrolPathParameters
AIPatrolRole
AIRole
AISpotUsageToken
AlarmLightControllerPS
AOEAreaControllerPS
AOEAreaSetup
AOEEffectorControllerPS
ApartmentScreenControllerPS
ApplyDamageDeviceOperation
ApplyStatusEffectDeviceOperation
ArcadeMachineControllerPS
AreaEntry
AreaTypeTransition
AuthorizationData
BackDoorObjectiveData
BaseAnimatedDeviceControllerPS
BaseDestructibleControllerPS
BaseNetworkSystemControllerPS
BaseScriptableAction
BaseSkillCheckContainer
BasicDistractionDeviceControllerPS
BillboardDeviceControllerPS
BlacklistEntry
BlindingLightControllerPS
BraindanceSystem
C4ControllerPS
CameraQuestProperties
CameraSetup
ChangeMusicAction
CityLightSystem
CleaningMachineControllerPS
CLSWeatherListener
CluePSData
ClueRecordData
Color
CommunityProxyPS
ComputerControllerPS
ComputerQuickHackData
ComputerSetup
ConditionGroupData
ConfessionBoothControllerPS
ControlPanelObjectiveData
ConveyorControllerPS
CooldownPackage
CooldownPackageDelayIDs
CooldownStorage
CooldownStorageID
CraftBook
CraftingSystem
CraftingSystemInventoryCallback
CResource
DataTermControllerPS
DataTrackingSystem
DemolitionContainer
DemolitionSkillCheck
DestructibleMasterDeviceControllerPS
DestructibleMasterLightControllerPS
DestructionData
DetectionParameters
DeviceLink
DeviceLinkComponentPS
DeviceOperationBase
DeviceOperationsContainer
DeviceOperationsTrigger
DeviceScanningDescription
DeviceSystemBaseControllerPS
DeviceTimeTableManager
DisassembleOptions
DisplayGlassControllerPS
DisposalDeviceControllerPS
DisposalDeviceSetup
DistractionSetup
District
DistrictManager
DoorControllerPS
DoorProximityDetectorControllerPS
DoorSetup
DoorSystemControllerPS
DropPointControllerPS
DropPointMappinRegistrationData
DropPointPackage
DropPointSystem
EditableGameLightSettings
effectBaseItem
effectLoopData
effectTrackBase
effectTrackGroup
effectTrackItem
EFirstEquipData
ElectricBoxControllerPS
ElectricLightControllerPS
ElevatorFloorSetup
ElevatorFloorTerminalControllerPS
EngDemoContainer
EngineeringContainer
EngineeringSkillCheck
EngineTime
entEntityID
EntityAttachementComponentPS
EntityAttachementData
entVoicesetInputToBlock
EquipmentSystem
EquipmentSystemPlayerData
EventsFilters
ExplosiveDeviceControllerPS
ExplosiveDeviceResourceDefinition
ExplosiveTriggerDeviceControllerPS
FactsDeviceOperation
FanControllerPS
FanSetup
FastTravelSystem
FastTravelSystemLock
FirstEquipSystem
FocusCluesSystem
FocusForcedHighlightPersistentData
ForcedStateData
ForkliftControllerPS
ForkliftSetup
FuseBoxControllerPS
FuseControllerPS
FuseData
gameAttachmentSlotsScriptListener
gameAttitudeAgentPS
gamebbID
gamebbScriptDefinition
gamebbScriptID
gamebbScriptID_Variant
gameCombinedStatModifierData
gameCommunityID
gameComponentPS
gameConstantStatModifierData
gameCurveStatModifierData
gameCyberspacePixelsortEffectParams
gamedataEquipmentArea_Record
gamedataTweakDBRecord
gameDelayedFunctionsScheduler
gameDelayID
gamedeviceAction
gamedeviceActionProperty
gamedeviceClearance
gameDeviceComponentPS
gamedeviceDataElement
gamedeviceGenericDataContent
gamedeviceQuestInfo
gameEffectAction
gameEffectDebugSettings
gameEffectDefinition
gameEffectDurationModifier
gameEffectExecutor
gameEffectNode
gameEffectObjectFilter
gameEffectObjectProvider
gameEffectPostAction
gameEffectPreAction
gameEffectRef
gameEffectSet
gameEffectSettings
gameEntityReference
gameEntityStubComponentPS
gameFastTravelPointData
gameFxInstance
gameFxResource
gameGlobalTierSaveData
gameGodModeData
gameGodModeEntityData
gameGodModeSaveData
gameGodModeSaveEntityData
gameIAttachmentSlotsListener
gameIBlackboard
gameIGameSystem
gameIInventoryListener
gameIMarketSystem
gameIMovingPlatformMovement
gameIMovingPlatformMovementInitData
gameIMovingPlatformMovementPointToPoint
gameinteractionsChoice
gameinteractionsChoiceCaption
gameinteractionsChoiceCaptionPart
gameinteractionsChoiceLookAtDescriptor
gameinteractionsChoiceMetaData
gameinteractionsChoiceTypeWrapper
gameinteractionsOrbID
gameInventoryItemAbility
gameInventoryPS
gameInventoryScriptCallback
gameInventoryScriptListener
gameIStatsSystem
gameItemID
gameITransactionSystem
gameJournalPath
gameLootContainerBasePS
gameMountEventData
gameMountEventOptions
gameMovingPlatformMovementDynamic
gameMovingPlatformSavedData
gameMovingPlatformsSavedState
gameNewMappinID
gameObjectPS
gamePersistentID
gamePersistentState
GameplayConditionBase
GameplayConditionContainer
GameplayLightControllerPS
GameplaySettingsListener
GameplaySettingsSystem
GameplaySkillCondition
gamePrereqState
gamePuppetPS
gameRenderGameplayEffectsManagerSaveData
gameSavedStatsData
gameScanningComponentPS
gameScanningControllerSaveData
gameSceneTier1Data
gameSceneTier2Data
gameSceneTierData
gameScriptableSystem
gameScriptableSystemRequest
gameSEquipArea
gameSEquipmentSet
gameSEquipSlot
gameSItemInfo
gameSItemStack
gameSItemStackRequirementData
gameSLastUsedWeapon
gameSLoadout
gameSourceData
gameSquadMemberComponentPS
gameSquadMemberDataEntry
gameSSlotActiveItems
gameSSlotInfo
gameStatModifierData
gameStatPoolData
gameStatPoolModifier
gameStatPoolsSystemSave
gameStatsComponentPS
gameStatsObjectID
gameStatsStateMapStructure
gameStatsSystem
gameStatusEffect
gameStatusEffectBase
gameStatusEffectComponentPS
gameStatusEffectTDBPicker
gameStatViewData
gameSVisualTagProcessing
gameTierSaveData
gameTransactionSystem
gameUILocalizationDataPackage
gameuiMinigameProgramData
gameVisionModeComponentPS
GemplayObjectiveData
GenericContainer
GenericDeviceActionsData
GenericDeviceControllerPS
GenericDeviceOperation
GlitchedTurretControllerPS
HackEngContainer
HackingContainer
HackingSkillCheck
HoloDeviceControllerPS
HoloFeederControllerPS
HoloTableControllerPS
Hotkey
IceMachineControllerPS
IceMachineSFX
IllegalActionTypes
inkTweakDBIDSelector
IntercomControllerPS
InventoryDataManagerV2
InventoryItemAttachments
InventoryItemData
InvisibleSceneStashControllerPS
IScriptable
ISerializable
ItemModificationSystem
ItemRecipe
JukeboxControllerPS
JukeboxSetup
KeyBindings
LadderControllerPS
LaserDetectorControllerPS
LcdScreenControllerPS
LiftControllerPS
LiftSetup
LinkedFocusClueData
LinkedStatusEffect
LootContainerObjectAnimatedByTransformPS
MaintenancePanelControllerPS
MarketSystem
MasterControllerPS
MediaDeviceControllerPS
MeshAppearanceDeviceOperation
MovableDeviceControllerPS
MovableDeviceSetup
MovableWallScreenControllerPS
MusicSettings
NcartTimetableControllerPS
NcartTimetableSetup
NetrunnerChairControllerPS
NetrunnerControlPanelControllerPS
NetworkAreaControllerPS
ObjectScanningDescription
OdaCementBagControllerPS
OutputPersistentData
PachinkoMachineControllerPS
PersonnelSystemControllerPS
PlayBinkDeviceOperation
PlayEffectDeviceOperation
PlayerDevelopmentData
PlayerDevelopmentSystem
PlayerPuppetPS
PlayerWokrspotDeviceOperation
PlaySoundDeviceOperation
PlayTransformAnimationDeviceOperation
PreventionAgents
PreventionDelayedSpawnRequest
PreventionSystem
PSOwnerData
PuppetDeviceLinkPS
Quaternion
QuickSlotsManagerPS
RadioControllerPS
RadioSetup
RadioStationsMap
RecipientData
redEvent
redResourceReferenceScriptToken
ReflectorControllerPS
ReflectorSFX
ReprimandData
resStreamedResource
RetractableAdControllerPS
RoadBlockControllerPS
RoadBlockTrapControllerPS
SActionTypeForward
SActionWidgetPackage
SAttribute
SBinkperationData
SBraindanceInputMask
scnVoicesetComponentPS
SComponentOperationData
ScreenMessageSelector
ScriptableDeviceAction
ScriptableDeviceComponentPS
ScriptedPuppetPS
ScriptGameInstance
ScriptReentrantRWLock
SCustomDeviceActionsData
SDamageOperationData
SDevelopmentPoints
SDeviceActionBoolData
SDeviceActionCustomData
SDeviceActionData
SDeviceTimetableEntry
SDocumentAdress
SecSystemDebugger
SecurityAccessLevelEntry
SecurityAccessLevelEntryClient
SecurityAlarmControllerPS
SecurityAlarmSetup
SecurityAreaControllerPS
SecurityGateControllerPS
SecurityGateDetectionProperties
SecurityGateLockControllerPS
SecurityGateResponseProperties
SecurityLockerControllerPS
SecurityLockerProperties
SecuritySystemClearanceEntry
SecuritySystemControllerPS
SecuritySystemData
SecurityTurretControllerPS
SensorDeviceControllerPS
SequenceVideo
SExperiencePoints
SFactOperationData
SGenericDeviceActionsData
ShardCaseContainerPS
SharedGameplayPS
SHitNPC
SimpleSwitchControllerPS
SInternetData
SInventoryOperationData
SkillCheckBase
SkillCheckPrereqState
SlidingLadderControllerPS
SmartHouseConfiguration
SmartHouseControllerPS
SmartHousePreset
SmartWindowControllerPS
SmokeMachineControllerPS
SNewsFeedElementData
SoundSystemControllerPS
SoundSystemSettings
SpeakerControllerPS
SpeakerSetup
SPerformedActions
SPerk
SPerkArea
SpiderbotScavengeOptions
SPresetTimetableEntry
SPreventionAgentData
SProficiency
SSFXOperationData
SsimpleBanerData
SSimpleGameTime
SStatusEffectOperationData
SStimOperationData
SSubCharacter
StashControllerPS
StatCheckPrereqState
STeleportOperationData
StillageControllerPS
StimDeviceOperation
SToggleDeviceOperationData
STrait
STransformAnimationData
STransformAnimationPlayEventData
STransformAnimationSkipEventData
STvChannel
SubCharacterSystem
SurveillanceCameraControllerPS
SurveillanceSystemControllerPS
SurveillanceSystemUIPS
SVfxInstanceData
SVFXOperationData
SWidgetPackage
SWidgetPackageBase
SWorkspotData
TargetingBehaviour
TemporaryDoorState
TerminalControllerPS
TerminalSetup
textTextParameterSet
Time
TimetableCallbackData
ToggleComponentsDeviceOperation
ToiletControllerPS
Transform
TrespasserEntry
TVControllerPS
TVSetup
UILocalizationMap
UILocRecord
UIScriptableInventoryListenerCallback
UIScriptableSystem
UI_EquipmentDef
UI_ItemModSystemDef
userSettingsGroup
userSettingsUserSettings
userSettingsVarListener
Vector3
Vector4
vehicleAudioPSData
vehicleCameraManagerComponentPS
VehicleComponentPS
vehicleControllerPS
vehicleDestructionPSData
VehicleDeviceLinkPS
vehicleGarageComponentPS
vehicleGarageComponentVehicleData
vehicleGarageVehicleID
vehiclePersistentDataPS
vehicleUnlockedVehicle
vehicleVehicleSlotsState
vehicleWheelRuntimePSData
VendingMachineControllerPS
VendingMachineSetup
VendingMachineSFX
Vendor
VentilationAreaControllerPS
VentilationAreaSetup
VentilationEffectorControllerPS
VirtualSystemPS
WeakFenceControllerPS
WeakFenceSetup
WeaponVendingMachineControllerPS
WeaponVendingMachineSetup
WeaponVendingMachineSFX
WidgetCustomData
WindowBlindersControllerPS
WindowBlindersData
WindowControllerPS
worldEffect
worldGlobalNodeID
worldWeatherScriptListener
'

Can you post downloadable executables?

Can you compile some version of the project and post downloadable executables, please? I don't feel like downloading Visual Studio tonight...

EDIT: oh, sorry, I haven't read whole description - so there is no working version yet. Anyway, I wish the best.

Compression corrupts some files

Even if no modification occured some files differ slightly. This is probably due to the compression algo. The data when uncompressed again stays the same. This means that no corruption in the general sense occurs but that there probably is some form of Checksum

Possible sav.dat file size compression?

Hey all! First off, great tool, loving it and it gives me some cool insights into how their save games are structed (I'm in devops in IT so I find it interesting regardless).

TL:DR - I crafted too much shit and dismantled it and my sav.dat is 11MB and the game takes forever to load so I was wondering if there's a way to shrink the size of a sav.dat file using your tool.

The whole story:
This is more of a feature request/question; is it possible to compress the size of a sav.dat file in general so the game loads faster? I created a quick powershell script to click, hold, release the Craft button for "bounce back mk1" stims and crafted like 10,000 of them overnight then dismantled the stack for components to sell for cash (yes, I know I could just mod the save but I was trying to play that first game thru without "cheating") and now my save file is over 11MB and it takes a good 70 seconds to load the save game. Not a huge deal but a pain in the ass.
I was looking thru the tool and it would appear that inventory items, or any item picked up really, is giving an increasing unique int/long value:
image
So I'm assuming that huge jump in the node hex is like, the thousands of stims I crafted...

So, my question is, is the game just keeping all that crap in the save file? Since it's all been dismantled is there a way to just cut out that part of the binary so my save file is not so big? Or is it just padded with zeroes or something? I couldn't really figure it out by looking thru the decompressed binary file myself (it's >40MB lol).

Thanks folks, keep up the good work!

No save game Version Check

Currently Savegame Version is not checked.
The version should be checked and a warning displayed if untested Version is loaded.

Triggering Dropdowns by pressing the starting letter of setting, causes issues

tried editing the crash revolver to be a non quest item, i clicked the field that sait True, and pressed F which triggered it switching to False, but that did not change the Raw Value from 1 to 0 , causing a black screen on loading that edited save ,
it only worked when i selected the down arrow on the drop down and selecting False manually, wich instantly also changed the Raw value from 1 to 0

Save that cannot be decompressed. (DEBUG ASSERTION FAILED)

This save was made in 1.04. The game loads it just fine so I'm pretty sure it's not corrupt.

Basically, I made a new corpo femV to see how the appearance looks in the save. This is a save made literally the first time I get control after the intro dialog / mirror scene ends.

ManualSave-5.zip

I tried first using v0.0.3-alpha and then pulled the source and tried what was latest master at the time: commit 3a4f89d. Both had the same issue.

---- DEBUG ASSERTION FAILED ----
   at CyberCAT.Core.ChunkedLz4.Lz4Chunk.Read(Stream inputStream) in R:\Games\Cyberpunk 2077\CyberCAT\CyberCAT.Core\Classes\Lz4Chunk.cs:line 40
   at CyberCAT.Core.Classes.CyberPunkSaveFile.Decompress(Stream input) in R:\Games\Cyberpunk 2077\CyberCAT\CyberCAT.Core\Classes\CyberPunkSaveFile.cs:line 65
   at CyberCAT.Forms.Form1.uncompressButton_Click(Object sender, EventArgs e) in R:\Games\Cyberpunk 2077\CyberCAT\CyberCAT.Forms\Form1.cs:line 38
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at CyberCAT.Forms.Program.Main() in R:\Games\Cyberpunk 2077\CyberCAT\CyberCAT.Forms\Program.cs:line 19

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.