Wool, A 2D Rust Simulator.

<a href="http://whatfixesrust.blogspot.ca/">Wool</a> is Rust, but not as you know it. It's a simulation of a server, using AI in place of both animals and players, built to prove a theory the creator had about Rust's gameplay. I talked to the creator about why he's making it, what it can do, and the future of the program.

13 January 2015

Is there an easy way to describe what Wool is and why you're making it?

This guy says it better than I can:

vegeta897: "OP is creating an abstract simulation of a Rust server by throwing some AI-driven players into a 2D map with resources, so he can do some analysis of Rust's progression/gameplay and propose changes with data to back it up."

I'll summarize my proposed changes here. I want bases to take a long time to gather enough resources for. I want walls to take a maximum of 30 seconds to break if you're raiding alone. I want it to be expensive to break someone's wall, it should cost about half of what a new base would cost. I want it to be impossible to raid a base if it has walls made of a better material than what you use to break it, so you can only raid bases of equal or lesser power than yours.

I think these changes would create an environment where one can raid occasionally, and expect to retain one's base for a reasonable length of time -- but not too long. It would mean players that have been playing for a long time have incentive raid long time players, and new players have incentive to raid other new players. It would add a competitive layer without undermining the creativity and community and builds that currently make Rust a lot of fun.

The 'Why' is a bit more complicated. It's a bit of a story really. First, I really love Rust. It's one of the few games I've actually stayed up all night playing (Legacy, anyways). I stopped playing Rust because I had exhausted my interest in the end game content. Then I heard Facepunch was creating Experimental, and I passively followed its development. I got all excited in November to play it again -- I even purchased a new laptop to make it run smoothly. I was awed by the beauty of the new engine & terrain, especially the grass (I love grass). However, the gameplay did not suit me, and I longed for something different, and that frustrated me. Facepunch was so close to what I felt would be fun to play, and I figured it would only take them two weeks of coding to make all the changes I wanted. So I made a post on Reddit to try and gather some interest in my ideal Rust progression system. When it didn't attract much attention, and it seemed to me that people didn't really understand why it was a good idea, I dreamed up a way to prove it. Thus, Wool was invented. Additionally, I'm an undergraduate computing science student with a very high interest in AI, so I suppose a large part of why I'm doing this is an excuse to make some cool AI.

You started out making Wool as a test for your progression system. Is that still the case?

Yes. The whole point has been and still is to test my ideal progression system. The changes I'm proposing are not large modifications from the way Rust works now, in some ways it resembles gameplay from Legacy. I aim to try and convince the Rust development team of my point of view, and improve Rust beyond its glory days of Legacy.

It's not meant to be a game, or something to play with, it's supposed to be a tool to analyze Rust. Although, it's certainly close to a playable game.

What's there, what's missing? Are you hoping/capable of gaining a 1:1 parity?

Regarding 1:1 parity: Wool is an abstraction of Rust gameplay. An abstraction is a single action that represents a sequence of smaller actions. For example, seeing an enemy, aiming your weapon, then pulling the trigger is condensed into a single action. In Wool, I call that action "attack". So, while Wool does not compute all of the micro-actions in Rust, it represents them in an abstract way.

Regarding what's there and what's missing;

The artificial intelligence that controls players is becoming reasonably sophisticated. Currently, players can:

  • Gather resources
  • Build, upgrade, and repair bases
  • Craft food, weapons, armor, and tools
  • Attack and loot each other
  • Attack, loot, and take over each other's bases

In the near future players will be able to:

  • Log off and on
  • Eat and starve to death
  • Make better decisions

When everything is done, I'll be able to show off some cool videos and graphs that will determine the facts about this system. Things that I want to know about it include: how long is the average player life? How long does the average base survive? How many kills per session does the average player get? How often are players killed and raided by high-tier players?

Have you kept up with Rust's development speed?

Since the development of Rust has been slowed by the holidays and by performance updates and bug fixes, I've had no trouble bringing Wool up to a reasonable representation of Rust's experimental build.

What happens when you start a server?

All of the players spawn on the beach. Chaos ensues for the first hour; the beach and nearby forests are bloodied and violent, and entire woods are cut down as players attempt to establish themselves.

How can you code the unpredictable way people play the game?

I can't -- no one can fully model a human brain (yet). A lot of great times that I've had in Rust are when players don't do the things that will give them a resource advantage. Things like saving fresh spawns from animals, making friends, building collaborative towns, and starting cults will be impossible for me to model. However, it's not important to model these things in order to understand the competitive meta game. In a competitive meta game, the decisions that lead to favorable results are measurable and predictable. I'm only modeling enough game play to make a particular point.

How do you parse what's going on? Are you just watching the game and making notes?

In the end, I'll have complete logs of everything that a player does and has done to them. I'll process these logs in Matlab, and produce some understandable statistics and graphs.

Any stories emerged from it, yet?

Yeah you could say that. It's a lot of fun to pick one player and follow his adventures through the simulation. I added a blue square around a random Newman, and I choose him to follow every time I watch a simulation. I call him Garry. Every time I watch Garry I watch an epic story filled with suspense, triumph, and heartbreak. When Garry finds his base looted, and I see it took him a simulated hour to gather the resources for it, I weep for him. When he then builds a new base nearby, then works his way up to metal weapons, and then takes his old base back with a vengeance, I shout for his victory! Needless to say, I love building AI.

Have your theories panned out?

Well the data still has yet to come -- I won't know for sure until it is entirely finished, but every day I become more certain that I'll actually finish the project. It's taking me longer than I thought to finish, but it's a labour of love and I couldn't be happier to work on it.

Still need an artist?

Personally, I think it looks pretty good for programmer art. But, I'm not an artist and I'm sure someone could make it look better. If any artist is interested, feel free to send me an example of what you'd like it to look like, and I'll consider making the effort to upgrade Wool's graphics.

Will people get the opportunity to play with it?

Well, that's certainly possible, but I'm not currently planning for it. It's developed as an iOS application, and it does run on my iPhone, so it would be a short step to release it on the App Store. I've fantasized about making it a real-time iOS game, where players could join a server just like they would in Rust, but it might be a bit boring. That said, I could probably diverge from making it a Rust simulator at that point, and really liven things up. I've always wanted to make an online game like that, so perhaps here's my opportunity. It could be even cooler if I could fly Rust's flag too.

A simpler direction I could take would be to make a 'god game' like Nielscorn suggested on Reddit. Maybe I could add the ability to create wild fires and tornadoes just like in Sim City. That would be fairly straight forward to make. I don't know, we'll see which way the wind blows.

Good luck!

Mailing List

If you want to follow this project you can sign up to the mailing list.

We'll only update you about this project, we won't spam you about other stuff or sell your email address.

* By subscribing you agree to the Terms Of Service and Privacy Policy