Create an account

Floowandereeze And Modding v2.09  

Upload: 10 Jul 2023, 10:46
Created by: Eglen [X]
Uploaded by: Aqxaro
Floowandereeze And Modding v2.09

This tool is currently able to replace card sleeves, deluxe sleeves, card arts, icons, home arts and most fields with an user-given image, making the process of creating custom assets trivial. It's also able to swap mates and field assets.

After downloading the mod, start "Floowandereeze & Modding.exe" found in the "Floowandereeze & Modding" folder.

Then select your game directory by informing it's folder after pressing the first button. If the given folder is correct, the game's sleeves should appear as in the example bellow:

Sleeve Usage:
Now you can click on the image of the sleeve you want to replace and it will appear on the right side of the screen. To replace the selected sleeve, inform the image to use by pressing the second button. For example, I will replace the Xyz sleeve:

Press the "Replace" button to replace the sleeve with your image (REPLACEMENT CANNOT BE REVERSED):

That's it, the sleeve should be already modded in-game, remember to make a desktop shortcut to access the tool easily.

Card Face Usage:
Select what type of card to replace and inform the image to use, similar to sleeve replacement. Bear in mind that only the card frame will be replaced; text, icons and art aren't affected directly.

Field Usage:
Make sure to backup your field.

Works exactly as sleeve replacement does but there is an added option to apply a filter on top of your image to highlight zone placement.

The extraction option will extract the image used by the game so to use it as a backup you need to either crop it or replace the asset directly.

Field Filter Editing:

This is only recommended if you know basic image editing. The app has the functionality to apply a filter on top of images when creating a field mod, this filter is made to be as generic as possible and some may want to change it, which is easy to do.

There are two files in the app's main folder: "base.png" and "base_inv.png" which are overlaid on the image to be used, editing these images will change the resulting filter accordingly. There are a few caveats to editing these files, which are the reason this functionality isn't in the app itself:

The edited filter will be lost if a backup is not generated before an app update, as the original images would overwrite the edited ones;
As the filter image is simply pasted on top of the original image changing it's size would make the zones be misaligned;
The texture being changed to apply the custom field image is used by multiple field parts, as can be seen by extracting it. This naturally means that if the filter is edited in unintended areas there could be side effects.

Icon Usage:
Works exactly as sleeve replacement does. Please keep in mind that part of your image will be covered and cropped by the icon frame.

Home Art Usage:
Select the original art to be replaced on the Combobox and inform your image. Currently the background of the art can't be modified through this tool, so consider that before replacing as that part of the art will be lost.

Some aspects of home art replacement:

  • Every home art has it's own proportions, off-screen parts, and empty space. Automatically fitting an user-given image is currently not viable, so images are pasted in the top-left corner of the home art and made to fit it's size;
  • The images used by the game may be bigger than what is seen on the screen. In such cases if your image has the same proportions as the game's it will naturally have parts hidden too;
  • If the image provided is smaller in pixel count than the game's art it may look small on-screen;
Home Background Usage:

Simply inform the image to use and press the replace button. A preview of your current background is provided for reference.

Field Assets and Mates Swapping

Select both parts to be swapped using the left and right buttons of your mouse then click the "swap" button. An important point to consider is that the field texture replacement may not work properly if certain fields are swapped due to the difference between their UV maps. It should work properly again if the fields are returned to their original places before changing the texture.

Updating:
Delete the old app and download the new one. The game path will have to be informed again.



Notes:
  • As mentioned above, the tool can't undo edits, so make a backup if you want to reverse your mod;
  • There is an "extract" option for every image so backups can be made easier, exported images are placed in the "images" folder inside the same folder containing the app's .exe;
  • There is a "copy" option for most assets for easier redistribution and stronger backups. Copied asset bundles are placed in their corresponding subfolder inside the "bundles" folder found in the same folder containing the app's exe;
  • Most visual aspects of the app, such as the layout and the background, have been made with it's starting window size in mind. While the window is made re-sizable for minimum accessibility standards, visual aspects may be compromised as a result;
  • Both Card Faces and the Home Background are in the unity3d game file, so their replacements may be reverted if you download an external mod that change that file;
  • Your image needs to be a .png or .jpg for it to properly work.


Known Issues:
  • There may be missing cards in the card art replacement. If you can't find a specific card, please contact me;
  • The .exe was made for Windows 10 or above, there could be compatibility issues with earlier versions of Windows;
  • Some features don't work with uncensored versions of the game as the asset names are different, a patch would have to be made (such as https://www.nexusmods.com/yugiohmasterduel/mods/384 by Sakuya_Saki).
Technical Stuff:

This section is dedicated to more advanced content that would either require specific skills or not interest most users.

Japanese Version Patch Creation:

To create a Japanese version patch, understanding of JSON and the MD file structure is necessary. The reason some cards aren't replaced correctly is that the ones in the app's data are the global ones, which aren't the same as the Japanese ones. This data is contained in the "data.json" file found in the same folder containing the app's .exe.

As a simplified example, this is how the app knows where to look for the Dark Magical Circle, Dark Magician and Dark Magician Girl arts:


{
"name":
{
"Dark Magical Circle": "9112eaca",
"Dark Magician": "4adbcd1b",
"Dark Magician Girl": "e3c62cbf"
}
}

As can be observed the key => value relation represents the card name, which is displayed in the app, and the bundle to look for it's art, so to get the image used for "Dark Magician Girl" the app looks for it in the "4adbcd1b" bundle which is not where her ocg image is found so it won't be changed.

A patch would replace the bundle name with the ocg one making the app look there so changes would be reflected in the Japanese version, this can be accomplished by obtaining the data yourself and replacing the whole card names list following the given data structure or patching the cards that have different bundles. The explanation bellow is if you opt for the second option as there isn't anything else to be done in the first option, the app should be patched already.


To find cards that have different bundles for each version an approach is to look for "card/images/illust/ocg" in their container, there are multiple ways to do so.

Bellow is an example based on how I obtain card names on new game updates without the token name conversion for brevity, there may be differences in the soup selector, as this was made for the Brazilian KONAMI database.

import UnityPy
import json
import os
from selenium import webdriver
from bs4 import BeautifulSoup
from random import randint
from time import sleep

DATA_PATH = "your game data path up to the 0000 folder"
driver = webdriver.Chrome("your webdriver path")
cards = {}

for num in range(256):

fPath = os.path.join(DATA_PATH, hex(num)[2:].zfill(2))

for root, dirs, files in os.walk(fPath):

for file_name in files:

file_path = os.path.join(root, file_name)
env = UnityPy.load(file_path)

for obj in env.objects:

if obj.container is not None:

if "card/images/illust/ocg" in obj.container:

data = obj.read()
driver.get("https://www.db.yugioh-card.com/yugiohdb/card_search.action?ope=2&cid="
+ data.name)
page = driver.page_source
soup = BeautifulSoup(page)

for a in soup.findAll('div', attrs={'id':'cardname'}):

name = a.find('h1')
trueName = name.find('span')
cards[trueName.text] = file_name

# Sleep to avoid IP banning
sleep(randint(1,3))

with open('cards_id.json', 'w') as fp:
json.dump(cards, fp)

Either by basing yourself in the example given or other means you should have a list of card names and their bundles, so the final step is to replace their values in the original "data.json" file. If your names are exactly the same as the ones in the app it should be simple to replace the values in the JSON that have the names as their keys.

The process to replace other assets such as card sleeves is simpler as finding them in a tool like AssetStudio and replacing the bundle value by hand is viable because they should be few enough.

Comments
The minimum comment length is 10 characters.