The MOSS Initiative

What is “MOSS”?

MOSS stands for “Mythruna Open Source Software” and it’s a project I started a little over two years ago as a way to reorganize how I did Mythruna development. The idea was to break things up into more manageable chunks with the plan to open source those parts. Treating each of these modules as an open source target forces me to be cleaner in my approach but more importantly it makes a bunch of the individual tasks more bit-sized. That’s super important as life has conspired to take more and more of my free time. Being able to work on 15 minute tasks some days is a great way to keep momentum going.

The side benefit is that I get to give more stuff to the community.

Figuring out I was upside down.

One of the motivations for this was the realization that I was probably developing upside down. When I first started Mythruna in 2011 (yes, 2011), I hit the graphics side first because that seemed like the hardest problem to solve. “Make things look great and the rest will come!” Unfortunately, my ambitions for the engine far outstripped this approach. As I gained more experience, I realized I could write a block engine in no time at all and tweaking it is basically a ‘forever process’… but retrofitting my physics ideas (and networking it) into that was a Herculean task. It took the better part of a year just to integrate what I had and it was horrible.

The realization: “It is far easier to build a block world on top of a stable networked physics engine than it is to fit a stable networked physics engine under a block world.”

MOSS was then a way to break up these underpinnings into a set of libraries that would also benefit others.

Open Source has always been good to me.

Those who know me know that I’m no stranger to Open Source. I’ve had one project or another out there since 2001. It is my JME-based projects where this has been the biggest benefit, though.

Early on in Mythruna development (“early” comparatively speaking), I broke out my fledgling GUI and Entity System libraries into Lemur and Zay-ES respectively. Consequently, this code has improved immensely… both from the rigor necessary to package/maintain it and the numerous bug reports and occasional patches I receive from the community. This symbiotic relationship has been really helpful. Furthermore, the constant nudge of bugs/feature requests and seeing my code used in other games has kept the motivation fires burning, even if only at a few embers sometimes.

Other things like SimMath, SimFX, SimEthereal, SiO2, etc. were natural follow ons. They too have benefited much from the community.

What is to be expected?

MOSS in its current form is primarily a convergence of low level ‘block world’ style libraries mixed with a physics engine. This is all broken up into reusable chunks. For example, the physics engine can be used without any block support at all. If you need a simple physics engine that is built around the idea of loading and unloading pieces of the world then “MPhys” is that library and you need only provide whatever shape/collision support needed beyond the simple primitives. On top of that is layered the block physics that allows block-based objects to have accurate collisions and so on. Over all of that are some SiO2 extensions that help tie it together.

The plan is to also package and incorporate some other Mythruna parts like the dialog system, RPG object scripting, etc.. Those things will come later.

When can we see it?

Well, technically you can see it now if you are a patron on Patreon (https://www.patreon.com/pspeed42). By request, I let patrons preview the codebase as it’s already on github and already BSD-style licensed. (If you are a paid-up patron, you need only message me your github user ID to get access. Note: sometimes Patreon does not send me e-mail when new messages are sent there so for quickest access, please also send me an e-mail directly to @simsilica.com or find me on the JME forums.)

I’ve kept the repository private up until now because, for convenience, I’m developing this as one giant suite of libraries, all buildable together. When I provide it to the community, it will be separated more formally with different repositories, build trees, etc. for most sections. Also, the APIs are very much in flux. I prefer to provide something more stable for others.

Barring some new unforeseen life event, I would like to get public releases out this year (2019). Every time I state a plan publicly, I get side-swiped by “life”… so we’ll see. I would really like 2019 to be a watershed year, though.

Why do things take so long?

As many of you know, in 2012 my wife was diagnosed with brain cancer. Following that were several years of surgeries, chemo, and radiation. Meanwhile, we still had two growing kids that needed time and attention. This sucked away large amounts of my free time and only grew as the years went on. It was to the point where three years ago I thought I was going to quit completely (and actually did for about 2-3 really sad months).

Today things are more stable so far but my family still requires a lot of my time and attention… missed family time is not time you ever get back. Add to this the oft-increasing responsibilities of my day-job. Fortunately, a year ago I started a new self-designed productivity system that has been reaping benefits… one of which is the near-constant progress on MOSS.

So there is hope. And now if you see me mentioning “MOSS” in tweets and other social media, you will have some insight into what that actually means: the best future for Mythruna… and potential help for a bunch of other games.

Thanks for reading.

Patreon Profile

I have recently setup a Patreon profile page for any who feel like generously contributing to the further development of the Open Source Simsilica libraries.

You can find the page here: Paul Speed’s Patreon Page

Between balancing my day-to-day life issues of being a father of two and husband to a wife battling brain cancer, juggling my competing priorities is often a futile game. Every “like” on one of my posts helps fuel the drive to continue but on the low days I often feel a little isolated. Every cent pledged will be a tangible vote of confidence that I should continue doing what I do and providing support to the community at large.

I don’t plan to stop doing what I do either way… but on those days when everything seems to be pulling me apart, my time will tend to go where the sunshine is brightest.

A Beginning of Sorts…

The Simsilica web site has been in place holder mode for some time now.  In the mean time, I’ve done several other small projects that were not directly Mythruna-related and I’ve half-lamented not having a better venue for such topics.  Truthfully, I’d probably be posting them to the Mythruna pages, also… but it feels better to me to have a potential home for these things that are larger, or are tangential to, Mythruna.

With that in mind, I created a more “real” site for Simsilica; Now I can post blog entries and things about stuff that I’m working on that is interesting.  I’d like this section to be a sort of blog of related side-projects as well as perhaps some more developer-focused articles on low level tech that I’m using or experimenting with.

I guess we’ll see.