I have fixed a huge performance bottleneck in Map:contains() and MapObject:contains(). Essentially, because of how tables work, I loop through the entire table to find the location of a MapObject within these tables. Unfortunately, the only fix I have for this is to use the hashmap feature of tables, and when adding something to a Map or MapObject's contents, I create a special index of the specific MapObject with an associated value of true. When removing something, I just clear that entry out of the table.

I also implemented the beginning stages of the CharacterManager.
Closer to full character saving.
Better checking of character existence.