Friday Facts #141 - Mod Portal

Posted by kovarex on 2016-06-03, all posts

Hello!

0.13 Progress report

I guess that not so many people really expected that the target day of the 1st of June might be the actual release day. The day was mainly a psychological trick for us to finish all the little fixes and not to start any new projects, so we might be only week or two late instead of months. We started the first multiplayer play-tests last week, but they didn't last long. After the first hour of connection issue fixes, the game desynced every 15 seconds.
The process of determinism fixing that we first experienced when stabilizing 0.11 is now well known to us. With the tools we prepared and partially explained in friday facts 63, we were able to identify and fix determinism issues much much faster than before. It took just a few days compared to several months back then. The last playtest day was 2 days ago, and we were able to play a game where Linux, Mac and Windows players were all present. It lasted a few hours and no major issues were found so we are getting there.
I also have to admit, that the discovery of slither.io stole approximately 2 days of our dev time, as the game is really really great :) So if you can't wait for Factorio release, I advice you to try the game in the meantime.

TL;DR
If the further playtesting goes well, the release could happen next week, but you never know.

Mod portal

The information about the mod portal is brought to you by Martin, the train guy and recently also the mod portal guy.

The mod portal is a long awaited feature and it is finally happening! With the release of 0.13, we will be launching the mod portal website, along with an in-game integration. The base of the project was created by the original creator of factoriomods.com. The mod portal can be viewed by anyone, but you will have to log in with your factorio account to download mods, same goes for the in-game version.

Disclaimer

Mostly due to lack of time and the size of the project, it is not in a finished state (and will not be completely finished with the 0.13 release). It contains many bugs and it's missing a fair amount of features that will be coming with later updates. All the graphics of the website or the in-game GUI are subject to change.

Basic features

Mods can be sorted and filtered, they are grouped into categories.

You will be able to rate mods, probably using a 5-star scale and filter/sort mods by rating.

Discussions

Every mod has a discussion with multiple categories - announcements, bug reports, etc. This should help with the clutter we currently have on the forums.

Licensing

We will be requiring every mod to specify a license - either one of the common licenses (like MIT, (L)GPL, Apache, public domain) or a custom one, where you can specify the exact things people are and are not allowed to do with your content.

In-game browser

The in-game browser allows you to do most of the important things like filtering/searching for mods, it also allows you to install a mod with just a single click, same goes for updating mods that are already installed.

Further development

There are a lot of features that we want to still add to all this and they will be slowly appearing with 0.13.x patches. This is more a list of ideas, than a list of confirmed features, some of them might not be implemented.
  • Automatic installation of mods when loading a modded save
  • Automatic installation of mods when connecting to a modded multiplayer game
  • Grouping mods into modpacks
  • Integrating with Github for release management
  • Automatic compatibility testing
  • Various download/usage statistics

The first 0.14 project

One of the first 0.14 projects is the attempt to fix the determinism problems of mods. The issue with mods and determinism is, that lua script as it is doesn't allow us to save everything from its internal state into the save file. When the modder puts pointer to method to a variable or uses variable that is not in the scope of the global, it is not saved. If the mod uses these values to do any changes to the game, it will desynchronize. This not only makes potential problem for modders, but drains our developement time, as we can't just ignore all the desync reports, but reading scripts of modders and searching for mistakes there is not really in our capabilities. The plan is to enhance the script serialization in a way, that modder basically can't make a faulty mod, as all values will be always saved. This requires some low level hacking, so the lua functions, closures and other internal stuff is saved as a byte code as part of the script. But if it could be done, it would increase the usefulness of mods a lot. The research of whether this is possible will be one of the first task of our new Programmer in the team. Say hello to Honza :)

The locomotive

The train project is almost done as well, let me show you the side view of our new locomotive:

Once we were already working on the train graphics, we had to solve the annoying problem of train wheels not matching the rails in curves. This was obviously not solvable as we rendered the train wagons as one sprite. So we fixed it by drawing the wheels separately, so they can have different orientation than the locomotive itself. The result gives much more organic feeling of the locomotive movement.

As always, let us know what you think on our forums