Cyberpunk 2077 is a single-player action role-playing game by [[Polish]] developer [[CDProjekt Red]] released in [[2020]].
- Website
- [Wikipedia](https://en.wikipedia.org/wiki/Cyberpunk_2077)
# Notability
It is one of the best selling games of all time. It's had a pretty significant cultural impact and I like playing it.
# Philosophy
## Origin
Cyberpunk 2077 is based on the [[Tabletop Games|TTRPG]] called [[Cyberpunk (TTRPG)|Cyberpunk]] originally released in [[1988]] written and designed by [[Mike Pondsmith]]. Pondsmith also consulted with [[CDProjekt Red]] during development, and had previous experience writing for video games including [[The Matrix Online]] by [[Monolith Productions]].
## Development
> Its total cost to develop and market (including updates and DLC) is reportedly between $436 million and $441 million, making it one of the most expensive video games to develop.
\- Wikipedia article
## Release
The game was released in a completely broken state, but the PC version was quickly patched to playability for many hardware configurations. The [[PlayStation]] version however was pulled from the online store by Sony due to outcry, until it was finally restored over 6 months later.
## Post-Release
[[CDProjekt Red]] constantly patched the game for years after release to fix bugs and add content, adding up to 40 total patches by [[2025-07-01]].[^2]
In [[2023]], the paid DLC [[#Phantom Liberty]] was released to wide acclaim in conjunction with the v2.0 patch.
### Patch 2.0
The v2.0 patch completely reworked the Perk system among many other major changes.
```cardlink
url: https://youtu.be/0uUQAyk-Hf4
title: "Old Skill tree vs The New Skill Tree and more Cyber Punk 2077"
description: "Likes and dislikes about changes made to Cyber Punk 2077"
host: youtu.be
favicon: https://www.youtube.com/s/desktop/f893a131/img/logos/favicon_32x32.png
image: https://i.ytimg.com/vi/0uUQAyk-Hf4/maxresdefault.jpg
```
Personally, I don't enjoy the new one as much, but I understand that the old one was kind of a mess too, but at least it had personality.
### Patch 2.1
Added a working metro fast travel system, though you can't enter stations it just teleports you onto a train.
# Tips
## Command Line Parameters
The launcher can create issues and the start screen adds another step before you can get in game.
```sh
--launcher-skip -skipStartScreen
```
To enable [[#RedMod]] mods by triggering recompilation on start:
```sh
-modded
```
For more known parameters see:
```cardlink
url: https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/users-modding-cyberpunk-2077/the-cyberpunk-2077-game-directory/launch-parameters
title: "Launch parameters | Cyberpunk 2077 Modding"
description: "Launch parameters for Cyberpunk2077.exe (and what they do)"
host: wiki.redmodding.org
favicon: https://wiki.redmodding.org/cyberpunk-2077-modding/~gitbook/image?url=https%3A%2F%2F1427525421-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F4gzcGtLrr90pVjAWVdTc%252Ficon%252F6IEPYZsgCUdBARqiTG6M%252FCyberpunk2077_SteamAvatars_Female-V.png%3Falt%3Dmedia%26token%3Ddd68ccf9-e032-4d63-a604-4aa7694aa507&width=48&height=48&sign=3f8f81d8&sv=2
image: https://wiki.redmodding.org/cyberpunk-2077-modding/~gitbook/image?url=https%3A%2F%2F3889015547-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Forganizations%252F-MP5ijqI11FeeX7c8-N8%252Fsites%252Fsite_zyEgd%252Fsocialpreview%252FIMBgvUmP9q00LR5mryQd%252Fmodding_2077.png%3Falt%3Dmedia%26token%3Df001d132-53f3-4c6a-8c16-76b69d1f42f9&width=1200&height=630&sign=9e7842f0&sv=2
```
## Library Overrides
While `version` is needed by the base game, `winmm` is only needed by [[#RedMod]].
### Using WineCFG
1. Open WineCFG
2. Go to `Libraries` tab
3. Add `version` and `winmm` (native, builtin)
### Using Steam or GoG Galaxy
```sh
WINEDLLOVERRIDES="winmm,version=n,b" %command%
```
## Files
The user settings file is in a binary format.
```sh
user.gls
```
## Environment Variables
See also [[VKD3D#Environment Variables]] and [[Proton#Environment Variables]], though they should no longer be necessary.
### Specifying a GPU
If you have multiple GPUs, this setting may help switch to the correct one. However, enabling it when you only have 1 GPU may cause *problems*.
```sh
DRI_PRIME=1
```
This environment variable is used by many different graphics libraries for switching the GPU, including [[GUI - Mesa]].
### NVidia Graphics Cards
From my research, all of the copy/pasted recommended environment variable settings for rendering are no longer effective for [[NVidia]] GPUs because in the years since they have become the defaults.
### AMD Radeon Graphics Cards
[[RADV]] is the name of the [[Open Source]] [[AMD]] Radeon driver for [[Linux]]. These options will have no effect on [[NVidia]] GPUs.
>[!NOTE]
> I haven't tested these yet, they are just based on recommendations I've seen online for now.
#### Mitigate Stuttering
```
radv_zero_vram=false
```
> "radv_zero_vram=false" helps to mitigate a frametime spike issue that is the result of a Kernel regression introduced in Kernel version 5.19, without this, if your GPU is being heavily taxed in this game, you're going to come across stutters.
\- via YouTube video[^1] comparing Windows and Linux performance
#### Driver Configuration
- https://www.phoronix.com/news/RADV-Ray-Queries-Default
Having a hard time finding explanations for what this environment variable does, with many people disagreeing about what they actually do and which to use. Here are some of the various settings I've seen:
```sh
RADV_PERFTEST=aco
```
```sh
RADV_PERFTEST=gpl
```
```sh
RADV_PERFTEST=dxr11
```
```sh
RADV_PERFTEST=dxr12
```
```sh
RADV_PERFTEST=rt
```
(and `emulate_rt` below)
#### Raytracing
Environment variables that may help, particularly on [[AMD]] cards:
```sh
WINEDLLOVERRIDES=amd_ags_x64=b
RADV_PERFTEST=emulate_rt
```
These via YouTube video[^1] comparing Windows and Linux performance:
```sh
WINEDLLOVERRIDES=amd_ags_x64=b radv_zero_vram=false VKD3D_CONFIG=dxr RADV_PERFTEST=emulate_rt mangohud %command% --launcher-skip -skipStartScreen
Some of you may have noticed that RayTracing is actually available as an option on Linux. Using " VKD3D_CONFIG=dxr RADV_PERFTEST=emulate_rt" helps you enable RayTracing on the RX 5700 XT. However, this video is all about Raster performance comparison, and using these parameters do not alter the results or performance in any way.
"WINEDLLOVERRIDES=amd_ags_x64=b" is used so that you get accurate VRAM usage in MangoHUD and so that the Driver version is properly detected/displayed in the Benchmark results page.
```
The [[VKD3D]] config option should be unneeded as it is now the default.
## Savegame Editor
- https://github.com/Deweh/CyberCAT-SimpleGUI
# Modding
There is a big modding community but it is split between several different modding tools and libraries.
## General Setup
- https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/users-modding-cyberpunk-2077/modding-on-linux
```sh
WINEDLLOVERRIDES="winmm,version=n,b"
```
>[!QUESTION]
>What needs `version=n,b;` WINE override?
The RedModding community recommends using [[Protontricks]] to install `d3dcompiler_47.dll` and `vcrun2022`.
### Troubleshooting
- https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/user-guide-troubleshooting
## Mod Managers
- [[Vortex Mod Manager]] - ([Tutorial](https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/users-modding-cyberpunk-2077/getting-started/vortex-mod-manager))
- [[Mod Organizer 2]] - ([Tutorial](https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/users-modding-cyberpunk-2077/getting-started/mo2-mod-organizer-2))
## Modding Tools
- [[WolvenKit Modding Tools]]
- https://github.com/WolvenKit/WolvenKit
- World Builder
- https://www.nexusmods.com/cyberpunk2077/mods/20660
# Core Mods
## Red4Ext
Red4Ext calls itself a "script extender". What it seems to do is add hooks to the game executable at runtime and expose those hooks as [[C++]] functions for modders to use.
- https://www.nexusmods.com/cyberpunk2077/mods/2380
- https://docs.red4ext.com/mod-developers/creating-a-plugin
The functionality of the "argument loader" and "task runner" `cybercmd` was incorporated into Red4Ext at some point.
The documentation mentions `RedLib`, a (multiple) header-only library which adds a ton of [[C++]] templates, macros, and aliases to make things more ergonomic.
- https://github.com/psiberx/cp2077-red-lib
### Log File
```sh
Cyberpunk 2077\red4ext\logs\red4ext.log
```
## CET
Cyber Engine Tweaks adds [[Lua]] scripting to the game. It can use anything in the `RTTI` ([[C++]] Run-Time Type Information) including that which has been added by other modding tools.
Depends on [[#Red4Ext]].
### Log File
```sh
Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\cyber_engine_tweaks.log
```
## REDscript
[[REDscript]] is an object-oriented scripting language that based on [[Swift]] with [[Python]]-esque annotations (similar to [[GDScript]]). It is implemented in [[Rust]]. It requires semicolons even though [[Swift]] does not. It does not closely resemble the actual scripting language of the [[#RedMod]] official tools.
These scripts need to be compiled to bytecode, which are then loaded by the engine as if they were compiled [[#RedMod]] scripts.
- https://github.com/jac3km4/redscript/
While [[REDscript]] has no dependencies, it can be used with [[#Red4Ext]] classes and is featured prominently in the [[#Red4Ext]] documentation.
### Log File
```sh
Cyberpunk 2077\r6\logs\redscript_rCURRENT.log
```
## Codeware
> Codeware is a library and framework for creating redscript and Cyber Engine Tweaks mods.
Depends on [[#Red4Ext]].
- https://www.nexusmods.com/cyberpunk2077/mods/7780
- https://github.com/psiberx/cp2077-codeware/wiki
## Audioware
Audioware provides a way to add new sounds to the game.
Up until when Audioware was released in [[2024]] the only way to add new sounds to the game was via the official [[#RedMod]] tools, which pretty much no one likes.
Depends on [[#Codeware]] and [[#Red4Ext]].
- https://www.nexusmods.com/cyberpunk2077/mods/12001
- https://cyb3rpsych0s1s.github.io/audioware/
The documentation is *very nice* and easy to read.
It lets modders add new sounds via a [[YAML]]-based manifest system which it loads at startup and provides on demand to scripts via the standard game `AudioSystem` class. It also adds `AudioSystemExt` and `AudioSettingsExt` [[C++]] classes for additional control over the audio system.
Aside from SFX and music, it also supports separate audios for masc and femme V as well as multiple spoken languages with subtitles. Each audio can be configured to be stored permanently in memory, loaded entirely on demand, or streamed as needed. Volume, start position, end position, looping, speed, panning, fade-in, you name it.
## ArchiveXL
> ArchiveXL is a modding tool that allows you to load custom resources without touching original game files, thus allowing multiple mods to expand same resources without conflicts.
Depends on [[#Red4Ext]].
- https://github.com/psiberx/cp2077-archive-xl
### Log File
```sh
Cyberpunk 2077\red4ext\plugins\ArchiveXL\ArchiveXL.log
```
## TweakXL
> TweakXL is a modding tool and a framework to create mods that modify TweakDB, a proprietary database of REDengine 4, containing essential information about game entities and behavior.
Depends on [[#Red4Ext]].
- https://github.com/psiberx/cp2077-tweak-xl
### Log File
```sh
Cyberpunk 2077\red4ext\plugins\TweamXL\TweakXL.log
```
## Equipment-EX
> Equipment-EX makes use of every single one of the frameworks mentioned above to overhaul CDPR's wardrobe system. Extending it from 6 slots to more than 30, it lets you save an unlimited number of outfits and supports modded items.
Depends on almost everything above.
- https://www.nexusmods.com/cyberpunk2077/mods/6945
- https://github.com/psiberx/cp2077-equipment-ex
## RedFileSystem
>[!NOTE] For modders only.
> RedFileSystem s a library for redscript and Cyber Engine Tweaks mods. It exposes functions to read / write with the file system. It supports UTF8 text and Json formats. Modders can create, read and write files within game's directory. It can be useful to store custom data, for example in a mod's directory.
Depends on [[#Red4Ext]].
- https://www.nexusmods.com/cyberpunk2077/mods/13378
- https://github.com/rayshader/cp2077-red-filesystem
## RedMod
Official modding tools, but not used that much. I've had the most problems with it.
> REDmod is a command line tool developed by CDPR and Yigsoft which can be used to stage installed mods to work with a modded game.
Most mods that rely on RedMod also seem to use [[#Red4Ext]] which is available on [[NexusMods]].
- https://forums.cdprojektred.com/index.php?threads/redmod-tutorials.11107406/ (official forum with a handful of tutorial videos)
- https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-creators-theory/modding-tools/redmod (unofficial docs)
- https://steamcommunity.com/sharedfiles/filedetails/?id=2880923271 (steam guide with links)
### Installation
You must download the installer (on Linux) and install in the WINE prefix, it is available on GoG for direct download and [[Heroic Games Launcher]] will install it for you as DLC.
Needs [[WINE]] overrides.
```sh
WINEDLLOVERRIDES=winmm=n,b
```
### Modding
Modding with RedMod is typically done with [[RedMod Script]] - [[CDProjekt Red]] and [[]]'s own bespoke language that somewhat resembles [[Kotlin]].
[[RedMod Script]] (not to be confused with [[#REDscript]] which is completely different) is clearly directly related to [[Witcher 3]]'s [[WitcherScript]]. Their syntax is identical and many, but not all, of the keywords in the [[WitcherScript]] documentation can be found in the massive corpus of script files they supply.
### Using
It is a whole process to use and debug RedMod, particularly if you aren't using the launcher (see [[#RedMod#Issues]]).
- https://wiki.redmodding.org/cyberpunk-2077-modding/for-mod-users/users-modding-cyberpunk-2077/redmod/usage
### Issues
RedMod is not really used very often in the modding community.
Mods are compiled at startup from the *launcher* (or a [[#Mod Managers|mod manager]]) so if you aren't using a launcher then RedMod mods won't work because they never get compiled.
Compilation pops up a console window as it occurs, which freaks people out that they're getting hacked.
The modding community documentation nebulously claims that some mods aren't compatible, whatever that means.
## Modder Resources
- Unofficial home of [[Witcher 3]] and [[Cyberpunk 2077]] modding: https://redmodding.org/
- Searchable database of functions: https://nativedb.red4ext.com/readme
- Decompiled scripts:
- Searchable database of audio files: https://sounddb.redmodding.org/
# Notable Mods
## CyberMP
A mod in development that attempts to add multiplayer support.
# References
[^1]: https://www.youtube.com/watch?v=RsWrGRVMDXg
[^2]: https://steamdb.info/app/1091500/patchnotes/