An update
Posted: Tue Feb 05, 2013 1:19 pm
Hi guys,
It's been a long time since I've posted. Things are starting to let up in my personal life giving me a bit of time and motivation to continue work on SP. Recently, after taking a look at the changes in CSGO, I realized that integrating these might not be such a trivial task. After reviewing the overall architecture of source.python, we're starting to consider rewriting a large portion of it.
When I first started this project, I didn't expect it to grow so fast. While the architecture I chose can handle the growth, it quickly leaves much to be desired. For example, currently in source.python, there is no way to ensure consistency across engines. We basically #ifdef'd out functionality that existed in CSGO from the OrangeBox build. As you can see for yourself, this led to messy and complicated code.
To ensure that source.python is prepared for the future, we have branched the codebase. You can find that branch here. There are some major changes in this branch that will break backwards compat, but solve a large number of issues going forward. Here are the list of major changes and goals for this new branch:
We're currently just experimenting with the source-python-2 branch right now. The plan is to do things on a small scale and see if it works out. If it does, we'll solidify the design decisions and continue to move forward with the rest of the plugin.
We know things have gotten quiet, but we're not dead! As always, you can check out our progress from 'Source Code' link at the top of our webpage. Feel free to ask us questions or give us critique on potential issues you foresee in our code.
Thanks,
your-name-here
It's been a long time since I've posted. Things are starting to let up in my personal life giving me a bit of time and motivation to continue work on SP. Recently, after taking a look at the changes in CSGO, I realized that integrating these might not be such a trivial task. After reviewing the overall architecture of source.python, we're starting to consider rewriting a large portion of it.
When I first started this project, I didn't expect it to grow so fast. While the architecture I chose can handle the growth, it quickly leaves much to be desired. For example, currently in source.python, there is no way to ensure consistency across engines. We basically #ifdef'd out functionality that existed in CSGO from the OrangeBox build. As you can see for yourself, this led to messy and complicated code.
To ensure that source.python is prepared for the future, we have branched the codebase. You can find that branch here. There are some major changes in this branch that will break backwards compat, but solve a large number of issues going forward. Here are the list of major changes and goals for this new branch:
- The C++ naming convention is unified with Python.
- Method names are all lowercase with underscores between words.
- This is possible because we're creating wrapper classes for every interface we expose.
- Consistency across engines is guaranteed.
- Our goal is to avoid putting conditional compilation in our code as much as possible.
- This makes the codebase much simpler to follow.
- If an older engine doesn't have functionality that a newer engine implements, it will have a stub in place.
- We may try to implement the functionality ourselves but this requires thinking about the long term implications (e.g what if the behavior of the engine changes, etc).
- Our goal is to avoid putting conditional compilation in our code as much as possible.
- Documentation
- Is sorely lacking currently. Since the site died, we lost a lot of stuff (documentation included).
- We're going to do our best to document as we go rather than attempting to do it all at once.
- Still need to come up with a proper format on how to wiki-document methods, classes, etc.
- Better design decisions
- Our initial approach was 'wrap the engine as closely as possible'.
- This goes out the window when what we're wrapping is so wildly inconsistent between engine versions.
- Engine inconsistencies going forward will be exposed by a uniform interface, or stubbed out.
- More helper classes.
- In retrospect, this was a poor decision on our part. We can't guarantee that there will be helper classes for everything but we will do our best to include some when speed / ease-of-use is gained.
- Our initial approach was 'wrap the engine as closely as possible'.
- Support for all current engines.
- The plan is to do an initial release with Orangebox, Left4Dead2, and CSGO support.
- Dyndetours support.
- Will be included in the initial release.
- Need to reconcile how boost python and void pointers work.
We're currently just experimenting with the source-python-2 branch right now. The plan is to do things on a small scale and see if it works out. If it does, we'll solidify the design decisions and continue to move forward with the rest of the plugin.
We know things have gotten quiet, but we're not dead! As always, you can check out our progress from 'Source Code' link at the top of our webpage. Feel free to ask us questions or give us critique on potential issues you foresee in our code.
Thanks,
your-name-here