Welcome Contributors
Thank you for your interest in contributing to Osiris! This guide will help you get started with contributing to the project.Getting Started
Set up development environment
Follow the Building from Source guide to set up your development environment
Code Guidelines
Technical Requirements
All contributions must adhere to Osiris’s technical constraints:No CRT in Release
Release builds must not use the C++ runtime library. Use the custom CRT implementation in
Platform/Windows/CRTWindows.cpp on Windows.No Heap Allocations
All memory must be allocated statically or from pre-allocated pools. Use the custom memory allocation system in
MemoryAllocation/.No Static Imports (Windows)
Windows release builds must not have static imports. Use dynamic loading or system calls.
No Threads
Do not create new threads. All code must execute on existing game threads.
No Exceptions
Exception handling is disabled in release builds. Use error codes or other error handling mechanisms.
No External Dependencies
Do not introduce third-party libraries or external dependencies.
Code Style
- C++ Standard: Use C++20 features where appropriate
- Naming Conventions: Follow the existing code style in the repository
- File Organization: Place new files in the appropriate directory based on functionality
- Comments: Add clear comments for complex logic, but avoid obvious comments
Compiler Compatibility
Ensure your code compiles on:- Windows: Visual Studio 2022 (MSVC)
- Linux: GCC 11+ or Clang 18+
Making Changes
Feature Development
Understand the architecture
Review the Project Structure to understand where your changes should go
Implement your feature
- Add new features in the
Features/directory - Create platform-specific code in
Platform/Windows/orPlatform/Linux/as needed - Use existing utilities from
Utils/andCommon/
Test thoroughly
- Test on both Debug and Release builds
- Test on all supported platforms if possible
- Verify no regressions in existing features
Bug Fixes
Submitting Changes
Create a Pull Request
- Go to the original Osiris repository on GitHub
- Click “New Pull Request”
- Select your fork and branch
- Fill in the PR template with:
- Clear description of changes
- Motivation for the changes
- Testing performed
- Screenshots/videos if applicable
Pull Request Guidelines
Keep PRs focused on a single feature or bug fix
Ensure all builds pass (Windows and Linux)
Test both Debug and Release configurations
Follow the existing code style
Update documentation if needed
Respond promptly to review feedback
Development Tips
Memory Allocation
Platform-Specific Code
Error Handling
License
By contributing to Osiris, you agree that your contributions will be licensed under the MIT License.Copyright (c) 2018-2025 Daniel KrupińskiThis project is licensed under the MIT License.
Getting Help
If you need help or have questions:- Check existing issues and pull requests
- Review the technical features documentation
- Create a new issue on GitHub with:
- Clear description of your question
- What you’ve already tried
- Relevant code snippets
Community
- Be respectful and constructive in all interactions
- Help other contributors when possible
- Follow GitHub’s community guidelines