Unity Version Tool

The latest updates and documentation can be found on the Unity Build Tool wiki page.

One of the biggest problems with having 59 Unity projects is keeping them all up to date.  I knew many of my Unity projects were out of date and needed to be updated to the latest version of Unity, but I didn’t have a good method for detecting which ones.  I had previously developed build and upload scripts in Ruby to create Windows BAT files to compile a project for Windows, MacOS and Linux and upload those builds to Itchio using Butler.  However, those BAT files could not make Unity WebGL builds.

The Unity Version Tool that I developed solves these problems.  It was developed in Ruby using the GTK+3 graphical libraries.

  • Pressing Scan Projects will check all subfolders in the specified project directory for Unity projects.
  • If a project does not match the current version of Unity or PlayMaker, then the project will be highlighted in red.  Default version values can be set in the unity_version.config file.  The version number of the project is checked from ProjectSettings/ProjectVersion.txt and files ending with the .csproj extension.
  • Pressing Update Version will attempt to read the current version of Unity installed on the system (<User Profile>/AppData/Local/Unity/Editor/Editor.log) and store it in the unity_version.config file.  The PlayMaker version information is read from Assets/PlayMaker/Editor/PlayMakerWelcomeWindow.cs.
  • Individual projects can be selected by checking the boxes next to the project names, or all projects can be selected or deselected using the checkbox in the header row.
  • Builds for the selected projects can be compiled for Windows, MacOS, Linux, or WebGL.
  • WebGL builds require a script to be generated from the included template, which is embedded into the project for compilation, since there is not a Unity command line option for making WebGL builds.  It uses the “-executeMethod” command line parameter to execute project script.
  • All builds for a project can be deleted by pressing Clear build folder.
  • By default, the Unity editor will start on compilation.  I may add “-batchmode” as an option in the future to compile without starting the Unity editor, but I’ve noticed issues lately with using the “-batchmode” Unity parameter.  If a project is compiled and it is not using the latest version, then Unity will prompt to update the project.  Therefore, it is advisable to update the projects (which are highlighted in red) by opening them before selecting the compile option.
  • Note that while updating the Unity project to the latest version, there may be multiple .csproj files that still return an old version of Unity.  I’ve found that the .csproj files (such as Assembly-CSharp.csproj, Assembly-CSharp-Editor.csproj, and <project>.csproj) can be safely deleted in most cases, and Unity should create new versions of those files the next time a script is accessed in the Unity editor.  Hopefully, I will add an option to remove old .csproj files.
  • After updating a Unity project, it may be necessary to make a change (such as moving a GameObject in the Hierarchy and moving it back) in order for the ProjectSettings/ProjectVersion.txt to be updated.  I don’t know if there are any drawbacks to manually updating the version number in that file, so I wouldn’t advise doing it.

Using this tool, it is possible to compile multiple project for a selected platform at once.  This is a process that had previously taken me hours or days for WebGL projects, since each project would need to be opened, updated, platform setting changed, and then compiled.  It still takes a long time, but at least now I can kick it off before going to bed and just let it run.

Download the Unity Version Tool  (Ruby and GTK+3 required to be installed on system, which is not included)

KMap Solver

New Online KMap Solver

This new and improved KMap solver was rewritten using Javascript and HTML5 Canvas.  This tool should be much more efficient and responsive than the original version that I wrote twelve years ago.  Click the cells to switch each value between a zero and one.

The prime implicants are updated in real time to the right.  Essentials are displayed in red and Non-essentials are displayed in orange.  Click the circle next to each implicant to display which cells that implicant covers.

Currently, this tool only solves 4×4 Karnaugh maps.  I hope to update it to allow the user to specify the number of rows and columns.

Original Java KMap Solver Applet

This is a simple Java applet that I wrote to solve Karnaugh maps.  Simply click on a cell to change the value from zero to one.  Once cells are selected their color changes to red.  The “circles” to solve the KMap are displayed in a list to the left of the grid.  Select a value from that list will display that “circle” in blue.

Unfortunately, over time Java applets have become much more restricted in web browsers.  In order to run this version, you will need to change your Java security settings to allow applets to run in your browser.  Newer browsers may disable Java applets entirely, which is why I rewrote this tool using Javascript and HTML5 Canvas.

Old KMap Solver Java applet (to be uploaded)

Requires Java Runtime Environment plugin installed and enabled in web browser.

Encryption Project


This is a Java applet that I developed while at Georgia Tech for my Computer Security course.  The software encrypts text messages using various types of ciphers.  The user can select the encryption algorithm from the drop down list at the top and enter a text message in the box below.  When an encryption algorithm is selected, the options for that algorithm are displayed.  The bottom box displays the message after encryption, and the user can select to display the message in ASCII, hexadecimal, decimal, or binary.  On the right side, information related to the encryption process is displayed.

Visit the Encryption Project page to run the applet and display related documentation.  Credit goes to Chris Ingram for much of the project documentation.


The Java Runtime Environment must be installed and enabled in web browser to run the applet.