Founders' Sale

2022-01-12

Hello and welcome! This is a series of posts that will take you behind the scenes of Undra and explain how we are building this studio and game.

Today’s post is from DryZ, the author of Undra News #4, who works on game design and economy design at Studio Decent, the team behind Undra.

As a foreword: if you haven’t read our first news post - check it out now for the backstory. You should also read our marketplace for information on the NFTs themselves. A collection of 8,000 locked doors buried deep in the earth, which were auctioned off by the fictional Dauntless Excavations Company.

Gas Efficient Process at Undra's Founders' Sale

In our last post, we discussed the long-term vision beyond the Founders Sale, the thought process behind our Founders Sale structure, and the room distribution among the sale.

As we now move beyond the Founders Sale, we’d like to take this opportunity to discuss the execution and results of the sale! The Founders Sale was a smashing success, and we are so thankful to our passionate community for the fantastic participation! We worked extremely hard to ensure this was not only a fun and engaging kickoff sale for Undra, but also a smooth, fluid, and (gas) efficient sale for our players - and we feel that we were able to deliver on this!

User Interface (UI) of the Purchasing step

Reservations

The Founders Sale kicked off on November 30th with the team opening the flood gates to reservations for Miner, Explorer and Overseer packs. Players were presented with the reservation screen pictured above, where they were able to let us know which and how many of each pack they would like us to set aside for purchase time.

Reservations began pouring in after opening, with our reservation totals coming out to 1000% of the Miner packs, 400% of the Explorer packs and 150% of the Overseer packs. While players were able to submit any reservation quantity they desired, we limited pack allocations to 5 packs of each type, per allocation round, to ensure a fair and even distribution of packs across players.

Reservation allocations in the Explorer and Overseer tiers were not at all limited by the 5-per-player limit in the end, as the fair distribution algorithm spread the packs out in a manner such that a player could receive no more than 4 Explorer packs in the first allocation wave, and Overseer packs were allocated as a maximum of 1 (or fewer) per player.

Shuffling Our First Allocation

To determine a fair and distributed allocation for wave #1’s reservations, we came up with a simple iterative strategy that ensured players got as many of the top-tier packs as possible, and worked top down, allocating Overseer packs, followed by Explorer packs, followed by Miner packs.

The steps of the allocation shuffle were as follows:

  • Shuffle the list of players
  • Sort all players by how many total packs they have been offered so far (zero to start)
    • Shuffling first ensures tiebreakers from the sort are shuffled
  • Try and allocate one Overseer pack to as many players as possible who have reserved one
  • Repeat the shuffle, sort & allocate steps until all Overseer packs are allocated
  • Move on to the Explorer packs next
  • Shuffle the list of players
  • Sort all players by how many total packs they have been offered so far
    • This means that if a player received zero Overseer packs, they would be first in line for an Explorer pack (if they reserved one)
  • Try and allocate one Explorer pack to as many players as possible who have reserved one
  • Repeat the shuffle, sort & allocate steps until all Explorer packs are allocated
  • Move on to the Miner packs next
  • Sort all players by how many total packs they have been offered so far
  • Try and allocate one Miner pack to as many players as possible who have reserved one
  • Repeat the shuffle, sort & allocate steps until all Miner packs are allocated, or all reservations are filled

This algorithmic-look at the shuffling procedure helps demonstrate the fairness and equality that we were aiming for when allocating packs in our first reservation wave. All shuffles conducted utilized a Fisher-Yates shuffles strategy, with a seeded random number generator such that we could ensure reproducibly fair results, using a pre-determined future block’s hash (block 13721000) that we wouldn’t know until it was mined.

Purchases for Allocation #1

Once allocations had been shuffled and locked in, reservations were closed and we moved on to the purchase step of our sale flow. This step was a rather straightforward one (compared to the allocation shuffle), in that it involved players simply following through a payment view to lock in and complete their offered allocation.

confirm-allocation.jpg

Payments included a 0.007Ξ “shipping fee” as outlined when going through the reservation flow - shipping is not a common term in the Ethereum world, so I thought it would be worth outlining here. Shipping fees are a small additional fee we added to each pack sold, to allow us to manage minting gas fees ourselves using hyper-efficient batch-minting functionality at low gas times on the network.

