Home
Infernio edited this page Feb 16, 2024
·
65 revisions
Welcome to the Wrye Bash development wiki!
Feel free to edit at your heart's content with content:
- Explaining obscure parts of Bash's code
- Detailing your workflows with git
- Discussing refactoring
Please wrap your posts at 80 chars (or approximately) so it is easy to review changes ! Old pages will be wrapped at some point. New lines are rendered as a single space from the markdown engine used in the wiki.
People looking to contribute to the code should read at least:
- [dev] Set up Pycharm for wrye bash and/or [dev] Setting up VS Code for wrye bash
- [dev] Coding Style
- [dev] Deciphering Source Filenames
- [dev] Commit guidelines
- [git] Syncing a Fork with the main repository
- [github] Branching Model & Using The Repository
Organized by category and topic - recommended to read each section from top to bottom:
-
dev: Content aimed at developers
-
Development Tips:
- [dev] Set up Pycharm for wrye bash - Configuring PyCharm, the recommended Wrye Bash development tool
- [dev] Setting up VS Code for wrye bash - Configuring VS Code, another option for Wrye Bash development
- [dev] Python links - Collection of useful links regarding gotchas and tidbits about python
- [dev] Gotchas - Common python/Wrye Bash gotchas (could use some love)
- [dev] Profiling - Copy-pastable code for profiling in Python
- [dev] Parent call tracing - Helpful recipe for figuring out where profiled calls are coming from
-
Game-Specific Info:
- [dev] Distant LOD - Distant LOD for Oblivion
- [dev] Microsoft Store Games (Legacy) - Everything we know about legacy Windows Store versions of games.
-
The
gui
API- [dev] High DPI - Intro to and guidelines for high DPI in Wrye Bash
-
Guidelines:
- [dev] Coding Style - Our code style (mostly PEP8), Dos and Don'ts
- [dev] Commit guidelines - Some guidelines for how and when to commit
- [dev] Dependency Guidelines - Guidelines for when and how to use third-party dependencies
- [dev] GUI Design Guidelines - Guidelines for GUI design in WB
- [dev] Image Guidelines - How to contribute images
- [dev] Unicode Guidelines - Gotchas wrt. unicode - now pretty much obsolete
- [dev] Translatable Strings - Guidelines for writing translatable strings that make translators' lives easier
- [dev] Type hints - Initial thoughts on type hints in the codebase.
- [dev] What to call released builds - Formal reference, the release scripts (see Building Wrye Bash below) handle this automatically
-
Misc Internals:
- [dev] Bash Tags and the BOSS API vs LOOT API - An overview of how Wrye Bash retrieves its Bash Tags suggestions
- [dev] Fomod for Devs - Comprehensive overview of the FOMOD format
-
[dev] LICENSE-THIRD-PARTY - On the format of
LICENSE-THIRD-PARTY
- [dev] Settings Versions - Overview of all versions of the settings format that Wrye Bash has used over the years
- [dev] The types of refreshes - Explanation what the types of 'refresh' are and how each one works
-
Navigating the Codebase:
- [dev] Deciphering Source Filenames - Navigating Wrye Bash's weird file and folder names
- [dev] Building Wrye Bash - How to build a standalone release
- [dev] Acronyms - Navigating the alphabet soup of Bethesda game modding
-
Patchers:
- [dev] Long and Short FormIDs - What 'long FormIDs' and 'short FormIDs' are
- [dev] PBash Patching Procedure - How PBash does its magic
- [dev] Tweak Pooling - Very detailed dive into how tweaks are implemented
- [dev] CBash vs PBash - A short overview of PBash and CBash differences - purely historical, CBash has been removed
-
Records:
-
[dev] OFST - The
TES4
subrecordOFST
and everything we know about it. - [dev] Plugin Format Introduction - Overview of the binary format used by Bethesda's plugin files
- [dev] Record Header Flags - Compendium of all possible record header flags.
-
[dev] OFST - The
-
Development Tips:
-
git: Tips and Tricks for Git
- [git] Tips - General tips about anything and everything
- [git] Using rebase to squash oops commits before pushing - Don't push a ton of fixup commits, follow this guide instead
- [git] Solving conflicts - How to resolve conflicts when rebasing, cherry-picking, etc.
- [git] Syncing a Fork with the main repository - How to sync your fork, intended for new contributors
- [git] Issues with line endings preventing checking out, merging, etc. - If you need to go back to really old commits and encounter bogus text file changes, read this
- [git] Submodules - Log of an experiment with using submodules for Wrye Bash's binary files
- [git] Pre-commit Hooks - Setting up git pre-commit hooks to run quick checks on commit
-
github: Tips and Tricks for GitHub
- [github] Reporting a bug - How to make helpful bug reports
- [github] Branching Model & Using The Repository - How to manage the branches on this repo
-
[github] Branching and merging to dev using rebase - The road towards getting your code on
dev
;) - [github] Creating and Managing Issues - How to manage this repo's issue tracker
- [github] Making A Release - How to build and publish a new Wrye Bash version
-
guides: Guides, duh
- [guide] Installing and managing BodySlide with Wrye Bash - Exactly what it says on the tin
- [guide] Wrye Flash to Bash Migration Guide - How to move from valda's Wrye Flash forks to our version
- [guide] Running Wrye Bash on WINE (Arch Linux) - How to get Wrye Bash running (mostly) on Wine
- [guide] Wrye Bash and Mod Organizer - Ancient and outdated, might be still be useful to someone