News Liste Last Epoch

1.0 Launch Retrospective
Last Epoch
20.03.24 22:01 Community Announcements
Hello Travelers!

Today’s blog is a little different from our usual fare. As most of you know, Last Epoch launched on February 21, and the reception has been amazing. In the first week after launch, over 1.4 million of you logged in to play Last Epoch. At our peak, we had just under 265,000 players all roaming Eterra simultaneously. That’s good enough for the 39th highest all-time concurrent player count recorded on Steam, and we’re humbled by your support and enthusiasm for the game.

There’s plenty of cause for celebration, but let’s not ignore the obvious: Last Epoch’s launch was pretty rough for the majority of you who play online. Your patience and positivity have been amazing, but it was obviously not the launch experience that you or we had hoped for.

Now that the initial launch woes are behind us, it’s time to reflect on the experience. What happened? We put a strong emphasis on testing our servers and infrastructure ahead of time, so what did we get wrong? Last Epoch’s backend team is here to give you a bit of a recap of what went on during the launch.

How Our Game Works



Let’s begin with a quick explanation of how our game works when played online. When you boot up Last Epoch and enter the game, what you see as a player is relatively straightforward; first you log in, then you select your character, and then you join a game server. Behind the scenes, though, what you’ve just done is communicate with and move through half a dozen online services. These services log you in, provide you with game data, and give you a server to connect to so you can play the game. You connect to this game server, but then the server itself goes out and talks to even more services to authenticate you, load your character data, and check things like your party membership.

These supporting services are the “backend” of our game, and without them our game doesn’t work. Some services are more important than others, but as a general rule, most services are required for the game to function. The good news is these services are all pretty resilient. Behind the scenes, each service is not one program but many copies of the same program. If one of the copies breaks down, the other copies keep working. Crucially, if a service is overloaded, we can fix that by just deploying more copies of the program. If our services are designed properly, we can handle any number of players; all we need to do is throw more copies at the problem.

(This design applies to our game servers, too; Last Epoch has never once “run out” of game servers for players because they’re all interchangeable, and we can create as many new ones as we need. The closest we ever come to running out of servers is when we get a spike in players and need to wait a short amount of time for extra ones to boot up).

Preparing For Launch



The “designing our services properly” bit is the hard part. For some of our services, it’s very challenging to design them in a way that actually lets us scale just by throwing more copies at the problem. If you were around for the launch of patch 0.9.0, our first multiplayer release, you saw our game go down as soon as we crossed 40,000 players. Why? The service that matches players to servers had a design flaw where it started slowing down when there were many servers available. Once about 40,000 players joined servers, the performance of the matcher got so bad that it didn’t matter how many copies we threw at the problem - every copy would crash under the strain.

The backend team spent much of the time between 0.9.0 and 1.0.0 hunting down and fixing these sorts of design flaws. Some flaws could be fixed easily, others required entirely new services to handle our players’ data in a way that could actually scale. We were given a blank check to do whatever was needed to support our launch, so the only obstacle was time.

By the week before launch, we seemed to be in a reasonably comfortable spot. Everything was built, and we’d performed multiple rounds of load testing on our entire backend to ensure it could handle the volume of requests we expected at launch. The results were promising, and we hadn’t pulled any punches on the testing either. We were as ready as we were ever going to be for launch.

The Morning Of Launch



For something like a game launch, “readiness” is mostly about having a plan. You can have confidence that you’ve tested and prepared, you can have confidence that you know how your services work, but you can’t have confidence that nothing will go wrong. Instead, you plan for what to do if something unanticipated happens.

On the morning of launch day, we went to scale up our server matching service to the numbers we used in our tests, and to our great surprise, it refused to spin up more than half the copies we asked for. Server matching is a critical service, and in our testing, it needed a high number of copies to handle all the players we expected, so getting stuck at half capacity was a serious problem.

This wasn’t even the only pre-launch hiccup. In a case of unfortunate timing, our service host had an incident the night before - still ongoing at launch time - that affected us in a way that prevented us from deploying changes to any of our backend services using the tools we had relied on for months. Our ability to fix our services was killed at the same time one of our services needed fixing.

We had workarounds for these problems, but they were not quick fixes. We were going to need to break apart our deployment tools and move our services around manually, but this was not something we could sneak in before the doors opened to all our players. Minutes before launch, we estimated that we could handle maybe 120,000 - 150,000 players before things started to fail, and we crossed our fingers that we’d be able to resolve our issues before the player count crept too high.