Using this strategy we were able to not only save a TON of gas that would have been otherwise used to mint each individual Room that you opened out of each pack, but this shipping strategy also allowed us to provide a seamless and user-friendly pack opening experience without having to worry about any on-chain delays (more on this next).

With your allocation purchase completed, there was nothing more to be done for the allocation wave except wait to get your hands on your newly owned goods! At this point, any confirmed purchases had pack IDs (which were determined at allocation time) locked into your wallet address, so the pack IDs you would be receiving were now set in stone.

Allocation Waves #2 and #3

Following the purchasing window for allocation wave #1, a group of packs that were reserved but not paid for entered back into the pool as fair game for reservation. As the subsequent waves had significantly lower reservation totals, the reservation process was done in a very hands-on matter, working with players to ensure that we could do our best to get them the packs that they still wanted.

These second and third allocation periods both lasted roughly a day each, with payments following them, after which we closed the founders sale and began preparing the reveal and shipping phases!

Just for some numbers around allocation breakdown, roughly 80% of the total packs sold were distributed in allocation wave #1, with 10% of the total sales going in allocation wave #2, and another 10% in allocation wave #3.

Tallying the Results

When allocation wave #3 came to an end on December 3, with it came the close of our Founders Sale. It was a whirlwind 4 days, but we are so proud of the smooth execution and experience we were able to provide to you all through the reservation, allocation, and purchase phases of the event!

With sales closed at this point, the next step was to begin rounding up the final numbers, preparing pack contents, and continuing on with our shipping flow. Before we get to the final two points, I would like to outline some of the final sale numbers once all three allocation and purchase waves were completed.

  • Miner Packs Sold: 1313 (49% of total offered)
  • Explorer Packs Sold: 664 (68% of total offered)
  • Overseer Packs Sold: 342 (92% of total offered)

A chart illustrating the distribution and the confirmed purchases for each tier

As you’ll notice from the final numbers, the sale totals differ a fair bit from the upfront reservation numbers, meaning that we had a number of our reservations drop off or fail to produce payment during the purchase window. We entirely expected this sort of behaviour, and this was the intention behind the allocation waves #2 and #3, following the first purchase window’s duration.

Our expectation was that reservations who were unable to receive their full request in allocation wave #1 would return in allocation wave #2 and #3 to give it another shot. While we received many follow-up requests for Overseer packs beyond allocation wave #1, Explorer and Miner packs were not popular among the later purchasers.

Had we left the maximum quantity per pack tier uncapped for our initial sale, we likely would have sold a significantly larger portion of the Miner, and potentially even Explorer packs. That said, we went into this sale to create a healthy ecosystem of Room owners, and saw profits as a secondary metric when gauging the sale’s success.

We stand behind our decision to limit pack purchases by pack tier, as this lead to a fair and even distribution across the community, as opposed to a handful of single purchaser acquiring 99 Miner packs (we had a couple of these requests, from purchasers who were interested in following through), and sitting on hundreds of Undra Rooms.

We believe that the path we took was the right course of action, and we are very happy with the spread of Room NFT’s across our Founders Sale participants!

What About the Stray Packs?

Don’t worry, we didn’t forget about the leftover packs!

From the get-go, we were confident we would not leave an unbounded minting period open to the public as this can lead to project FUD, deteriorating value over time, and fluctuating bursts of supply which diminishes predictability and long-term value of the Rooms.

We knew that 4000 packs were a lot to try and sell in our first public sale, so we came prepared with plans for them as we progress through the Undra roadmap. Although we’re not ready to unveil these plans quite yet, we are pleased to announce that the remaining packs will be held back, and used as rewards and incentives for future adventures through the world of Undra. We intend to reward unsold packs through airdrops, community events, and other means of distribution as the ecosystem and game mature together!

By holding back the unpurchased packs, we can slowly stagger further public release of these Rooms, and introduce the remainder in story-driven, and community-first means to ensure we stay true to the world-class Web3 MMO experience we are producing at Studio Decent!

