View the signed version here

Tappy has been my main focus for a bit more than a week now, and it's quickly becoming one of my favorite projects I think I will work on this year.

Tappy is a Terraria server written in C++, with support for Lua scripting. The reverse engineering process has been quite a fun ride, although certainly had aid from research previously done by the Pryaxis team. The project is in no finished or production-ready state, but what I am already able to do is quite powerful.

Tappy primarily consists of two parts: the Server, and LibTerraria -- a generic library for interfacing with Terraria datatypes. LibTerraria is what deserializes the packets, has useful Terraria-esc container classes, and other data types used by the game. (I don't think I need to explain what Server does) All of this is done with only a single dependency: Lagom.

Lagom is the name of a set of libraries used in SerenityOS, compiled for generic *nix systems. (specifically, the AK and LibCore libraries) This let's me take advantage of smart pointers inside of AK, and the event-driven IO/TCP stack inside of LibCore. I truly believe that there is no C++ library that makes networking easier than using C syscalls, except for how Lagom handles it. I would have spent half this project fiddling with networking if it weren't for Lagom and Serenity :^)

Why would I work on this, and who would want this? Glad you didn't ask:

This project is completely open source, and will always be. I am certainly looking for contributors, but with such infancy in a project, there's a good chance things will change drastically between a few commits. There are a lot of non-functioning pieces, so you're free to pick something that you want to see implemented and hack away! Put your name on it! I love getting credit for my changes in software, so if you've made any change, put your name at the top of the file copyright.