Skip to content
C# HLSL
Branch: master
Clone or download
dexyfex Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum c…
…ulling, Added Disable embedded collisions flag name on Entity form
Latest commit 4559312 Mar 29, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CodeWalker.Core Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum c… Mar 29, 2019
CodeWalker.ErrorReport Added CodeWalker.ErrorReport standalone tool Jun 7, 2018
CodeWalker.WinForms TextBoxFix: unused usings removed; ctrl-y & crtl-z features added; (#39) Feb 25, 2019
Forms Added Save button to ModelForm, fixed material editor not updating al… Mar 22, 2019
GameFiles Moved all GameFiles to CodeWalker.Core Feb 24, 2018
Project Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum c… Mar 29, 2019
Properties Waiting for textures to load before rendering Jan 9, 2019
Rendering Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum c… Mar 29, 2019
Resources Created CodeWalker.Core Feb 24, 2018
Shaders FBX importer v1, fix for YNDs DLC loading, fix for renamed NG encrypt… Mar 20, 2019
Toolbar R26_dev8 - First public commit Sep 21, 2017
Tools FBX importer v1, fix for YNDs DLC loading, fix for renamed NG encrypt… Mar 20, 2019
Utils Moved tools forms into Tools folder, removed unused Materials.txt Jan 10, 2019
Vehicles Vehicle viewer progress Jan 13, 2019
World Snap to ground and grid options Feb 25, 2018
icons R26_dev8 - First public commit Sep 21, 2017
.gitattributes R26_dev8 - First public commit Sep 21, 2017
.gitignore R26_dev8 - First public commit Sep 21, 2017
AboutForm.Designer.cs Menyoo import to ymap, Scenario accel grid ExtendedRange bits Sep 24, 2017
AboutForm.cs R26_dev8 - First public commit Sep 21, 2017
AboutForm.resx Added self to credits :) Feb 21, 2018
App.config Waiting for textures to load before rendering Jan 9, 2019
CodeWalker Menu.cmd Renamed .bat to .cmd to match modern naming guidelines, added batch f… Feb 21, 2018
CodeWalker RPF Explorer.cmd Renamed Explorer cmd file Mar 21, 2019
CodeWalker Vehicles.cmd R30_dev6 Jan 13, 2019
CodeWalker.csproj Model Material Editor Mar 21, 2019
CodeWalker.sln Added CodeWalker.ErrorReport standalone tool Jun 7, 2018
ExploreForm.Designer.cs FBX importer v1, fix for YNDs DLC loading, fix for renamed NG encrypt… Mar 20, 2019
ExploreForm.cs Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum c… Mar 29, 2019
ExploreForm.resx FBX importer v1, fix for YNDs DLC loading, fix for renamed NG encrypt… Mar 20, 2019
KeyBindForm.Designer.cs R26_dev8 - First public commit Sep 21, 2017
KeyBindForm.cs R26_dev8 - First public commit Sep 21, 2017
KeyBindForm.resx R26_dev8 - First public commit Sep 21, 2017
MapForm.Designer.cs R26_dev8 - First public commit Sep 21, 2017
MapForm.cs R26_dev8 - First public commit Sep 21, 2017
MapForm.resx R26_dev8 - First public commit Sep 21, 2017
MenuForm.Designer.cs Relocated RPF binary search to BinarySearchForm. Added undo operation… Dec 24, 2017
MenuForm.cs New ProjectForm, moved and renamed old ProjectForm Mar 3, 2018
MenuForm.resx Relocated RPF binary search to BinarySearchForm. Added undo operation… Dec 24, 2017
Notice.txt FBX importer v1, fix for YNDs DLC loading, fix for renamed NG encrypt… Mar 20, 2019
Program.cs Vehicle files progress Jan 11, 2019
README.md Restyle Readme Feb 23, 2018
Readme_Src.txt R26_dev8 - First public commit Sep 21, 2017
SelectFolderForm.Designer.cs Added GTA V folder check to main entry point in Program.cs, improved … Feb 21, 2018
SelectFolderForm.cs Switched everything to new GTAFolder class and removed all direct ref… Feb 21, 2018
SelectFolderForm.resx R26_dev8 - First public commit Sep 21, 2017
Settings.cs R26_dev8 - First public commit Sep 21, 2017
SettingsForm.Designer.cs Switched everything to new GTAFolder class and removed all direct ref… Feb 21, 2018
SettingsForm.cs Switched everything to new GTAFolder class and removed all direct ref… Feb 21, 2018
SettingsForm.resx Switched everything to new GTAFolder class and removed all direct ref… Feb 21, 2018
StatisticsForm.Designer.cs Improved RenderableCache item invalidation, Added Performance Statist… Dec 5, 2018
StatisticsForm.cs Improved RenderableCache item invalidation, Added Performance Statist… Dec 5, 2018
StatisticsForm.resx Improved RenderableCache item invalidation, Added Performance Statist… Dec 5, 2018
Todo.txt Updated TODO Dec 21, 2018
WorldForm.Designer.cs HD textures (WIP), vehicles.meta gtxd loading Jan 5, 2019
WorldForm.cs Added MetaNames by 0x1F9F1 - from companion app Jan 13, 2019
WorldForm.resx HD textures (WIP), vehicles.meta gtxd loading Jan 5, 2019
WorldInfoForm.Designer.cs Added Occlusion mode and render YmapBoxOccluders (OccludeModels todo) Dec 14, 2018
WorldInfoForm.cs Added Occlusion mode and render YmapBoxOccluders (OccludeModels todo) Dec 14, 2018
WorldInfoForm.resx R26_dev8 - First public commit Sep 21, 2017
WorldSearchForm.Designer.cs R26_dev8 - First public commit Sep 21, 2017
WorldSearchForm.cs New Project Window Mar 3, 2018
WorldSearchForm.resx R26_dev8 - First public commit Sep 21, 2017
packages.config Updated DockPanelSuite and FastColoredTextBox to latest versions. Use… Dec 16, 2018

