Logic World Wednesdays: The Open Source Edition

by @MouseHatGames 2019-10-09

This week we’ve been working on various open source libraries developed for Logic World.

SECCS - Felipe

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.

Open Source Preparations - Jimmy

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.

SUCC
Tool for generating, reading and modifying configuration files.
Status: released

LICC
Backend for console interfaces in C#, such as the one used in Logic World’s server software.
Status: released

Fancy Pants Console
LICC frontend for the Unity engine, seen in action here.
Status: unreleased

SECCS
Utility for quickly turning arbitrary data into binary and back. Described above in detail.
Status: released

LogicUI
Tools for building menus in the Unity engine, like this one or this one or this one.
Status: unreleased

LogicSynth
Code to generate audio in Unity; this is what we’re using for Singers and Drums.
Status: not done

LogicInput
An extremely flexible system for handling input in Unity. Supports many advanced keybinding features.
Status: unreleased

LogicLocalization
Tool for providing translations of your game’s menus for Unity.
Status: unreleased

LogicAudio
Tool for registering sound effects and playing them in 3D space, with randomized pitch and volume variation.
Status: unreleased

ClassImpl
Utility for generating interface implementations at runtime.
Status: released

Jimmy’s Unity Utilities
A bunch of small utilities for writing code in Unity. Status: released


If you’d like to receive an email each time we post one of these blogs, you can sign up for our newsletter. Be sure also to wishlist Logic World on Steam and join the official Discord.

See you next Wednesday!

Read previous Logic World Wednesdays


4 comments
@Frain_Breeze 2019-10-10

AAA devs: wha? Nah we ain’t giving our hard work away for free, develop it yerself ya asshats. Indie devs:

@Batman 2019-10-10

AAA devs: makes games with inappropriate content

Indie devs: makes open source libraries with inappropriate names

@Batman 2019-10-10

What about this website. Will this be open source too?

@pipe01 2019-10-10

Yes, we definitely want to open source it in the future