Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Carball is an open-source project that combines multiple tools for decompiling Rocket League replays and then analysing them.
pip install carball
git clone https://github.com/SaltieRL/carball
cd carball/
python init.py
git clone https://github.com/SaltieRL/carball
cd carball/
./_travis/install-protoc.sh
python init.py
In MacOS Catalina, zsh replaced bash as the default shell, which may cause permission issues when trying to run install-protoc.sh
in the above fashion. Simply invoking bash should resolve this issue, like so:
git clone https://github.com/SaltieRL/carball
cd carball/
bash ./_travis/install-protoc.sh
python init.py
Apple's decision to replace bash as the default shell may foreshadow the removal of bash in a future version of MacOS. In such a case, Homebrew users can install protoc by replacing bash ./travis/install-protoc.sh
with brew install protobuf
.
One of the main data structures used in carball is the pandas.DataFrame, to learn more, see its wiki page.
Decompile and analyze a replay:
import carball
analysis_manager = carball.analyze_replay_file('9EB5E5814D73F55B51A1BD9664D4CBF3.replay',
output_path='9EB5E5814D73F55B51A1BD9664D4CBF3.json',
overwrite=True)
proto_game = analysis_manager.get_protobuf_data()
# you can see more example of using the analysis manager below
Just decompile a replay to a JSON object:
import carball
_json = carball.decompile_replay('9EB5E5814D73F55B51A1BD9664D4CBF3.replay',
output_path='9EB5E5814D73F55B51A1BD9664D4CBF3.json',
overwrite=True)
Analyze a JSON game object:
import carball
import os
import gzip
from carball.json_parser.game import Game
from carball.analysis.analysis_manager import AnalysisManager
# _json is a JSON game object (from decompile_replay)
game = Game()
game.initialize(loaded_json=_json)
analysis_manager = AnalysisManager(game)
analysis_manager.create_analysis()
# write proto out to a file
# read api/*.proto for info on the object properties
with open(os.path.join('output.pts'), 'wb') as fo:
analysis_manager.write_proto_out_to_file(fo)
# write pandas dataframe out as a gzipped numpy array
with gzip.open(os.path.join('output.gzip'), 'wb') as fo:
analysis_manager.write_pandas_out_to_file(fo)
# return the proto object in python
proto_object = analysis_manager.get_protobuf_data()
# return the proto object as a json object
json_oject = analysis_manager.get_json_data()
# return the pandas data frame in python
dataframe = analysis_manager.get_data_frame()
Carball comes with a command line tool to analyze replays. To use carball from the command line:
carball -i 9EB5E5814D73F55B51A1BD9664D4CBF3.replay --json analysis.json
To get the analysis in both json and protobuf and also the compressed replay frame data frame:
carball -i 9EB5E5814D73F55B51A1BD9664D4CBF3.replay --json analysis.json --proto analysis.pts --gzip frames.gzip
usage: carball [-h] -i INPUT [--proto PROTO] [--json JSON] [--gzip GZIP] [-sd]
[-v] [-s]
Rocket League replay parsing and analysis.
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Path to replay file that will be analyzed. Carball
expects a raw replay file unless --skip-decompile is
provided.
--proto PROTO The result of the analysis will be saved to this file
in protocol buffers format.
--json JSON The result of the analysis will be saved to this file
in json file format.
--gzip GZIP The pandas dataframe will be saved to this file in a
compressed gzip format.
-v, --verbose Set the logging level to INFO. To set the logging
level to DEBUG use -vv.
-s, --silent Disable logging altogether.
If you want to add a new stat it is best to do it in the advanced stats section of the pipeline. You should look at:
If you want to see the output format of the stats created you can look here
Compile the proto files by running in this directory
setup.bat
(Windows) or setup.sh
(Linux/mac)
Linux set python3.6
as python
:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
This assumes you already have 3.6 installed.
Everyone is welcome to join the carball (and calculated.gg) project! Even if you are a beginner, this can be used as an opportunity to learn more - you just need to be willing to learn and contribute.
All contributions end up on the carball repository. If you are new to the project you are required to use your own fork for first changes. If you do not have any previous git / github experience that is completely fine - we can help with it. If we believe that you are comitted to working on the project and have experience in git we may give you write access so that you no longer have to use a fork. Nonetheless, please wait until your contrubtion is ready for a review to make the pull request because that will save resources for our tests and reduce spam. For testing you should use your own fork, but take note that some carball tests may fail on a fork
Currently, there is active creation of the carball wiki on GitHub - it aims to provide all relevant information about carball and development, so if you are a beginner, definitely have a look there. If you can't find information that you were looking for, your next option is the calculated.gg Discord server, where you may send a message to the #help channel.
The carball code is also documented, although sparsely. However, you still may find information there, too.
The main requirement is to run PyTest. If you are using an IDE that supports integrated testing (e.g. PyCharm), you should enable PyTest there. The secondary requirement (to compile the proto files) is to run the appropriate setup
file (setup.bat for Windows, setup.sh for Linux/Mac).
If you've never tested your code before, it is a good idea to learn that skill with PyTest! Have a look at their official documentation, or any other tutorials.
Carball powers calculated.gg, which analyses tens of thousands of replays per day. Therefore, performance is very important, and it is monitored and controlled using PyTest-Benchmarking, which is implemented via GitHub Actions. However, you may see your contribution's performance locally - look into PyTest-Benchmarking documentation. If your contribution is very inefficient - it will fail automatically.
If you wish to see the current carball analysis performance, it is split into 5 replay categories, and can be accessed below:
FAQs
Rocket League replay parsing and analysis.
We found that carball demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.