README.md

CodeWalker by dexyfex


This program is for viewing the contents of GTAV RPF archives.

Requirements:


  • PC version of GTAV
  • DirectX 11 and Shader Model 4.0 capable graphics
  • Windows 7 and above, x64 processor
  • 4GB RAM (8+ recommended)
  • .NET framework 4.5 or newer (download from Microsoft)

Using the app:


On first startup, the app will prompt to browse for the GTAV game folder. If you have the Steam version installed in the default location (C:\Program Files (x86)\Steam\SteamApps\common\Grand Theft Auto V), then this step will be skipped automatically.

The World View will load by default. It will take a while to load. Use the WASD keys to move the camera. Hold shift to move faster. Drag the left mouse button to rotate the view. Use the mouse wheel to zoom in/out, and change the base movement speed. (Zoom in = slower motion) Xbox controller input is also supported. The Toolbox can be shown by clicking the << button in the top right-hand corner of the screen. T opens the main toolbar.

First-person mode can be activated with the P key, or by pressing the Start button on the XBox controller. While in first-person mode, the left mouse button (or right trigger) will fire an egg.

Entities can be selected (with the right mouse button) by enabling the option on the Selection tab in the toolbox. The details of the selected entity, its archetype, and its drawable can be explored in the relevant sub-tabs. (This option can also be activated with the arrow button on the toolbar).

When an entity is selected, E will switch to edit mode (or alternatively, edit mode can be activated by switching the Widget mode to anything other than Default). When in edit mode, Q will exit edit mode, W toggles the position widget, E toggles rotation, and R toggles scale. Also when in edit mode, movement is still WSAD, but only while you're holding the left mouse button down, and not interacting with the widget.

Ctrl-Z and Ctrl-Y will Undo and Redo entity transformation (position/rotation/scale) actions.

The Project Window allows a CodeWalker project to be created (.cwproj), and files added to it. Editing entities while the Project Window is open will add the entity's .ymap to the current project. Ymap files can then be saved to disk, for use in a map mod. New ymap files can also be created, and entities can be added and removed. Also supported for editing are .ynd files (traffic paths), trains .dat files (train tracks), and scenarios (.ymt). (A full tutorial on making map mods is out of the scope of this readme.)

A full explanation of all the tools in this application is still on the to-do list! The user is currently left to explore the options at their own peril. Note some options may cause CodeWalker to crash, or otherwise stop working properly. Restart the program if this happens! Also note that this program is a constant work in progress, so bugs and crashes are to be expected. Some parts of the world do not yet render correctly, but expect updates in the future to fix these issues.

Menu mode:


The app can also be started with a main menu instead of loading the world view. This can be useful for situations where the world view is not needed, and the world loading can be avoided. To activate the menu mode, run CodeWalker with the 'menu' command line argument, e.g: CodeWalker.exe menu

Explorer mode:


