In this tutorial, I’ll be covering the basics of working with “.bin” files, including: what bin files are, what’s inside of them, how they look, how to maneuver them, and what you can and can’t do with bins.
If you encounter any issues with this tutorial or you don’t understand part of it, you can ask for help on the Killerskins-Discord server
or you can contact me directly: Crocosmia#2871
Table of Contents
- Required tutorials
- Required tools
- Written tutorial
In order to follow this tutorial you must understand and be able to follow the following tutorials:
I do not know everything there is to know about “.bin” files. My understanding of bins comes from months of working with them, and relentlessly asking people questions about them. There might be parts of bins that I’m not able to fully explain, parts that I haven’t deciphered yet, and even parts that I’m misinformed on. The terminology I use is also manufactured, as I have no formal experience with configuring/coding. If you can contribute anything to this tutorial, please do not hesitate to message me on Discord so I can add any discoveries you find to it (you will be credited). My goal is to demystify bin files so that more of you can make amazing particles, such as these Space Groove Karma particles created by Bearded Shepherd and configured by me, or these Project Miss Fortune particles created by ZiGiZaG (back when troybins were used in place of bins) and restored by me:
1) What are “.bin” files?
“.bin” files are the files used in League of Legends to, essentially, make the game run properly. Paired with textures and particles (.dds files), models (.skn/.scb/.sco files), skeletons (.skl files), animations (.anm files), and a host of other files, League of Legends goes from a mess of folders to a functional program.
A simple way of looking at it is that bins are instruction manuals that tell the game how to use 3D models, textures, etc. Neither can exist without each other.
2) What’s inside of a “.bin” file?
Generally speaking, “.bin” files hold sentences written in a certain way so that the game uses them as directions. Some bins hold directions for how long animations should last on champions, while others may hold directions for how long a champion’s particles should appear on screen before they disappear. Below is an example of one of those directions, called “rate,” which tells the game a quantity of whatever it may be referring to:
In this case, the game is being told to make 4 of something. It could be 4 Ashe arrows, 4 Zed shurikens, or even 4 carrots. Regardless, with this line of config, the game knows that it needs to create it 4 times.
3) How are “.bin” files structured?
Good question. Below is a picture of one of Karma’s particles bins, and next to it, a guide of what each line of config refers to:
There are also animation bins, which are structured like this:
Additionally, we have skin bins, which are usually structured like this (but also sometimes have particles in them, and will mimic the particle bin structure):
4) How do I open, edit, and save “.bin” files?
At the top of this tutorial, I linked two programs necessary for opening bins. First, you’ll need Ritobin, which converts bins to python files. They need to be converted in order to open them in Visual Studio Code (along with its python extension), which is my editor of choice for working with bins. You can also use Notepad++, TextEdit, etc. Ritobin will also be used after you’ve made edits to python files to reconvert them to bins, so that the game loads them properly. Check out the tutorial “Extracting Config Files” if you’re confused.
5) What can I do with “.bin” files? What can’t I do?
As shown at the beginning of this tutorial, a lot! You can also make smaller scale changes, such as changing a champion’s particles to different colors, textures, shapes, velocities, etc. Though not everything is programmable, I’d argue at least 75% of anything you could imagine seeing in League of Legends can be configured to work.
Although lots of changes can be made within bins, some things cannot be done. You cannot alter the way an ability works. If I want Rengar to leap 10000 units further than he currently does while jumping out of his ultimate, that cannot be configured. Not only would this be cheating, but this information is stored server side. You might, however, be able to configure the illusion of Rengar doing that by adjusting velocities.
Additionally, you cannot configure anything having to do with the League of Legends client
6) I’m ready to start working with “.bin” files. Any advice?
My best advice is to play around with them. Try adding one or two zeroes to a few “rate” config lines in a particle bin, and then loading it in-game. Maybe adjust mTickDuration numbers in animation bins, and see what effects they have on a champion’s animations. Consider changing skinscale in a skin bin and seeing the effects. If you’re feeling comfortable navigating bins, check out Yoru’s tutorial on particle swapping and see if you can successfully swap emitters and create brand new particle effects! The possibilities are almost endless.