Boe6's vehicles: Create base files
Last updated
Last updated
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.
.yaml
fileThis file contains the tweak which will register your car with the game's database.
After creation, you can find it in your Wolvenkit project's tab.
Create 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.
$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
:Needs to be set to the appearance name in the vehicleโs .ent
file. The .ent
file can be found inside your source vehicleโs tweak records. Locate the vehicleโs tweaks like before, Vehicle.v_sport2_porsche_911turbo
for 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:
Set with your json
file below.
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
:This is the file we just added in the appearanceName
step 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 at base/โฆ
You can also copy the relative path by right clicking the file and selecting โcopy relative pathโ. Now you can paste it into the .yaml
entry.
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
.json
fileThis file contains the translation strings, such as your car's name and description.
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 at 0
, and โmaleVarient
โ can be left blank.
โsecondaryKey
โ is what your .yaml
is 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 at any point the result is not the one expected you can find the TweakXL log in `(Game Dir)\red4ext\plugins\TweakXL` and the ArchiveXL log in `(Game Dir)\red4ext\plugins\ArchiveXL`. It may not tell you what's wrong in great detail, but it will help you narrow down and fix the issue, or verify that there is none.
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.
.app
fileThis file contains your car's components for the individual appearances. You can read up about https://github.com/CDPR-Modding-Documentation/Cyberpunk-Modding-Docs/blob/main/for-mod-creators-theory/files-and-what-they-do/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.
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]_icon
manufacturer: 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
:
.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.
\
After creation, you can find it in your Wolvenkit project's tab.