This is a work in progress reverse-engineered reimplementation of the Sleeping Dogs: Definitive Edition (Engine) with a help of the debug symbols (PDB file) that was shipped with the release of Steam version. We use only headers so it can be easily embedded and included to any side project. The goal is to provide a functional codebase that resemble original engine.
Resources:
Game Executable • Debug Symbols (PDB)
If you feel fit to contribute, feel free to create a pull request.
But please keep your pull request small and understandable and make sure to follow a few rules listed below:
- Keep your code simple and readable
- - Always use brackets after control structure.
- If the scope of a control structure is one line, keep the opening bracket on the same line.
- Blatantly copied pseudocode is not allowed; you should rewrite the pseudocode to some degree so it is understandable and readable. - Use correct file for declaration/definition
- - If you define a class or function, it should be placed in the appropriate file based on debug symbols.
- If multiple classes need access to each other, you should organize them so they can be included as a single header. In some cases, you will need to create your own file, such as string_impl.hh, where string.hh is the original definition. - Use original naming if possible
- - If you are reimplementing a class or function, please use the original name from the debug symbols. If there are multiple pieces of code that could be inlined function, it is best to declare it as own function and come up with your own name.
These rules are not strongly enforced, but you should still follow them to some degree to avoid wasting the time of the person who will review the pull request. This person is also not responsible for teaching you C/C++ or the basics of decompilation. Furthermore, as the author of the pull request, you should ensure that the code you write works as intended and does not introduce issues in the future. Taking the time to test and validate your code before submission helps maintain code quality and eases the review process.
This project won't include a license as it involves working with debug symbols and pseudocode which means parts of the code may be identical or very similar to the original code.
This code is intended solely for educational, documentation, and modding purposes.
We do not condone piracy or the use of this project for commercial activities.
We kindly request that any derivative work remains open-source, with proper given credits.