Welcome to KYBER Development
KYBER is an open-source private server tool for STAR WARS Battlefront II (2017). We welcome contributions from the community and appreciate your interest in making KYBER better.Code of Conduct
This project and everyone participating in it is governed by the KYBER Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].Getting Help
Before you ask a question, please:- Read the available Documentation
- Search for existing Issues that might help you
- Search the internet for answers
- Open an Issue
- Provide as much context as you can about what you’re running into
- Include project and platform versions (Node.js, npm, Flutter, etc.)
How to Contribute
Reporting Bugs
Before Submitting a Bug Report
A good bug report shouldn’t leave others needing to chase you up for more information. Please:- Make sure that you are using the latest version
- Determine if your bug is really a bug and not an error on your side
- Check if there is not already a bug report existing for your bug or error in the bug tracker
- Search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue
- Collect information about the bug:
- Stack trace (Traceback)
- Version of the interpreter, compiler, SDK, runtime environment, package manager
- Your input and the output
- Can you reliably reproduce the issue?
Submitting a Bug Report
When reporting bugs:- Open an Issue
- Explain the behavior you would expect and the actual behavior
- Provide as much context as possible and describe the reproduction steps
- Include the information you collected above
Code Standards
KYBER maintains specific coding standards for different components of the project. See STANDARDS.md for detailed guidelines.Module (C++)
- Follow C++11 standards and the
.clang-formatconfiguration - Brackets must be attached to statements (
if,for, etc.) - Use guards instead of nesting
- Prefix
g_for global variables - Prefix
m_for owned member variables in module classes - All
#definesshould be capitalized snake case - Hooked functions should have the suffix
Hk - Use EASTL types when they can replace std library functions
- Use the game’s memory arenas instead of general heap allocation
- Use
ThreadExecutorwhen interacting with game logic from non-main threads - Use
Mutex<>on fields accessed from multiple threads
Launcher (Flutter/Dart)
- Follow the Effective Dart style guide
- Use
dart formatfor consistent formatting - Prefer
constconstructors wherever possible - Avoid deeply nested widget trees
- Use feature-based architecture (see Architecture page for details)
- Place cubits in
providers/folder with_cubit.dartsuffix - Use GetIt for dependency injection via the global
slinstance
Development Workflow
- Fork the repository
- Create a feature branch from
main - Make your changes following the code standards
- Test your changes thoroughly
- Commit your changes with clear, descriptive commit messages
- Push to your fork
- Open a Pull Request
Next Steps
Building KYBER
Learn how to build all KYBER components
Architecture
Understand the system architecture
Maintainers
- Liam (7reax): API, CLI, Launcher, Proxy
- Magix (MagixGames): Module