Well, you know how that went.


The Next 5 Days




What unfolded over the next five days was a blur of emergency fixes and risk management. As it so happened, our first two pre-launch problems were only the tip of the iceberg.

In software, you sometimes run into a problem called “cascading failure.” When different parts of a software system rely on each other, an error in one part can cause errors in all the other parts as well. This can make it look like the entire system is failing even though only one part actually is. Finding the root cause of the failure is very difficult when everything is failing all at once.

The server matcher problem had caused a cascading failure in our systems. When players fail to connect to a server, they usually just try again, meaning our struggling server matcher had to deal with 2-5x the number of requests it would normally need to deal with. In many cases, players would get through the first half of server matching but would fail the second half, meaning servers would bring themselves online and then shut down again because a player never connected. Servers booting up and shutting down put pressure on our other services, and so some of those also started to fail.

When we fixed the server matcher, some other services continued to fail because they had trouble recovering from the chaos. Our deployment tools still required attention, so fixing these other services was a slow and manual process. To clear up the backlog, we needed to scale some of our services way past what would have been needed had the game been working smoothly. This brought with it new challenges since cloud services have some built-in soft caps that we would never have hit under normal circumstances, and working around those caps took time and, in some cases, code changes. We identified and cleared away many of these caps before launch, but we hit new ones as we scrambled to rearrange our backend.

You may be wondering, if the problem was recovering from too many players, why did we not simply have some downtime, or at least turn on player queues, to alleviate the pressure? The answer is that we did, but the problems ran deeper than the server matcher. At various points during the launch, we brought down our services, and many of you found yourselves in long queues as we struggled to keep up. Inevitably, once we started letting you all back in, we would run into problems again, and we could not clearly see what those problems were until we scaled everything up so high that the services stayed online and operational even though they were strained from other failures in other areas.

Sprinkled in with our deployment woes, we had a couple of genuine code problems in our services. One of them - one of the few examples where we straight up overestimated our ability to scale - was a bottleneck in how quickly we could process requests for a single town in a single region of the world. In Last Epoch, once you reach the “End of Time” town, you will always load into that town when you enter the game from character select. We knew ahead of time that this bottleneck existed, but we underestimated what would happen when we suddenly fixed a broken game and hundreds of thousands of players all tried to access the same town at the same time, in the same part of the world. We thought that the server matcher would be a little slow at first, and then it would start to fix itself as more and more people got into the game. What happened instead was that it took so long to get into the game that almost no one actually succeeded, so they quit and tried again, over and over, and the problem never tapered off. This was not the kind of problem we could fix just by adding more copies of the service, so it took some emergency problem solving.

Each time we found a problem and fixed it, we immediately saw improvement, but this allowed even more players to enter the game and play, which would uncover the next problem, and so on.

The Final Fix



By Sunday, we had managed to fix, deploy, and scale our services to the point that most of our backend was handling over 200,000 players just fine, even through flurries of retries and errors. Yet amidst all the chaos, there was still some strange behavior happening on the game servers that was causing problems. During our periods of stability, when the game was up, players were able to connect to game servers, but their connections would often time-out once they got there.

Every time a player joins a game server, the game server checks to see if the player is in a party. This is a simple operation, and in all of our testing, we saw that this check completed very quickly, even under heavy load. Yet our logs were telling us that checks for a player’s party were taking up to a minute, sometimes even longer.

Over the first four days, we made a number of changes to the party service to alleviate pressure. Each fix helped for a while, but inevitably, it always slowed down again until players could no longer join servers. On day five, with all the other backend problems solved, we were able to get a more precise look at the party errors, and the culprit was a single, innocent-looking line of code. A single line of code that was supposed to be the most efficient request in our entire party service but instead ended up consuming all of the service’s resources under heavy load, slowing the entire service to a crawl.

It took about an hour on Sunday afternoon to rearrange the party data so we could check over 200,000 players’ party memberships without bringing down the service. We deployed the fix, the game came back up, and it’s been online ever since.

Lessons Learned



This blog post is 2,000 words long, and there is still a whole lot more we could say. Internally, we have been cataloging and planning for ways we can improve, and we want to ensure that our processes moving forward include the lessons we have learned from the launch.

