githubEdit

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.

circle-info

Make sure you installed TweakXL.

Create a new tweakXL .yaml file

circle-info

This 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 resources 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.

Explanation:

$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.

circle-info

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

circle-info

This 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โ€

circle-info

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 Tweaksarrow-up-right 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.

circle-info

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

circle-info

This 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:

circle-info

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:

circle-info

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

Now 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โ€

circle-info

Note that any/all .xl and .yaml files in the resources folder of your project will automatically load in-game.

Last updated