Give Them the Rooms!

As far as our players were concerned, the next step in the Founders Sale at this point was the much-anticipated pack reveal! While the pack reveal was a fun and exciting stage in the sale, I’d like to briefly pause and first take a look at the shuffling mechanism we used to ensure a fair and even distribution of Rooms in those very packs.

To begin, we looked at each pack type in isolation and determined a rarity list per pack type. These numbers were pre-determined, and shared in our last edition of Undra News, but here’s a refresher in case you forgot:

The colours for Rare and Epic have switched since this graphic was produced! Purple is Rare, Blue is Epic on our finalized Rooms! The colours for Rare and Epic have switched since this graphic was produced! Purple is Rare, Blue is Epic on our finalized Rooms!

Using these values in the “Total” columns, we were able to allot a random distribution of Room type/rarity combinations to each pack type, until the totals all lined up. At this point, we were able to create a long sorted list of all Legendaries, Epics, Rares & Uncommons in each pack type. For this example run through, we’ll focus on the Overseer pack just to narrow in on one sample.

With Overseer packs including only Rare, Epic and Legendary Rooms, our rarity list for Overseer was 740 Rooms sorted in the order Legendary, Epic, Rare. Next, we shuffled all Rooms within each rarity type (ie. all Legendaries in this list were shuffled amongst themselves to ensure there was no ordering at all). With all rarities shuffled within their own populations, but still maintaining a Legendary, Epic, Rare sorting of groups, we moved on to our “zip” strategy.

To determine Room pairs for each pack, we took the full list of 740 rooms belonging to Overseer packs (which have been sorted by rarity, and then each rarity shuffled amongst themselves), and cut it in half. This meant the top half of the list contained 222 Legendary Rooms, and 148 Epic Rooms, with the bottom of the list containing 288 Epic Rooms and 82 Rare rooms. With our two halves now separated, we next flipped the bottom half of the list (so it was now sorted Rare, then Epic) and attached it to the top half of the list, or “zipping” them together.

What this zip exercise produces is a new list of Room pairs, where the top rarity Rooms (Legendary) in the Overseer packs are now paired with the lowest Rarity Rooms (Rare/Epic) in the Overseer packs. This strategy ensures that there are a fair distribution of Rooms across the 370 Overseer packs, with no packs receiving more than 1 Legendary Room (high rolling), and no packs receiving more than 1 Rare Room (low rolling). We believe that this strategy led to a widespread organic distribution of rarities across our purchasers, ensuring that no one walked away from the sale with a “low rolled” pack spending 0.2Ξ to receive simply 2 Rare Rooms. Finally, once our list of 370 Overseer pairs had been constructed and were ready to be placed into packs, one final shuffle was left to do - actually assigning the pack IDs to a pair of Rooms. We used the shuffle algorithm here to scramble the list of Overseer pack IDs and assign them randomly to a generated pair of zipped Rooms, locking in the pack’s contents for good.

This shuffle was conducted using the Xorshift116 generator with the StarStar scrambler algorithm. A seed was provided to the shuffle algorithm using a future Ethereum block’s hash (block 13734850). This is similar to our pack allotment shuffling but using a different block number, such that we committed to an unknown seed ahead of time only to actually learn and use the seed at shuffle execution time.

We have reiterated, time and time again, our commitment to a fair and equal Founders Sale for everyone. We are hopeful that this glimpse into our pack contents shuffling mechanism further instils confidence in our approach to fairness!

Show Them the Rooms!

For those of you lucky enough to get your hands on some Undra Founders Sale packs, the next step of the process was the reveal! We spent countless hours discussing, debating, and revising our final purchase flow, to make sure that we provided the smoothest user experience we possibly could. To provide credit where due, we took a lot of inspiration from Parallel’s PRSYS when imagining our release flow, as they have set a gold standard in our eyes for a successful, gas war-free launch execution.

