Posted by on March 17th, 2017

Happy Friday! Cambo here to kick the weekend off by bringing back the dev tech blogs. We plan to keep them coming at least once a month as we make more progress on development. In regards to the Q&A, most of them are answered and I’ll be sure to post it in our next update blog. For now, here’s our infrastructure dude, Maylyon!

 


 

Hey everybody! Maylyon here with a new non-game related, non-engine related, non-tools related tech blog!  Hint: this is your tune-out point if those are the topics you are looking for.  3 … 2 … 1 …  Still here? Excellent!

After literally years of silence about Devotus, I wanted to follow-up with a snapshot of where Devotus is today. If your memory is a little rusty, Devotus will be our mod content distribution pipeline to help mod authors create and manage their home-brewed content and deliver it to end-users.  To get context for this blog entry, you should definitely read those first two blogs.  Without further ado, the “what has been happening?” (aka: “you guys still work on that thing?”).

 

ModJam 2016 ARMAGEDDON!

In case you didn’t know, there were mods on Devotus’s developmental servers from a TUG v1 ModJam in early 2016.  Don’t go rushing to find them now; they’re gone.  They were sacrificed to the binary gods in order to make way for…

 

Going “Serverless”

Suspend your understanding that the term “serverless” is a lie because there are always servers somewhere and play along for a bit.  The old Devotus architecture was built on AWS EBS-backed EC2 instances running a mix of Node.js, C++, and MongoDB.  It looked a little bit like this:

image

The primary detriments to this approach were:

1.    Paying for these servers (even extremely small servers) when nobody was using them,

2.    Scalability at each layer of the stack would incur even more financial cost and contribute to…

3.    Complexity of the implementation.

Leveraging AWS API Gateway and AWS Lambda, we have moved to an architecture that looks like:

image

Moving to this setup allows us to:

1.    Greatly reduce the costs associated with Devotus (especially when nobody is using it),

2.    Offload most of the scalability problem to AWS (less work = more naps),

3.    Synergize our implementation with the other microservices we have been developing on the Infrastructure team.

 

Support for GitLab

Devotus now allows mod authors to create git repositories on GitLab in addition to GitHub.  It’s actually been there for a while but wasn’t there in the last blog I wrote. By supporting GitLab and their awesome pricing model, Devotus allows a mod author to choose whether they want their mod’s git repository to be public or private at mod creation time.  This choice does not apply to mod’s created on GitHub because their pricing model is less awesome (but still pretty awesome) and I’m cheap (see previous section for proof).

 

Improved Download Metrics

In the “bad old” days (read as “a month ago”), mod download count was just an unsigned integer.  Download request comes in, number gets incremented by one.  Commence spamming download of your own mod to falsely inflate its popularity!  Everybody wins!  … Except for the people who want to use the system.

Now, in the “brave new world” days, mod downloads are tracked per-user, per-version.  This allows mod authors to track their mod’s popularity throughout its release history and allows end-users to trust that a mod’s popularity is probably because of an amazing mod author rather than a mod author’s amazing spam-bot.

 

The Future Is…?

That’s all I have for this installment.  I (or somebody from my team) will be back with future Infrastructure updates as we get new and/or exciting things to share.  In the meantime, be sure to jot down all those cool mod ideas you have kicking around in your brain into a little leather-bound notebook so that WHEN TUG v2 is launched and WHEN Devotus is client-facing, you will be ready!

Have a great weekend!

Leave a Comment

Posted by on September 17th, 2015

Everybody!

Maylyon here with a new blog!  If you just rushed to your “Nerd Kingdom Trading Cards” deck and didn’t find me there, don’t fret; I joined the Kingdom in March and have been quietly working behind the scenes as the Lead Infrastructure Developer.  (On a side note, if those cards don’t exist, we should change that … .)

One of the things that has impressed me the most since joining the company is the perseverance of the modding community.  You guys have such amazing ideas for ways to enhance or improve the gameplay of TUG, but the journey from “concept” to “deployment” seems fraught with needless perils:

  1. How can we have multiple collaborators working on the same mod?
  2. How can we manage changes to the mod over time?
  3. How can users report issues with the mod in a coherent and cohesive fashion?
  4. How can we deploy mods to the end users?
  5. How can we trust those end users to know:
    1. How to install the mod for use?
    2. How to update the mod when it changes?
    3. How to not blame the author when Nerd Kingdom changes the Eternus API?

