Today is a monumental day. Today is a day of rejoicing. Today is a day of celebration. Because today, I am proud to announce the release of PatchIt! 1.0 Stable, the first version ready to be used by the public: you! 😀
If you don’t recall, PatchIt! is a standard yet simple way to package and install LEGO Racers mods. I wrote PatchIt! in pure Python 3 code, meaning it is small, possibly cross-platform (I haven’t tested this claim *grins*), and fast. I also developed my own patch format (*.PiP) to hold all mod details. To read more about PatchIt!, please read my other blog post.
The Beginnings of PatchIt
PatchIt! has its origins in a different program with a somewhat similar goal written by someone else. It’s called Patchman, a CFG editing utility with the ability to install mod for LEGO Rock Raiders. While I do not own LRR, I still commented on the program, saying there needed to be a Racers version to support all the new mods.
When Racers modding began, the few mods were made by the same few people, who long knew how to install them. However, word got out, and suddenly a bunch of people who did not know about Racers modding wanted to make and install mods. The established mod makers tried to establish a standard way of explaining the installation process, but everyone has their own style of doing things. Further more, while all new mods had the instructions available, it was getting redundant to type it over and over again.
While reading the details of a new mod, the creator wrote something that stuck to me:
We should have some sort of sticky for this, so people aren’t expected to post there own installation instructions over and over.
I thought back to what I said about Patchman, and how I had been following some Python courses but didn’t have anything to write. That’s when it hit me: why don’t I write the Racers version of Patchman! I need something to write, plus it would help me learn and help the Racers modding scene at the same time!
Thus PatchIt! was born.
The Changes to PatchIt
I began writing PatchIt! on January 26, 2013. Beta 1 (which was released the same day I wrote it under the name LEGO Racers Mod Installer) was a very simple version, relying on 7-zip (an awesome program, BTW) for ZIP extraction, hard-coded mod details, and the need to compile a EXE to install it unless the Py script was run directly. In short, it was a quick and dirty, non-programmers nightmare.
I knew I needed to do better, and that’s what I did in Beta 2. I rewrote the entire code base to support my new-found vision for PatchIt:
Provide a standard yet simple way to package and install LEGO Racers mods
- Ask for the LEGO Racers installation ensure one exists at that location, and store it as a plain text file in the same folder as PatchIt! to be used as the mod installation directory, and to create a completely portable (read: thumb-drive) application.
- Create a PatchIt! patch by entering the mod name, version, author, and description, and point it to the modded files. Automatically compress the files into a normal ZIP archive, and write the details to a plain text patch file (.PiP), using the name and version for the filenames.
- Install a PatchIt! patch by selecting the .PiP file, confirm the installation, and automatically decompress the ZIP archive directly into the LEGO Racers installation.
After a single week of work, February 2, 2013, I had completed Beta 2. Thanks go the new code base, I had already achieved the first part of my vision, the LEGO Racers installation directory. I had also begun the ZIP compression and extraction process, but it again relied on 7-zip and hard-coded data. Naturally, this did not suit me or fit my vision The latter was justified by the unwritten PiP format, but the former had a different reason. If it were possible, I wanted to make PatchIt! cross-platform, and that would mean using only standard Python modules. I also, for various reasons, did not want to use 7-zip in the final version.
Rioforce and I brainstormed and drafted a PiP file format that night, and thus began the long and grueling process known as originally as Beta 3, but changed to 1.0 Stable. I faced numerous obstacles in the next month, from getting the ZIP compression and extraction working, to adding a first-run check and properly reading the new settings file, to instructing the code to look for the ZIP archive in the same folder as the PiP file, and many, many more issues. Code would break at the slightest change, I would have to hunt through multiple revisions to find out what happened (thank goodness for Git revision history!), and some sections seemed impossible to complete. Multiple times I had to just walk away from it and take a break because I could no longer think straight because I was on the computer since 10 am… After I finalized the PiP file format and mods were already being prepared for PatchIt, I had to amend it to fix a character limit. These frustrating experiences continued right up until the final touches.
In the middle of all this, I set a release date: February 26, 2013. Since Beta 1 came out on the 26th, I chose because if I could complete it by that day, I would have written it in a little over a month, which would be a huge boost for me and a pretty good milestone for a beginning programmer.
And here I am, February 21, 2013, 5 days before the one month anniversary of the start of PatchIt!, and I am finally ready to make the first stable release! 😀
With extensive, detailed documentation on the PiP format and the code itself, a command-line style (it’s not pure command line; remember, there is a difference!)) UI complete with file/folder dialog boxes, LEGO Racers gameplay tips, and some PatchIt! Extras to start your Racers modding adventures (more on them later), PatchIt! is ready to be your first choice for mod installation and packaging of your very own Racers mods.
The Future of PatchIt
But, if you know me well enough, you know that I’m not done until I am.
Although I’m proud of this release, there are still plenty of things I want to do with PatchIt! The first goal, which has been known since the start, is to write a complete GUI to remove the command-line style UI. Second, reformat the PiP file format to accommodate longer descriptions and add a new field. Third, fix any bugs that came up from splitting up the code into separate modules near the end. Fourth, over all improvements to the code. There’s not planned release date for V1.1 Stable, but I’ll finish it… eventually. 😛
Now for a little thing known as PatchIt! Extras. These are simply mod packs that I have received permission from the creators to rehost and distribute as an optional download to enhance your PatchIt! experience. If you don’t already have a mod to install, download one of these to get started. While there are not many launch titles available, I do hope to add more in the near future.
The PatchIt! Extras launch titles are:
- Nyan Cat-Athon
This mod, created by JimbobJeffers, reskins Knightmare-Athon to an absolute Nyan Cat themed track. Complete with the Nyan Cat’s theme song (which I made by request), this mod will either release your inner cat or anger your inner dog.
- Royally Crafted Raceway
This mod by Segatendo rekins Royal Knights Raceway in Minecraft textures, creating what could be the calmest mod for this track.
If you read all the text from the beginning to now in one sitting, congratulations! You have a lot of patience and free time. It took me a few hours split into various segments to type most all this out on WordPress for iOS! 😛 If you read the first few paragraphs, skipped to this section, but intend to come back, you rock. 🙂 If you skipped to the section just as soon as your saw this post, you are a sad, strange little person, and you have my bidding. Farewell! 😛
PatchIt! is available in an EXE installer (recommended download), a plain ZIP archive (if you can’t download or run the installer), and the plain source code, which you can run with a Python 3.3 interpreter, and of you feel like it, improve it and commit it to the GitHub project (and I would hope you commit it if you improve it :)).
The PatchIt! Extras are available in a plain ZIP archive only, but I hope to add a download function into the installer.
Download links are available on my Downloads page.
Well, that’s everything you need to know about this history, current state, and future of PatchIt! I hope I didn’t bore you too much. 😛 As always, if you have any feedback, questions or comments, leave them! I want to hear from you!