First, we learned the hard way that our internal tooling for deploying our services was not robust enough on launch day. Our tools were too brittle (breaking when certain services went down) and too inflexible (too many manual adjustments needed in an emergency). When the system came under strain, we couldn’t deploy our fixes quickly, and we usually had to cause additional downtime to do it. Had our deploy tooling been stronger, we could have gotten to a stable state much more quickly. Our top priority on the team right now is improving our tooling so we can effectively respond to situations like these.

Second, our services themselves could be more flexible. We had to make many changes over the course of the launch that should have been simple configuration changes but instead required a full redeploy, which turned simple fixes into long, risky operations. This weakness was identified ahead of time and has now become a top priority to improve.

Third, we need to do a better job of anticipating how player behavior affects our backend. Our testing was designed to simulate how and when our services would break, but we needed to spend more time considering how the conditions would continue to change once things started failing. Now that we’ve seen what happens during a fraught launch - how players put pressure on services differently than when everything is working - we’ll be able to incorporate that data into future tests.

(As an aside, our testing effort, in general, was a huge success. Despite how it may look from our launch struggles, our testing identified many other critical issues leading all the way up to the week before launch, and without those efforts, we might still be trying to fix the game to this day. Even though we’re post-launch, we plan to continue incorporating load testing into our regular development cadence going forward.)

Thank You



With the launch behind us, we’re all very thankful to you players for showing so much passion for the game, despite the rocky start.

EHG started from a group of gamers hoping to make the ARPG they wanted to play, and now EHG is a group of gamers hoping to make the game YOU want to play. Your passion, enthusiasm and, when deserved, criticism have continued to encourage our teams to deliver that game and push the definition of what an ARPG can be, should be, and will be. Our team could not have made Last Epoch what it is today without you, and we will endeavor to keep making the game you all deserve.

Here's to a bright future, Travelers.
Logo for Last Epoch
Release:30.04.2019 Genre: Action-Rollenspiel Entwickler: Eleventh Hour Games Vertrieb: Eleventh Hour Games Engine:keine Infos Kopierschutz:keine Infos Franchise:keine Infos
Einzelspieler Mehrspieler Koop

Aktuelle Steam News
Neue Steam News in der ePrison Datenbank

