Sign Up | Login | Log in with:

Designing for Mods

Oct 06, 2016
 Tags: roll out, monthly

In my previous post, I mentioned that I had started working on a new game, working title Roll Out.

I outlined the premise on the forums, in this post.

This game has been designed with modding in mind from the ground up. So much so, that the core game itself is in fact largely a mod. That way, if there's any additional items, buildings, spawn rules, weather, or AI that is desired; a developer can add that kind of functionality quite easily.

I'll admit that there are still a few things that are coded quite deeply into the game, though I hope through refactoring I will be able to migrate those into the "mod" as well. Things like UI.

Aesthetically, Roll Out is a 2D game with simplistic styles and very few animations. It creates a kind of peaceful, simple charm that is offset by the timer and the strategy required.

Level Start

Just arriving at the start of a new stop, getting ready to go!

Gathering Resources

Gathering wood at a lumber camp using a Gather Zone

Event Options

In between stops, events can happen that change how the next stop will play out

Event Resolution

Well, that's unfortunate. How will I adapt my strategy now that this happened?

I'll be releasing periodic tutorials on how to add new content on the forums, so be sure to check there periodically to see how things are working out and get your input in!

To that end, I plan to start a Steam greenlight entry for this game in the near future, as soon as I finalize a few more things. The goal is to get the game into greenlight as early in development as possible so that I can get feedback on the game.

This feedback is twofold: from players, I am looking to deliver a fun game that makes you plan and think, as well as react to change and challenge. From modders, I am looking to see what you might want to add to the game, where the modding bottlenecks are, and see if we can work together to overcome that and make something that is friendly to the modding community.

I've spent the last week or so creating a companion application that is the Roll Out Developer Tools. These tools will allow content to be added to the game easily, without needing to remember the complex syntax that is the JSON manifest files. It's not quite done yet, but I will be finishing it soon as possible as it will speed up me being able to add the rest of the main game's content.

Roll Out Dev Tools

The Dev Tools make adding content effortless.

The dev tool does some pretty neat things in the background, which really has no bearing on the end user, but I want to talk a little bit about it because I think it's really cool!

The editor for the dev tools is reflective and recursive, meaning the code self-analyzes to create the editor. What that means is that given an object, it will reflect and retrieve the object's properties along with several decorator attributes that control various aspects of the editor. From there it will use those combined with the property declarative type to create the appropriate editor control. This reflection is also used in export and validation functions, meaning that adding new fields to the editor tool takes less than a minute.

This is important, because the dev tools need to stay up to date with the game, but I'd rather spend more time on the game in the end!

It will be possible to add content with no programming knowledge using the built-in functions that exist. The method of doing this manually (without the developer tools, because that's possible too!) is found here. It's a full tutorial that shows how to add rubber to the game.

It starts with resin, gathered from a resin tree. That goes into refining it at a rubber refinery along with generated power. That entire functionality can be added by someone who knows nothing about programming.

If you are more likely to add scripts and custom functionality, I have that covered too! Roll Out features the ability to do custom scripting for objects via Lua. It does follow a similar component-based compartmentalized system as Unity, meaning that each item/building/weather/event/AI/etc. will have it's own Lua file rather than one massive one.

This serves two purposes. One, Lua being an interpreted language, it isn't usually as fast as native compiled code. Keeping the scripts separate innately keeps them small, and therefore takes less time to process them. The second is that each type of object (item/building/etc) has different entry points that are called. This helps keep the Lua scripts simple.

The editor tools have templates for all of these items to help get you started, so you'll never be floundering wondering what the entry points you have available are. If the entry point you need isn't there, I'll continue to work closely with modders throughout the game's life and add entry points/functionality as needed, where possible.

As with any system, there are limitations and constraints, but more often than not they can be worked around to find the end goal.

The dev tools will also be integrated with the Steam Workshop once complete (the game itself already has the hooks and API calls templated in), meaning once you create, verify, and test your addon, you'll be able to publish it to the Steam Workshop for others to subscribe to and enjoy!

Touching again on Realms, no coding has been done yet but I have been working on a design for the ability system to make it much more flexible and robust, as well as working out conditions for the deterministic AI to make it smarter and challenge players more. One thing I need to take into account that I wasn't before is a form of difficulty level. It's built into several functions already (build time, damage, etc) but the AI's decision making should be affected as well.

That's all for this month - keep checking the forums for updates (or subscribe to the thread to be notified) in between as well as more information on Roll Out.

As always, thanks for reading!

Comments (0)

Add a Comment

Please login to comment.