Follow

in this thread i will give a rundown of all my free C# game dev libraries

MoonTools.Structs

Just some basic math dependencies. Position2D deals with the problem of having fractional positions in pixel art based games by maintaining fractional positions as a carryover value. Transform2D is just your bog standard transform matrix data structure, packing position, rotation, and scaling into a single fast structure. In the future this might contain structs for 3D as well.

gitea.moonside.games/MoonsideG

Show thread

MoonTools.Easing

Easing function implementations in single and double precision. Useful for anything that changes based on time. I use it for UI animation, time dilation, and music crossfading right now.

Visualizations of easing functions: easings.net/en

gitea.moonside.games/MoonsideG

Show thread

MoonTools.Curve

2D and 3D Bezier curve math library. Lets you calculate smooth curves using either a struct or static methods. This one is pretty straightforward

gitea.moonside.games/MoonsideG

Show thread

MoonTools.NETPhysFS

A wrapper around the popular physfs virtual filesystem native library. Lets you do some neat stuff like set up virtual paths so you can have mod directories override game content and things like that. Provides super fast zero-garbage iterators and streams for dealing with file data.

gitea.moonside.games/MoonsideG

icculus.org/physfs/

Show thread

MoonTools.Bonk

This is the one I'm most proud of. High performance zero-garbage collision detection. Separates shapes and transforms for maximum flexibility. Provides broad and narrow phase algorithms, and I recently added some fast-path shape tests and sweep testing for rectangles.

gitea.moonside.games/MoonsideG

Docs: moontools-docs.github.io/bonk/

Show thread

MoonTools.Graph

Implementations of various graph theory algorithms. I'm using this to calculate system ordering and pathfinding right now but it has a lot of other potential applications.

gitea.moonside.games/MoonsideG

Show thread

MoonTools.FastCollections

Not much going on here yet, I just needed a fast bitset implementation for my ECS library. Right now it only provides BitSet512 but I'll probably extend it for different sizes later.

gitea.moonside.games/MoonsideG

Show thread

that's it for now. all of these tools are tested and currently being used in production at my studio.

i also have plans to release some FNA-dependent stuff eventually like an audio library. also a brand-new ECS-style architecture model that I am trying to figure out how to make source available without letting my credit get stolen

Show thread

@dankwraith all these makes me want to make a highly performant game with them

@selfsame i low key want to see if we can ship a raspberry pi version of samurai gunn 2. i think it is legitimately possible considering the performance we're getting now

Sign in to participate in the conversation
monads.online

monads.online is a community for goth nerds, aka people who are interested in the intersections of math, art, programming, philosophy, and related topics. this does not include your techbro ass. we also enjoy a healthy amount of shitposting. if you are a techno-materialist, technocrat, or some flavor of capitalist, don't even bother applying. if you are interested in an account please fill out an application, detailing why you are interested in joining, what you have to bring to the community, and your prior, if any, accounts on the fediverse.