this project is now inactive
This project is deprecated and superseded by the tad project.
The main differences are as follows:
- The TAD array data model is slightly simplified. The only features that were removed from the GTA model were never used, so TAD is just as powerful as GTA, but the simplifications enable a far more efficient and compact implementation.
- The TAD library focusses on modern C++ and allows efficient and simple code to work on multidimensional arrays. The GTA library just gives you a raw pointer to the data, and its C++ interface is crap.
- Where libgta only handled the GTA file format, the libtad library can handle arbitrary file formats (via plugins; no external library is needed to build the core library). That means every program can import and export any suitable file format.
- The new tad tool can do everything that the old gtatool could and much more, but with a drastically simplified set of just five commands instead of 32.
So what went wrong with GTA? It ignored two important principles: KISS ("Keep it simple, stupid") and YAGNI ("You aren't gonna need it"). This resulted in unnecessary complexity, most of it just to support features that in the end turned out to be irrelevant. The combined count of C/C++ code lines (excluding comments) of libgta and gtatool is four times higher than the combined count of libtad and tad, while the latter are far more powerful and efficient.
I used libgta/gtatool extensively over the past years and learned a lot while writing them, and the good parts of them ended up in libtad/tad in simplified form, so I don't consider this project to be a waste of time. But in order to keep it that way, it's now time to move on.