Boe6's vehicles: Create base files
Summary
This page will show you how to create the base files that will tell your game about the new car.
Make sure you installed TweakXL.
Create a new tweakXL .yaml file
.yaml fileCreate a new tweakXL file by going to โNew Fileโ in the top left of wkit, just next to the HOME button.

Select TweakDB and TweakXL file. Name it something specific to your mod.
example: โboe6_mini_cooper.yamlโ

Open the .yaml file in your favorite text editor. I used notepad++.
Create a new tweak entry for your model.
Explanation:
$base:
$base:This should be set to the most similar in-game vehicle to your project. This is the tweak record that your car will mirror unless you set your own. You can find tweak names in the wKit tweak browser, search for the source car in the search bar on top. Look for
Vehicle.v_NAME, itโs first entry should be โgamedataVehicle_Recordโexample: โ
Vehicle.v_sport2_porsche_911turboโ
appearanceName:
appearanceName:Needs to be set to the appearance name in the vehicleโs
.entfile. The.entfile can be found inside your source vehicleโs tweak records. Locate the vehicleโs tweaks like before,Vehicle.v_sport2_porsche_911turbofor example, and scroll down for an entry titled โentityTemplatePathโ. It should have an entry similar to this:โ
Base\vehicles\sport\v_sport2_porsche_911turbo__basic_01.entโ
displayName:
displayName:Set with your
jsonfile below.
player_audio_resource:
player_audio_resource: This line is not necessary yet. It can be swapped for another vehicleโs engine sound later with whichever sounds closest to your desired vehicle.
entityTemplatePath:
entityTemplatePath:This is the file we just added in the
appearanceNamestep earlier. To easily get this: in the project explorer, right click on the file and hit rename, or press F2. In the open window you can copy the path starting atbase/โฆYou can also copy the relative path by right clicking the file and selecting โcopy relative pathโ. Now you can paste it into the.yamlentry.
Add your new vehicle tweak to the vehicle_list tweak, so the game can find it.
Note the 2 spaces, followed by a dash, followed by another space, then the !entry. Syntax is very important for .yaml files
Create a .json file
.json fileThis file contains the translation strings, such as your car's name and description.
After creation, you can find it in your Wolvenkit project's Archive tab.
Create a .json file in your project, the same as creating the .yaml. The option is about half way down the โCR2W Filesโ category. Name it the same as your vehicle (e.g. โboe6_mini_cooper.jsonโ)

Youโll want to create your own project path at this point. With your mouse over the new .json file, on the right side hit the yellow โopen in explorerโ button to find the .json file in your file explorer, you should see just your .json file and a โbaseโ folder. Create a new folder/path for your project files here. I created โboe6/mini_cooper/โ. Now in wkit, move your .json into the new folder.
Your project file structure should now be similar to this:

Open the .json in wKit by double clicking.
Under RDTDataViewModel, click on โrootโ : handle:ISerializable.
โroot.rootโ will appear on the right side. Next to handle:ISerializable, click the yellow โCreate Handleโ button.
In the window that opens, click on the bottom text box to type in the following:
โlocalizationPersistenceOnScreenEntriesโ
You can use the autofill. Click โcreateโ
Notice that you have to manually save items in this window. Ctrl+S works. Same rule applies for .ent files, .app files, and any other files edited directly in wkit.
Now under RDTDataViewModel, โrootโ is expandable. Click on the entries array under โrootโ.
Now on the right side, click โCreate Item In Arrayโ
Now we'll customize the new entry. Expand the item options and complete it to these values:
โ
primaryKeyโ can be left at0, and โmaleVarientโ can be left blank.โ
secondaryKeyโ is what your.yamlis referencing. This is the name given that will link to the.yaml. Example: โboe6_mini_cooper_nameโโ
femaleVariantโ is the actual display string. In this case, the vehicleโs name as it should be shown in the menus. Example: โMini Cooper Sโ
Create 2 more entries in the array by right clicking the first array entry we just created, and hit โduplicate item in array/bufferโ as shown:

Swap the 2nd and 3rd string values for your vehicleโs year and description text.
example:
2nd:
secondaryKey: boe6_mini_cooper_info
femaleVariant: fancy description
3rd:
secondaryKey: boe6_mini_cooper_year
femaleVarient: 2003
Final .json should look similar this:

