This week we’ve been working on various open source libraries developed for Logic World.
This week I’ve continued work on unifying Logic World’s client and server into a single application. Specifically, I’ve been looking at our networking system. Networking is when the client and server communicate, exchanging information.
The networking system in LW is based on packets. These packets were previously composed of a separate writer and reader method, one in the server and the other in the client, which means that the client only knows how to read a certain packet but not how to write it. This week I’ve been working on unifying the packets into regular C# classes with fields representing the data, making them cleanly defined.
Now we needed a way to serialize and deserialize the packets to and from the network stream, which is where SECCS (Speedy & Easy C# Class Serialization) comes in. This is a new library I’ve been working on which allows you to read and write arbitrary C# objects to and from a buffer object (for example a
BinaryReader), leveraging its raw read and write methods. SECCS is nice and fast, and it is also very easy to use, as it doesn’t require any additional attributes on the classes you want to serialize.
With this new library, it is much easier to write code for communication between the game client and server. This is really nice for us, but it’s also nice for modders who want to do the same thing.
Last week I divided Logic World’s codebase into various assemblies. This week, I’ve continued this work by further organizing the code and getting it ready for open sourcing. When we open source a chunk of the code, that means we’re releasing that code publicly and allowing anyone to use and modify it for their projects.
Here are all the open source modules we’ve developed so far for Logic World. There will probably be more before the game comes out.
Tool for generating, reading and modifying configuration files.
Backend for console interfaces in C#, such as the one used in Logic World’s server software.
Fancy Pants Console
LICC frontend for the Unity engine, seen in action here.
Utility for quickly turning arbitrary data into binary and back. Described above in detail.
An extremely flexible system for handling input in Unity. Supports many advanced keybinding features.
Tool for providing translations of your game’s menus for Unity.
Tool for registering sound effects and playing them in 3D space, with randomized pitch and volume variation.
Utility for generating interface implementations at runtime.
Jimmy’s Unity Utilities
A bunch of small utilities for writing code in Unity. Status: released
See you next Wednesday!