- Download Fiddler Classic https://www.telerik.com/download/fiddler (install to
C:/Program Files (x86)/Fiddler/
as the YgoMasterFiddler project file uses this path) - Download and unzip the YgoMaster source code https://github.com/pixeltris/YgoMaster/archive/refs/heads/master.zip
- Run
YgoMaster-master/YgoMasterFiddler/Build.bat
- Copy
YgoMaster-master/YgoMasterFiddler/bin/Debug/YgoMasterFiddler.dll
toC:/Program Files (x86)/Fiddler/Inspectors/
- Run Fiddler, select a game network request and click the two
YgoMaster
tabs (request / response)
Certain logs will be dumped as json into %USERPROFILE%/Documents/Fiddler2/Captures/YgoMasterUpdate/
when the log is clicked and both YgoMaster
tabs are selected.
Obtain all logs from the Steam version of the game. Not YgoMaster.
- Open the game using Steam (reopen it if it's already open)
- Enter the game and log
/ayk/api/System.info
//ayk/api/User.entry
//ayk/api/User.home
- Copy the following files from
YgoMasterUpdate/
toYgoMaster/Data/
CardCraftableList.json
,CardList.json
,Regulation.json
,RegulationIcon.json
,RegulationInfo.json
,StructureDecks.json
,TitleLoop.json
- Run
YgoMaster.exe --extractstructure
to extract those structure decks from the previous step into individual files which get placed into theStructureDecks
folder. - Delete
YgoMaster/Data/StructureDecks.json
- Click
SOLO
to log/ayk/api/Solo.info
- Copy
YgoMasterUpdate/Solo.json
toYgoMaster/Data/Solo.json
- Log
/ayk/api/Duel.begin
for each duel (loaner deck only) - Log
/ayk/api/Solo.detail
for each duel - Copy all files in
YgoMasterUpdate/SoloDuels/
toYgoMaster/Data/SoloDuels/
- Copy all files in
YgoMasterUpdate/SoloNpcDeckIds/
toYgoMaster/Data/SoloNpcDeckIds/
- Run
YgoMaster.exe --merge-deckids
to updateSoloNpcDeckIds.json
based on theSoloNpcDeckIds
files
To log this data faster add "AlwaysWin": true
to ClientSettings.json
to win duels on the live game by surrendering.
For updating Shop.json
...
- Create a new Steam account
- Complete the tutorial
- Go to the SOLO screen and enter
solo_clear
into the client console - this will take some time to complete and will complete all solo content - Keep buying Master Pack bundles / packs until you have no gems
- Go to the deck editor and enter
dismantle_all_cards SuperRare UltraRare
into the client console - this will dismantle every SR/UR you own - Go to the shop and enter
craft_secrets
into the client console - this will craft every missing secret pack - In the shop enter
auto_free_pull
into the client console - this will open every free pull secret pack (you will need to re-enter the shop and do the command multiple times until no more packs open) - Re-enter the shop to log
/ayk/api/Shop.get_list
- Save the log into
YgoMaster/Data/ShopDumps/Shop.json
- In game select
Master Pack
and clickCards included in this pack
. LogGacha.get_card_list
to generateGacha-10000001.json
and copy it into ShopDumps - In game select
Legacy Pack
and clickCards included in this pack
. LogGacha.get_card_list
to generateGacha-10003001.json
and copy it into ShopDumps - Run the
YgoMaster.exe --mergeshops
command to mergeYgoMaster/Data/ShopDumps/
intoYgoMaster/Data/AllShopsMerged.json
- Copy everything from
YgoMaster/Data/AllShopsMerged.json
and paste it intoYgoMaster/Data/Shop.json
replacing anything that already exists (except from the top entries)
For any new packs with new pack images...
- In the client console run
packimages
which will createdump-packimages.txt
in the game folder. Copy the contents intoShop.json
under the json entryPackShopImages
.
For shop pack odds...
- Log the odds from clicking the button in-game and copy the data into
ShopPackOdds.json
.
Docs/AltCardsYdk.json
is used for mapping missing alt art card ids when generating YdkIds.txt
- Run
YgoMaster.exe --unknown-alt-cards
which will print a list of missing alt card ids (or nothing if there's nothing new) - Navigate to ygoprodeck.com (or duelingnexus.com/wiki), search the card, copy the alt art image url, take the number in the url to get the ydk id
- Update
Docs/AltCardsYdk.json
manually based on the found card id / ydk id
NOTE: Card ids >= 30000 seem to be used for promotions / announcements and aren't real cards.
- In the client console run
carddata
which should createYgoMaster/Data/ClientDataDump/Card/Data/{CLIENT_VERSION}/
, move and rename the{CLIENT_VERSION}
folder toYgoMaster/Data/CardData/
. You must do this while using theEnglish
language setting. - Run
YgoMaster.exe --updateydk
to updateYdkIds.txt
.
- To update PvP card data you must follow the above YdkIds.txt instructions. If you don't do this any newly added cards wont function correctly in PvP as the duel engine requires
YgoMaster/Data/CardData/
being up to date.
- In the client console run
itemid
which will createItemID.json
in the game folder. - Copy it over to
YgoMaster/Data/
and remove any invalid entries (some make the client crash / are blank).
- In
ClientSettings.json
setShowConsole
totrue
and run the YgoMasterClient. - You will probably want to inject into the live version of the game while doing this. See LiveMods.md. This is a requirement if you want to complete solo with the
AlwaysWin
setting.
Client updates typically occur every few months (see https://steamdb.info/depot/1449853/manifests/). Client changes often break YgoMaster and this requires coding knowledge to fix. The following can be used to get some insight about the changes to the client:
- In the client console run
updatediff
which will createupdatediff.cs
in the game folder. - Run a diff against that file and
/Docs/updatediff.cs
. Update relevant code throughout YgoMaster based on the changes and then insert the newupdatediff.cs
. - After client updates enable
ReflectionValidatorValidate
inClientSettings.json
and check the output. Then disable it and enableReflectionValidatorDump
and run again to updateReflectionDump.json
(after fixing any broken code from the previous step). - Update
MultiplayerPvpClientDoCommandUserOffset
/MultiplayerPvpClientRunDialogUserOffset
in Settings.json to fix controlling the opponents hand in PvP (TODO: Provide a tool to do this)
The following needs to be updated in ClientSettings.json if using custom content (sound images). See UnityPlayerPdb.cs
- UnityPlayerRVA_AudioClip_CUSTOM_Construct_Internal
- UnityPlayerRVA_AudioClip_CUSTOM_CreateUserSound
- UnityPlayerRVA_AudioClip_CUSTOM_SetData
- UnityPlayerRVA_DownloadHandlerTexture_CUSTOM_Create
- UnityPlayerRVA_DownloadHandlerTexture_CUSTOM_InternalGetTextureNative