The app can be started with the 'explorer' command line argument. This displays an interface much like OpenIV, with a Windows-Explorer style interface for browsing the game's .rpf archives. Double-click on files to open them. Viewers for most file types are available, but hex view will be shown as a fallback. To activate the explorer mode, run the command: CodeWalker.exe explorer Alternatively, run the CodeWalker Explorer batch file in the program's directory.

Main Toolbar:


The main toolbar is used to access most of the editing features in CodeWalker. Shortcuts for new, open and create files are provided. The selection mode can be changed with the "pointer" button. Move, rotate and scale buttons provide access to the different editing widget modes. Other shortcuts on the toolbar include buttons to open the Selection Info window, and the Project window. See the tooltips on the toolbar items for hints.

Project Window:


The project window is the starting point for editing files in CodeWalker. Project files can be created, and files can be added to them. It is recommended to create and save a project file before adding files to be edited and saved. The tree view displays the files in the current project, and their contents.

YMAP editing:


New YMAP files can be created via the project window, and existing YMAP files can be edited. To edit an existing single player YMAP, first change codewalker DLC level to patchday2ng, and enable DLC. Open the toolbar, and enable Entity selection mode. Enable the Move widget with the toolbar Move button. Open the project window with the toolbar button. Changes made while the project window is open are automatically added to the project. Select an entity to edit by right clicking when the entity is moused over, and its bounding box shown in white. Move, rotate and/or scale the selected entity with the widget. When the first change is made, the entity's YMAP will be added to the current project. If no project is open, a new one will be created. The edited YMAP file can be saved to the drive using the File menu in the project window. After saving the file, it needs to be added into the mods folder. Using OpenIV, find the existing YMAP file using the search function (note: the correct path for the edited YMAP can be found in the selection info window in CodeWalker, when an entity is selected, look for YMap>RpfFileEntry in the selection info property grid). Replace the edited YMAP into a copy of the correct archive in the /mods folder. Newly created YMAPs can be added to DLC archives in the same manner.

Traffic Paths (YND) editing:


[TODO - write this!]

Train Tracks editing:


[TODO - write this!]

Scenario Regions (YMT) editing:


[TODO: write this!] See https://youtu.be/U0nrVL44Fb4 - Scenario Editing Tutorial

Regarding game files: (FYI)


The PC GTAV world is stored in the RPF archives in many different file formats. As expected, some formats are used for storing rendering-related content, for example the textures and 3d models, while other formats are used for storing game and engine related data.

The main formats when it comes to rendering GTAV content are:

.ytd - Texture Dictionary - Stores texture data in a DirectX format convenient for loading to the GPU. .ydr - Drawable - Contains a single asset's 3d model. Can contain a Texture Dictionary, and up to 4 LODs of a model. .ydd - Drawable Dictionary - A collection of Drawables packed into a single file. .yft - Fragment - Contains a Drawable, along with other metadata for example physics data.

The content Assets are pieced together to create the GTAV world via MapTypes (Archetypes) and MapData (Entity placements). At a high level, Archeypes define objects that are placeable, and Entities define where those objects are placed to make up the world. The collision mesh data for the world is stored in Bounds files.

The formats for these are:

.ytyp - MapTypes - Contains a group of MapTypes (Archetypes), each defining an object that could be placed. .ymap - MapData - Contains placements of Archetypes, each defining an Entity in the world. .ybn - Bounds - Contains collision mesh / bounding data for pieces of the world.

The EntityData contained within the MapData (.ymap) files forms the LOD hierarchy. This hierarchy is arranged such that the lowest detail version of the world, at the root of the hierarchy, is represented by a small number of large models that can all be rendered simultaneously to draw the world at a great distance. The next branch in the hierarchy splits each of these large models into a group of smaller objects, each represented in a higher detail than the previous level. This pattern is continued for up to 6 levels of detail. When rendering the world, the correct level of detail for each branch in the hierarchy needs to be determined, as obviously the highest detail objects cannot all be rendered at once due to limited computing resources.

In CodeWalker, This is done by recursing the LOD tree from the roots, checking how far away from the camera the node's Entity is. If it is below a certain value, then the current level is used, otherwise it moves to the next higher level, depending on the LOD distance setting. (In the Ymap view, the highest LOD, ORPHANHD, is not rendered by default. The ORPHANHD entities can often be manually rendered by specifying the correct strm ymap file for the area in question in the ymap text box. The strm ymap name can often be found by mouse-selecting a high detail object in the area and noting what ymap the entity is contained in, in the selection details panel.)

You can’t perform that action at this time.