Dark Forest

zkSNARK space warfare

Less than 24 hours ago, the final round of the Dark Forest v0.6 “season” wrapped up. We introduced a ton of features during this round, and many players took advantage of intricacies within the rules enforced in our smart contracts—which we’ll be highlighting more in the “wrap-up” blog post. However, not every game rule worked for everyone. We saw smaller players’ empires being swallowed up by large empires just to reduce their space junk, and players on the outer rim having a harder time capturing zones than closer to the center.

Today, we are announcing the next evolution of Dark Forest: Lobbies!

Lobbies are a fully on-chain configuration & deployment system for your own Dark Forest universe(s). The prolific Jordan (spencecoin) created an intro video to get you up to speed.

We’ve heard the community loud-and-clear: you want more Dark Forest. We, the core development team, have never desired to be the only ones launching rounds, and we supported Community Rounds at the end of 2021. This also culminated in the excellent Community Round Builder’s Guide by cha0sg0d. These initiatives were awesome, but they still require knowledge of the development and deployment pipelines to bootstrap a game.

We believe Lobbies are the revolutionary new feature of Dark Forest that solves many of these problems. Players no longer need to wait for an official or community round, and they don’t need to don’t need to be developers to launch a Dark Forest universe!

Enter Lobbies

Lobbies give anyone with some xDai (you just finished a round, so you might have some left over) a user-interface for launching their very own Dark Forest universe. For the cost of ~0.06 xDai, you can create a brand new smart contract and initialize the universe with over 30 different configuration parameters. By default, anyone with the URL to your lobby can access it, but you can also enable the Whitelist, like we use in official rounds, and only allow specific user addresses into your universe.

To create your first Lobby, visit https://zkga.me and click on the Create Lobby button. You’ll be asked to log into an account with enough xDai and presented with some Lobby Tips.

Create lobby button on homepage

Once you’ve picked an account, you’ll be dropped into lobby configuration, which is where all of the magic happens. On this page, you can adjust any values that we’d usually change when launching an official round. We pull all default values from the Round 5 contract—if you want to have the exact same R5 experience, you could just click Create Lobby.

Lobbies configuration page

Fun Settings

There are a ton of options to be configured, but we wanted to highlight some of the easiest-yet-effective changes you might want to make.

You can change Game speed in the Game settings pane, which will speed up energy/silver regeneration and voyages. We’ve had a lot of fun with fast games that are time-boxed to a couple hours.

Lobbies game speed example

Mirroring space types on the X & Y axis (in the Space type and Biome pane) can produce maps that are credibly neutral. Even though planets are still randomly distributed, each player will mostly have the same access to nebula/space/deep space/dead space. Also, these maps just look awesome!

Lobbies mirrored space type example

If you didn’t like Capture Zones or Space Junk in Round 5, you can disable them in their respective panes.

Lobbies capture zone example Lobbies space junk example

In a 1v1 game, you’ll probably want the World radius locked and specify a custom World radius, which you can configure in the World size pane.

Lobbies world radius locked example

And lastly, in the Advanced: Snarks pane, you can adjust the Planet hash key, Space type key, and Biome base key. These affect the procedural generation of the universe and are the values we change for each official round. If you keep these the same, the universe will be very close to Round 5, so try out some different values to make interesting universes.

Lobbies keys example

Philosophy

As the world’s first crypto-native MMO RTS, our software development philosophy is to provide a lot of surface area where third-party developers and modders can build. This goal comes with trade-offs because we focus a large chunk of our time building out this infrastructure instead of new features; however, we believe supporting external developers will pay dividends on experiments and features, which we’ve already begun to see with the dfdao and MarrowDAO community rounds. We believe that Lobbies will be another foundational building block the community can use to express themselves.

What can you do with Lobbies?

We’ve thought of a few ideas of interesting uses of Lobbies, but we’re most excited to see what you build!

  • Until now, the Dark Forest core team has tuned gameplay parameters before each round, such as the energy and silver regeneration rate, the density and variance of planets, etc. For a Lobby, the creator can adjust these values themselves. We hope the community can converge on parameters that fit the needs of different play styles. Could a competitively balanced version, akin to Super Smash Bros’ Final Destination, of Dark Forest be discovered… or invented?
  • The ease of creating a Lobby lends itself to small group rounds. This could be quick games with friends, or even Lobby-powered Dark Forest tournaments. Maybe someone will build a competitive ELO-scored Dark Forest ladder!
  • The Diamond Standard (have you read Blaine’s Diamond Standard blog post yet?) affords a lot of flexibility with your Lobby. Developers could add functionality directly to their Lobby contract and provide a plugin for interacting with this new behavior—such as adding custom scoring mechanisms. Not only can functionality be added, but it can also be replaced. A developer could replace the move function in a Lobby to increment a player’s score based on the amount of energy they send. What else could you do by swapping out individual contract functions?
  • Dark Forest has primarily been a combat-based MMO RTS, but Lobbies could enable completely different game modes, such as “how much score can you get in 1000 moves” or “what is the minimum set of moves to achieve some objective.”


Closing note from Blaine

I’m so happy and thankful that the Dark Forest team let me spend the cycles to build out Lobbies. I think of them as the culmination of everything I’ve built for Dark Forest since v0.4 when Jacob and I won the round with our custom client, Sophon. Building Sophon inspired me to push for ways to “build your own” Dark Forest. This was furthered by Ethereum Foundation grants to help work on the plugins system & showcase, so third-party developers wouldn’t need to fork an entire client. Eventually, we built the smart contract configuration system, commonly seen as the darkforest.toml file, to rapidly spin up different versions of Dark Forest. Over time, this system has grown to contain over 3x more configuration parameters, and is the backbone of the Lobbies system.

It’s been so cool to see people use darkforest-local to build community rounds, and I can’t wait to see all of the awesome stuff Lobbies enables. Please jump into the Lobby channels in Discord and let me know what you think! After a brief break, I’m hoping to create some community tools for the more advanced techniques—some of which were mentioned in this post. Until then, I’ll see you in the Dark Forest!

Dark Forest is hiring! We are looking for experienced full stack and solidity developers to join our team! If you like what you see, consider applying .