Season 2 and Beyond - Closer Look
Last Epoch
09.12.24 17:00 Community Announcements
Modelling Last Epoch | From Idea to Implementation
Last Epoch
02.12.24 17:38 Community Announcements
Eterra Monthly: November 2024 Edition
Last Epoch
29.11.24 17:39 Community Announcements
Last Epoch Soundtrack Available!
Last Epoch
20.11.24 17:00 Community Announcements
Eterra Monthly: Oct. 2024 Edition
Last Epoch
31.10.24 16:00 Community Announcements
Music of Eterra | An Interview with EHG’s Lead Composer
Last Epoch
25.10.24 16:00 Community Announcements
The Immortal Uprising: End of Event Wrap-up
Last Epoch
21.10.24 16:05 Community Announcements
Last Epoch 1.1.7.6 Patch Notes
Last Epoch
21.10.24 16:05 Community Announcements
Last Epoch Hotfix 1.1.7.5
Last Epoch
02.10.24 16:00 Community Announcements
Last Epoch Hotfix 1.1.7.4
Last Epoch
25.09.24 15:25 Community Announcements
Last Epoch Hotfix 1.1.7.2 Notes
Last Epoch
21.09.24 19:02 Community Announcements
Last Epoch Hotfix 1.1.7.1 Notes
Last Epoch
20.09.24 00:11 Community Announcements
The Imperial Uprising Event is now live!
Last Epoch
19.09.24 16:00 Community Announcements
Last Epoch: The Imperial Uprising Event Patch Notes & Downtime Notice
Last Epoch
17.09.24 16:03 Community Announcements
The Imperial Uprising: Event Details & Poll Results
Last Epoch
13.09.24 16:00 Community Announcements
Patch 1.2 Timeline, 1.1 Event Updates, and Cycle Poll
Last Epoch
10.09.24 16:32 Community Announcements
Last Epoch Hotfix 1.1.6.2 Notes
Last Epoch
05.09.24 19:54 Community Announcements
Last Epoch Patch Notes 1.1.6
Last Epoch
04.09.24 21:58 Community Announcements
Announcing 1.1 Refresh & Cycle Event - The Imperial Uprising
Last Epoch
30.08.24 15:59 Community Announcements
Last Epoch Patch Notes 1.1.5 Redeploy
Last Epoch
20.08.24 16:11 Community Announcements
Last Epoch Patch Notes 1.1.5
Last Epoch
08.08.24 16:01 Community Announcements
Last Epoch Patch Notes 1.1.4
Last Epoch
01.08.24 16:01 Community Announcements
1.1 Lore Hunt Event Winners!
Last Epoch
31.07.24 16:02 Community Announcements
Last Epoch Hotfix 1.1.3.1 Notes
Last Epoch
26.07.24 19:28 Community Announcements
Last Epoch Patch 1.1.3 Notes
Last Epoch
25.07.24 18:57 Community Announcements
Last Epoch Hotfix 1.1.2.4 Notes
Last Epoch
23.07.24 17:18 Community Announcements
Last Epoch Hotfix 1.1.2.3 Notes
Last Epoch
21.07.24 20:49 Community Announcements
Last Epoch 1.1.2.2 Hotfix Notes
Last Epoch
19.07.24 20:06 Community Announcements
Last Epoch Hotfix 1.1.2.1 Notes
Last Epoch
18.07.24 16:29 Community Announcements
Last Epoch Patch 1.1.2 Patch Notes
Last Epoch
16.07.24 18:40 Community Announcements
Last Epoch Hotfix 1.1.1.2 Notes
Last Epoch
13.07.24 19:17 Community Announcements
Last Epoch 1.1.1.1 Patch Notes
Last Epoch
12.07.24 20:16 Community Announcements
Lore Hunt Event Start!
Last Epoch
12.07.24 16:00 Community Announcements
Last Epoch Patch 1.1.1 Patch Notes
Last Epoch
11.07.24 20:43 Community Announcements
Last Epoch 1.1.0.3 Hotfix Notes
Last Epoch
10.07.24 21:10 Community Announcements
Last Epoch 1.1.0.2 Hotfix Notes
Last Epoch
10.07.24 17:18 Community Announcements
Last Epoch 1.1.0.1 Hotfix Notes
Last Epoch
09.07.24 21:48 Community Announcements
Last Epoch Patch 1.1 Is Live!
Last Epoch
09.07.24 16:14 Community Announcements
Japanese and APAC Language Announcement!
Last Epoch
08.07.24 16:57 Community Announcements
Last Epoch: Harbingers of Ruin Patch Notes & Downtime Notice
Last Epoch
05.07.24 16:00 Community Announcements
Lore Hunt Event Details
Last Epoch
03.07.24 18:00 Community Announcements
Harbingers of Ruin: Quality of Life & More
Last Epoch
03.07.24 16:42 Community Announcements
Harbingers of Ruin: What’s New?
Last Epoch
25.06.24 16:01 Community Announcements
Last Epoch 1.1: Harbingers of Ruin Twitch Drops
Last Epoch
21.06.24 16:11 Community Announcements
The Light Before The Dark Race Event
Last Epoch
20.06.24 16:00 Community Announcements
Last Epoch 1.0.8.4 Hotfix Notes
Last Epoch
19.06.24 16:04 Community Announcements
Pinnacle Content Poll Results
Last Epoch
14.06.24 16:08 Community Announcements
Last Epoch 1.0.8 Patch Notes
Last Epoch
15.05.24 16:33 Community Announcements
Last Epoch Official Teaser Trailer | Harbingers of Ruin
Last Epoch
10.05.24 16:02 Community Announcements
Last Epoch Roadmap
Last Epoch
07.05.24 18:00 Community Announcements
Last Epoch Hotfix 1.0.7.3
Last Epoch
30.04.24 19:19 Community Announcements
Last Epoch Hotfix 1.0.7.2
Last Epoch
23.04.24 17:25 Community Announcements
Last Epoch Patch 1.0.7 Patch Notes
Last Epoch
18.04.24 16:07 Community Announcements
Last Epoch Patch 1.0.6 Patch Notes
Last Epoch
10.04.24 17:04 Community Announcements
RMT and Exploit Statement
Last Epoch
02.04.24 17:02 Community Announcements
Last Epoch Patch 1.0.5 Notes
Last Epoch
27.03.24 17:44 Community Announcements
Last Epoch Hotfix 1.0.4.2 Notes
Last Epoch
22.03.24 18:17 Community Announcements
1.0 Launch Retrospective
Last Epoch
20.03.24 22:01 Community Announcements
Last Epoch Patch 1.0.4 Notes
Last Epoch
20.03.24 16:21 Community Announcements
Mid-Cycle Balance Survey Recap
Last Epoch
14.03.24 21:09 Community Announcements
Last Epoch Hotfix 1.0.3.2 Notes
Last Epoch
14.03.24 20:11 Community Announcements
Last Epoch Patch 1.0.3 Patch
Last Epoch
13.03.24 16:40 Community Announcements
Mid-Cycle Build Balance Survey
Last Epoch
08.03.24 17:02 Community Announcements
Last Epoch Patch 1.0.2.1 Notes
Last Epoch
07.03.24 19:47 Community Announcements
Last Epoch Patch 1.0.2 Notes
Last Epoch
06.03.24 17:03 Community Announcements
Autumnal Wrap & Bees Pets Update
Last Epoch
05.03.24 20:45 Community Announcements
Last Epoch Hotfix 1.0.1.2 Notes
Last Epoch
01.03.24 22:32 Community Announcements
Last Epoch 1.0.1 Patch Notes
Last Epoch
29.02.24 18:08 Community Announcements
Post Launch Mid-Week Update
Last Epoch
27.02.24 18:35 Community Announcements
Last Epoch 1.0.0d Patch Notes
Last Epoch
23.02.24 19:44 Community Announcements
An Update to the Refer A Friend Program
Last Epoch
23.02.24 02:21 Community Announcements
Our Gift To You & Thank You
Last Epoch
22.02.24 00:00 Community Announcements
Server Update
Last Epoch
21.02.24 21:52 Community Announcements
Last Epoch 1.0 is Live!
Last Epoch
21.02.24 17:03 Community Announcements
Last Epoch 1.0 - Release Patch Notes & Downtime Notice
Last Epoch
19.02.24 17:00 Community Announcements
New Items & Affixes | Coming to Last Epoch February 21st
Last Epoch
18.02.24 16:59 Community Announcements
Factions, Falconer, and Warlock | Coming to Last Epoch February 21st
Last Epoch
17.02.24 16:59 Community Announcements
Healing Hands Skill Tree | Coming to Last Epoch February 21st
Last Epoch
16.02.24 16:59 Community Announcements
New Enemies & Models | Coming to Last Epoch February 21st
Last Epoch
15.02.24 17:03 Community Announcements
Gathering Storm and Tempest Strike Rework | Coming to Last Epoch, Feb 21st
Last Epoch
14.02.24 17:00 Community Announcements
Last Epoch & Starforge Collaboration Giveaway
Last Epoch
12.02.24 19:32 Community Announcements
Celebrating a Milestone - 1 Million Copies of Last Epoch Sold!
Last Epoch
09.02.24 17:51 Community Announcements
Last Epoch launches at 11am CST, February 21st 2024
Last Epoch
02.02.24 19:00 Community Announcements
Last Epoch Deluxe and Ultimate Editions
Last Epoch
24.01.24 16:19 Community Announcements
Launch Trailer: Echoes from the Void
Last Epoch
19.01.24 19:22 Community Announcements
Trade & Item Factions
Last Epoch
11.01.24 17:00 Community Announcements
Twitch Drops - What you need to know for Launch!
Last Epoch
09.01.24 17:02 Community Announcements
Beta 0.9.2L Patch Notes
Last Epoch
13.12.23 18:05 Community Announcements
November 2023 Development Update
Last Epoch
17.11.23 17:00 Community Announcements
Beta 0.9.2k Patch Notes
Last Epoch
16.11.23 17:39 Community Announcements
Beta 0.9.2j Patch Notes
Last Epoch
27.10.23 23:09 Community Announcements
Beta 0.9.2i Patch Notes
Last Epoch
26.10.23 16:03 Community Announcements
Last Epoch 1.0 launches Feb 21st, 2024!
Last Epoch
20.10.23 18:01 Community Announcements
Beta 0.9.2h Patch Notes
Last Epoch
19.10.23 21:46 Community Announcements
Beta 0.9.2g Patch Notes
Last Epoch
18.10.23 16:28 Community Announcements
Beta 0.9.2f Patch Notes
Last Epoch
05.10.23 16:07 Community Announcements