If you don’t care about the particulars here is the Github repository.
I assume you already know what the Extra Builder is. If not, check it out and come back! Got it? Cool, let’s continue.
I was quite satisfied with the tool. As I mentioned before, I do think it is useful. The only problem is that it was “hard coded” for itch only. If you don’t care about itch but want to upload your build to Steam or any other platform the usefulness of the tool drops considerably. The obvious solution seems to be just to add Steam, GameJolt, and other popular platforms. It would be a lot of work and some platforms will be left out. Also what if you don’t want to upload it anywhere but want to process your builds in some other way?
I guess you see the problem. But why should I do the work when users can do it for me? Or rather for themselves? Right? The final step was about running an itch-specific command in the command line. Why not generalize it, and add an ability to run any kind of batch script? That is exactly what I did here.
Of course, it required a bit of refactoring. I ended up separating the BuildSettings and Builder classes into two separate scriptable objects. There were two reasons behind this decision. I don’t know much about editor scripting, and this approach would make my life easier. But more importantly, I thought it would be a more flexible way to configure builds.
The other part was, of course, making sure that users can set their own batch scripts and pass arguments to said scripts. In the end, I think it turned out to be intuitive and user-friendly. At least by the “programmer designing UI/UX” standards.
The only thing that I think might be confusing is passing arguments from the scriptable object itself. For example, you probably want to know the full address of the zip file. So I decided to add a special character before such arguments. So if the field is called zipFile in the script and you want to pass its value to the batch file, you would write %zipFile as an argument. Check the README file for the full list of available fields. Alternatively, you can check the Help section on the scriptable object.
How To Use
Unlike the previous version, ExtraBuilder 2.0 needs editor scripts. I don’t think many people would object to a better interface and extra functionality. Unless they check out the code. As I mentioned before, I don’t have too much experience with editor scripting. I tried to make the code readable and performant. However, I don’t believe I was very successful. If anyone knows how to do it, please let me know!
If you want to get one build at a time, creating a BuildSettings object will be enough. Settings should be self-explanatory. But I also added explanations for each field to the README file. Check it out if you feel lost.
If you are still interested in pushing your project to itch, you can use the PushToItch.bat file. Like the previous version, you will have to provide the zip file location (%zipFile argument), user name, game URL, and the channel name where you want to push the game.
Additionally, you can create a Builder object. This one has a list of BuildSettings objects and can perform multiple builds with a single button. There is an option to start individual builds from this object as well.
There is one more thing I would like to add in the (hopefully near) future: support for Mac and Linux machines. I don’t have a mac, and I don’t want to install Linux on my main PC. So I’m not sure when I will be able to do this. But hey! This project is open-source, so feel free to tinker with it if you feel like it!
Switching to UI Toolkit could be nice. I meant to look into it before, but it didn’t felt intuitive, and I didn’t have a reason to push on. So refactoring ExtraBuilder to use UI Toolking could be a nice challenge.
As always, if you have feedback or a feature request, please let me know! I would love to hear it.