Getting Started
Frosty Toolsuite is the most advanced modding platform for games running on DICE’s Frostbite engine. We welcome contributions from the community to help improve the toolsuite.Prerequisites
Before you begin contributing, ensure you have the following installed:- Git - Download for Windows
- Visual Studio 2019 (or later)
- .NET Framework 4.8
Development Setup
Open the Solution
Navigate to the
FrostyEditor directory and open FrostyEditor.sln with Visual Studio 2019.Configure Build Settings
Set the build configuration to
Developer - Debug and platform to x64.If prompted with a retarget window, close it without making changes.
Build Configurations
Frosty Toolsuite supports multiple build configurations for different release stages:Developer - Debug
Developer - Debug
- Platform: x64
- Output Path:
bin/Developer/Debug/ - Defines:
TRACE;DEBUG;FROSTY_DEVELOPER - Debug Symbols: Enabled
- Use Case: Active development and debugging
Release - Alpha
Release - Alpha
- Platform: x64
- Output Path:
bin/Release/Alpha/ - Defines:
TRACE;FROSTY_ALPHA - Optimizations: Enabled
- Use Case: Alpha testing releases
Release - Beta
Release - Beta
- Platform: x64
- Output Path:
bin/Release/Beta/ - Defines:
TRACE;FROSTY_BETA - Optimizations: Enabled
- Use Case: Beta testing releases
Release - Final
Release - Final
- Platform: x64
- Output Path:
bin/Release/Final/ - Defines:
TRACE - Optimizations: Enabled
- Use Case: Production releases
Project Structure
The Frosty Toolsuite consists of several core projects:Contributing Guidelines
Code Style
- Follow the existing code style in the project
- Use meaningful variable and method names
- Add comments for complex logic
- Keep methods focused and concise
Making Changes
Make Your Changes
- Write clean, maintainable code
- Test your changes thoroughly
- Ensure builds succeed without warnings
Commit Message Format
Use clear, descriptive commit messages:Add:for new featuresFix:for bug fixesUpdate:for improvements to existing featuresRefactor:for code refactoringDocs:for documentation changes
Plugin Development
Frosty supports an extensive plugin system. To create a new plugin:- Start with BlankPlugin: Use
Plugins/BlankPluginas a template - Reference Required Projects: Your plugin must reference
FrostySdkandFrostyCore - Implement Plugin Extensions: Use available extension points:
TypeEditor- Custom property editorsMenuExtension- Add menu itemsTabExtension- Add custom tabsAssetDefinition- Define custom asset typesCustomHandler- Custom mod handlers
Plugin Extension Points
Editor Extensions
Editor Extensions
TypeEditorPlugin- Custom property type editorsAssetEditorPlugin- Full asset editorsDataExplorerContextMenuItemPlugin- Context menu items
UI Extensions
UI Extensions
MenuExtensionPlugin- Custom menu itemsTabExtensionPlugin- Custom tab panelsOptionExtensionPlugin- Settings pages
Data Extensions
Data Extensions
AssetDefinitionPlugin- Custom asset typesLocalizedStringDatabasePlugin- Localization supportCustomHandlerPlugin- Mod handling logic
Testing
Before submitting a pull request:- Build all affected projects successfully
- Test with at least one Frostbite game
- Verify no regressions in existing functionality
- Test both Editor and Mod Manager if applicable
License
By contributing to Frosty Toolsuite, you agree that your contributions will be licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.All content, name, code, and assets are licensed under CC BY-NC-ND 4.0.
Community
Contributors
Frosty Toolsuite is made possible by contributions from:- CadeEvs
- wannkunstbeikor
- Dyvinia
- CosmicDreamsOfCode
- Brawltendo
- MrJTGaming
- KrrKsThunder
- AllyJaxx
- Petrifyingz
- Mophead01
- zhpete
- mlg556
- NatalieWhatever
- Clonedelta
- And many more!
Acknowledgements
Special thanks to GalaxyMan2015 - without his years of work and dedication, Frosty would not exist and Frostbite modding would very well still be in the dark ages. Special thanks to munchyfly for providing endless support to our users.Getting Help
If you need help with contributing:- Check the Troubleshooting guide
- Review the FAQ
- Ask in the community Discord
- Create a discussion on GitHub