Return to your .yaml file and make sure your vehicleโs โdisplayNameโ is your secondaryKey entry. See earlier .yaml screenshot.
At this point you can test your mod to see if it loads in-game correctly. In general, youโll want to launch the game and test as often as you can. I recommend changing one file at a time and testing each along the way to easily diagnose issues.
In wKit, at the end of the same line as โNew Fileโ, there is an โInstallโ button. For ease of testing, click the down arrow to show options and switch to โInstall and Launchโ. Now press โInstall and Launchโ to test the mod in-game.
Once in-game, you can use the Cyber Engine Tweaks console to add the vehicle to your inventory. Swap โboe6_mini_cooperโ for your vehicleโs Tweak Record.
Command Example:
It should show up as โTESTโ in the vehicle call menu, as we haven't linked the json file to our mod yet. Once you call it, it should drive up with the model you are mirroring.
If the command does not add your vehicle to the vehicle call list, check if the Tweak Records have been saved correctly. To do this, open the TweakDB Editor in the CET overlay. Search for your vehicleโs name, and look for the Vehicle.name Record.
Note that the vehicleโs scan details will not be correct yet. The vehicle model and description will display as loading.
Move your source vehicleโs .ent file into the same file path as your .json file. Copy the fileโs new path starting after โarchive/โฆโ, and update your .yaml tweak record so entityTemplatePath is showing your new path.
Example:
Save the file, and test again by using the Install and launch button. Load a save from before youโve used the summon command in CET console.
Rename the .ent file and update the tweak in .yaml, like last step.
Example:
โboe6\mini_cooper\boe6_mini_cooper_basic.entโ
Now weโll clean up the .ent file. Open it in wkit by double clicking. Under โRDTDataViewModelโ, open the โappearancesโ array.
Find the appearance youโre currently mirroring and make note of it. Then select all the other appearances with ctrl+click, then right click and hit โDelete Selection in Array/Bufferโ. This will leave you with one appearance. Weโll duplicate this later when we get to adding different paint colors.
Edit the โnameโ value to edit the array item. In my case, I change it from โporsche_911turbo__basic_johnnyโ to โboe6_mini_cooper_basicโ
Also update your .yaml tweak to this for the appearanceName value.
Save, Install and Launch, test that it still works.
Add the .app file
.app fileThis file contains your car's components for the individual appearances. You can read up about Appearance: .app files at the link.
Add the .app file to your project. Find it by navigating to the appearanceResource in your main appearance, which links to an .app file. Hit the yellow โAdd File to Modโ button.
Youโll want to clean the appearances from this file as well. In the .ent file, note the appearanceName value. Then look at the .app file for the matching item in the list. That is the appearance we want to keep. The other appearances can be deleted as you did with the .ent file.
Now we can edit the appearanceName to an appropriate value related to our car.
Example:

And update it in your .app file as well in the โnameโ value:

Save and test. Get in the habit of testing often!
Notice the โcomponentsโ list inside the appearance settings. These are the main parts of your vehicle, and all 3D model parts are referenced through here, with a .mesh file.
Move your .app file and rename it to a relevant name.
Example:
โboe6\mini_cooper\boe6_mini_cooper.appโ
Update your .ent file so the appearanceResource value matches the new file name & path.
Install & Test.
Finish setting up tweaks.
Open up your .yaml file.
Weโll start with adding a logo record for the vehicleโs brand/manufacturer. Add a UIIcon Tweak Record, with a $type: UIIcon_Record, atlasPartName, and atlasResourcePath.
Example:
Copy the part name and path from your mirror carโs UIIcon_Record Tweak, which you can find in the tweak browser in wKit:

Weโll update these to custom file names/paths soon.
Next create a Tweak in the .yaml for the vehicleโs brand. This needs $type: VehicleManufacturer_Record, and an enumName.
Example:
Now we need a gui data Tweak Record for our vehicle, with $type: VehicleUIData, productionYear, and info: LocKey#[vehicle]_info.
Example:
The LocKey# references your entry in the .json file.
Now we create a UIIcon Record for the vehicleโs image in the call menu, titled vehicle_icon or similar.
Example:
Now these items can be referenced in the main vehicle tweak record. Add:
icon: UIIcon.[your_vehicle]_iconmanufacturer: Vehicle.[brand]
Example:
Add Virtual Car Dealer Tweak Values. Main settings are dealerPrice, dealerCred, dealerAtlasPath, and dealerPartName. Weโll just do the first 2 for now until we create the images for Virtual Car Dealer. These are added to you main vehicle.
Example:
Note that Tweak record order is important. Those that are referenced by another record need to be defined earlier in the document.
Recommended order:
UIIcon.Brand_Logo:Vehicle.Brand:Vehicle.vehicle_data:UIIcon.vehicle_icon:Vehicle.vehicle:Vehicle.vehicle.[dealer settings]Vehicle.vehicle_list.list:
Example of currently finished .yaml:
Add the .xl file
.xl fileNow we will add our .xl file.
This file lets the game know to use our .json file as localization.
Create a new file in wkit as done before. Under the ArchiveXL category, select โArchiveXL fileโ. It should automatically open in your default text editor. Edit it with just 3 lines, a file structure for the .json file.
Example:
Save and test.
The vehicleโs call menu should now show the vehicleโs name as specified in the .json, as well as the description info text.
Rename your .xl file to something appropriate. Files can cause issues if you use the same file name as another mod. Example:
โresources\boe6_mini_cooper.xlโ
Note that any/all .xl and .yaml files in the resources folder of your project will automatically load in-game.
Last updated