The last may be a lost cause, but the answer to most of the other questions right now seems to be “the forums”.  The forums are a great tool for fostering discussion in the community, but they seem like a less-than-ideal fit for the challenges that face a modder.  Towards that end, we are actively working on Devotus!

Devotus will be a mod content distribution pipeline that facilitates the creation and deployment of mod content by the mod authors for the end users.  With Devotus, we hope to allow the modders to focus the majority of their efforts on creating amazing content that pushes the boundaries of what Eternus can handle and stop worrying about the nuts and bolts of deploying a mod.  The rest of this blog will focus on answering, “What does Devotus provide?”  The next tech blog will focus on answering, “How can I use Devotus to be awesome?”

The first step towards admitting that you have a modding problem is registering your mod with Devotus.  When a mod is registered, a blank git repository is created on GitHub; this will be the main home for the mod content that you create.  Utilizing a third party git repository site allows us to leverage a proven implementation without the development time and risks of building our own in-house solution.  Git repositories on GitHub should help mitigate frustrations 1 – 3 above:

  • Multiple authors can be added to the git repository to allow concurrent development efforts (more on the “how” in the next blog) – or not.  You could be sole author on a mod and choose what forked changes you want to propagate upstream into your repository.
  • Git provides revision history so you can track changes over time (often read as: “know who to blame when things break”).
  • GitHub provides mechanisms for users to report issues with a repository, allowing mod authors to receive feedback and bug reports from the community.

I am definitely not providing a comprehensive feature set list of GitHub; if you want more information, hit up their website or contact me at [email protected] and I’ll do my best to address your questions/concerns/loathing.  A few items to note here are:

  • Mod names must be unique within a target game domain in order to combat the chaotic nature of the universe.
  • Mod authors will need a GitHub account and a Nerd Kingdom account to register and manage mods.

Another feature of registering your mod with Devotus is the creation of a GitHub IO page.  This page is yours to brag about … er, explain … your mod to the community at large.  I’ll let the next blog cover the features that are being worked to enable you to create page content highlighting your epicness; I just wanted to provide a teaser to hopefully pique your interest and incentivize you to read the next blog … .

The second step towards admitting that you have a modding problem is publishing mod content for end user consumption.  When you tag your git repository with a release tag in the format “v<Major>.<Minor>.<Revision>-release” (e.g. “v1.1.2-release”), a GitHub webhook will push an update command to the Devotus server that will revise the mod information within Devotus and build a ZIP file of the mod repository contents.  The intent here is that you will perform a trivial action (tagging your repository) and Devotus will take care of the legwork necessary for that content to be available for download by the end users.

One hurdle of publishing mod content that Devotus attempts to mitigate is mod dependency resolution.  Mod authors can indicate that their mod depends on another mod, and Devotus will provide a single download package that contains all the files necessary to use the mod.  This feature could be used to develop content that depends on a utility mod (such as Johny’s “CommonLib”) or to develop a mod collection with a single-click installation ( “DaBoom” that contains all of UFIOES’s mods, including “Thermobarics”).  A limitation here is that the mod that satisfies the dependency must also be registered with Devotus.

The final step in admitting that you have a modding problem is sharing that problem with others!  Tech is planned to incorporate a Devotus browser into the Nerd Kingdom Launcher to mitigate frustrations 4 – 5b above:

  • Mods can be browsed, downloaded, installed, and managed by end users for use in-game.
  • Out of date mods can be identified before loading into a world and experiencing massive amounts of Lua errors!

This tech is the biggest piece of the ultimate goal:  getting a mod into the hands of users.

So that’s it for me rambling about Devotus and scratching the surface of what we are working towards.  @TheCamboRambo suggested that blog readers enjoy pictures.  The backend isn’t visually interesting, but I want to make the audience happy, so I’ll end with this:

image

In the meantime, check out the latest NK Cribs video from Josiah!

Leave a Comment

Follow Us!

Stay up to date!

To get the latest updates on Nerd Kingdom tech sent right to your e-mail, fill out the form below