When drawing up the mechanics of our Founders Sale, we knew first and foremost that we wanted the sale to be fair and FUN! To reach this vision of a fair and fun sale, we had a couple of user-experience pillars that we held high in importance, and had the rest of the process come together around them:

  • Instant reveal when the sale period completed
    • This was important to us to create a moment of excitement for the player when receiving their goods. Delayed metadata reveals are a common technique in the NFT space, but it can feel anticlimactic and creates a less-exciting phase where you receive your unidentified NFTs and are forced to just sit around to see what you got. We wanted to ensure the excitement came as quickly as possible, keeping players feeling engaged and with minimal disruption in the process.
  • Eliminate gas fluctuation and stress for the players
    • There’s nothing worse than engaging in a gas war over a new project or having a project’s launch disrupted by another project generating a gas war at the same time. By executing a “shipping” method ourselves (more on this below), this removed any minting requirement from the players, allowing them to enjoy the sale, the reveal process, and digging through the mysteries of the rooms as others shared their reveals on Discord and Twitter!

Due to the hybrid on-chain/off-chain model of the sale that we have outlined above (pack allocation shuffles, pack contents shuffles), by the time we reached the reveal stage of the Founders Sale we had every piece of data that we needed to show you exactly which Rooms were headed your way. This idea of an immediate pack reveal following the purchase stage of the sale is what really drew us towards a hybrid on/off-chain model, and what drove us to spend so much time on extra infrastructure to support the sale’s execution.

With data locked in across the board, and pack contents tied to the purchaser in our database, we flipped our reveal functionality live and the button appeared for anyone with packs to open!

Packs are ready

Clicking the “Open Your Packs” button directed the player through to the reveal screen, where they were presented with a list of their brand new Undra rooms! The rooms were obstructed with a light frosting on top of them, leaving the final “unveiling” moment to the players themselves, as we really wanted to ensure our players felt involved in the process!

Packs reveal process

All said and done, the team was extremely happy with the execution of the reveal, and think that it provided a great experience for our players to unveil the treasures they’d received. Our feedback from the community backed up this sentiment, and we were so thankful for all of the kind words and praise we received for our sale and reveal process!

Shipping the Goods

The final step of the Founders Sale, and arguably the most important step, was getting the Rooms in the hands of our players! As I mentioned previously, we went with a rather non-standard approach to the actual NFT distribution in our Founders Sale, with a large focus on fairness and avoiding gas-wars of any sort.

To accomplish this, we utilized a homebrewed “shipping” flow to execute the NFT mints where we take full responsibility for the minting of every NFT in the sale, and simply take a 0.007Ξ shipping fee with each pack sale (in lieu of players paying gas fees).

What this allows us to do is utilize extremely efficient token contracts (based on ERC1155) and off-hours windows of low gas fees to optimize the minting process beyond what we could reasonably accomplish with a manual mint of an ERC721. With a shipping cost of 0.007Ξ per pack, that puts purchasers at 0.0035Ξ gas per mint, which is very comparable to some of the most hyper-efficient ERC721 contracts we’ve witnessed!

Our shipping was executed over the span of 3 or so days (we had advertised a 72-hour shipping window from the get-go), by executing repeated batch mints on our ERC1155 contract. To ensure fairness during this shipping window, we did not publish full detailed metadata for each of the Room traits/properties (only the images and names at shipping time), to avoid providing any sort of an advantage to OpenSea flippers who received their rooms ahead of the rest. Once we had finished the entirety of the batch minting process, full traits were published, and a script was run to trigger a metadata refresh on each Room listed on OpenSea.

With the release of our full Room metadata, our shipping process was complete, and by extension the Founders Sale as a whole!

That’s a Wrap!

If you’ve made it this far into this issue of Undra News, I want to personally thank you for your interest (and hopefully your participation!) in our Undra Founders Sale! It has been such a pleasure to bring our community along with us for this ride, and we are so thankful for the support and engagement we have seen so far!

The Founders Sale is just the tip of the iceberg of what’s to come from Undra over the next year. We hope you enjoy the mystery and intrigue that each and every Room offers on its exterior. Everything has meaning, everything has purpose - will you uncover the source of Undra’s curiosities?

Until next time,



DryZ

< Back to the blog