Monsters and Memories (Project_N) - Old School Indie MMO

Hatorade

A nice asshole.
8,170
6,565
So efficient and uninspired for main hub. You only need like three hangout spots. But if you need to be next to something to craft or whatever it is annoying as fuck to wade through the masses.
I fucking hate the Bank in PoK, frame drops just looking in that direction…

If they allow you to turn off PCs when crowded I am down for above but most of the cities in EQ and EQ2 were fine.
 

Kirun

Buzzfeed Editor
<Gold Donor>
18,651
34,696
If you’re afraid of a big city wait until you find out merchants are picky about what vendor trash they’ll buy off you.
Captain America Lol GIF by mtv


When I think back to what I loved about EQ/"old school" MMOs, it's definitely giant, empty mega cities where you can't sell a rusty short sword to anybody but the blacksmith!
 

Tearofsoul

Ancient MMO noob
1,791
1,256
I personally think big city is what makes MMO massive in the first place. Hell, even some of the open world single player games offer full blown cities.
 

Woefully Inept

Ssraeszha Raider
8,764
33,730
Getting closer! I just want to get in and run around in a new world.

Screenshot_20230313_140140_Discord.jpg


This was also posted. Most of it spoiled for length.

Hey all! Over the weekend we held two Stress Tests with our Friends and Family tester community. Ali wrote up a very nice breakdown in our Slack. There was no overly sensitive information, so I thought it'd be fun to share it with you all! Enjoy. (Apologies for the incoming wall of text crit!)


Hey y'all! So some interesting issues, observations and metrics from our load tests.

We got around 80 clients both day

I will break down these issues into their own threads belo

**On the first day these issues were noticed:
1. The immediately noticeable micro stutter that happens approx every 20 seconds. The timing made sense as we have an expensive Core.Models.ClientModel.Save() happening on that timer as well

2. When massive AoE hits clients, it causes the whole server to stop while it processes what happene

3. Players that are far away and are supposed to exit your sphere of influence sometimes hung around indefinitel

**On the second day these issues were noticed:
1. There was visible latency on positional updates when a lot of players were close around you, but this improved as you moved away. This was consistent with my mass bot tests last year and we have logic that needs to be fine tuned to counter act this

2. Someone had made a corpse art piece at the entrance. It was great! Showed us that corpses add unreasonable loa

3. The errors: 7B2EE78E and 6D24DB45 were observe

**General Issues unrelated to Network Test:
1. The model fail errors were noticeable (nameplate visible but invisible model). These may be solved with the new texture and attachment systems but will have to be tested when FnF is updated to latest master

2. Group member UI bugs. When you zone or die the entire group UI becomes unusabl

**Observations:
- As expected, NPCs add a lot more load on the server than Clients. There was virtually no increase in load between <10 players and >70 players

- The network library held up really well! I always had a nagging fear that with more clients we would see packet queue issues. However, there were none that I could se

- That said, we need better network profiling tool

- There is a lot of optimization required in client saves and positional updates especially when we have a lot of users in one are

**Metrics:
- Night harbor (our heaviest zone BY FAR) runs at 2.4% memory required (~400MB), over 41 threads, and uses up CPU load 75% (out of 800% max) @ approx 3GHz (per core, 8 cores on the server). This is at full load with multiple dragons. When there wasn't much going on it was hovering at around 55%. The main driver of this load is navigation and the very large navmesh that NH has

- Save stuttering was noticed when we got to over 40 client

- Positional update stuttering is noticed when more than 40 clients and tons of corpses were at the gate, and you are within 100m of the gat

**Overall:
It was a great success! I think for our first load test, this was amazing and we got a lot of good metrics and I think I have a clear plan for us to solve the above

Considering nothing crashed, nothing ran out of memory, the zone did not break in any way, and all the issues we found are things fixed with minor optimizations, we are in a really good place. I look forward to fixing them and then testing with hundreds in the same zon

**Microstutters:
I have already solved this. I have converted the save algorithm to a scheduled queue, where we queue the saves on a timer then handle saving over multiple frames and use transactions as much as possible

Further optimizations: All client saves should be done via queue, even for things that require immediate save, unless we specifically say we need this INSTANTLY (such as trades or taking a port

We need to have live database performance profiling that we can pull from a running server (maybe by enabling it with a gm command, then extracting the results and also disabling it.)

**AoE:**
We need to look into this one more. There are two things at play here:

1. The client stutters anyways when a lot of VFX is spawned at the same time. We can likely queue these and spawn them over 4-10 frames without it being noticeable at all to the user.

2. I think when the damage, deaths, and buffs are applied, they all immediately save, causing an 80 client mass save in one go destroying our database pipe lol.

**Players not exiting SOI:**
We need to audit the code that defines this. Maybe there's a logic issue there.

Positional update delays when when many entities (and especially when many clients) exist within a SOI:

This is in effect not too difficult to solve, but explaining it will be tough because it also relies on knowledge of both our SOI system and other techniques that we can move to.

The way SOI works right now for us is that we check all entities against all other entities to see if we need to enter or exit them from any SOI. The logic goes:

for entity a of entities:
for entity b of entities:

var shouldBeInSOI = b.shouldBeInSOIof(a)

if (not in SOI and shouldBeInSOI) then run entryCallbacks
if (inSOI and not shouldBeInSOI) then run exitCallbacks

Then separately we run:

var positionUpdates
for client a of clients:
for entity b of a.sphereofinfluence:
positionUpdates.Append(b.position)
a.send(positionUpdates)

This has a couple of pain points:
1. Building packets is relatively expensive.
2. This type of packet accounts for over 90% of all our traffic.
3. It is exponentially growing load with more clients within each other's SOI.
4. Each client must build its own positionUpdates.

**Possible solution:**
Client's SOI has many variables (such as being a pet of client, or a party member, or in combat) but a big portion of what defines SOI is distance. This can be substituted for a graph distance. Especially useful would be an octtree, but I see that it may be simpler and ultimately easier to implement a regular 3D grid.

So instead of checking if an entity is X meters away from another entity, we check if the GRIDPOSITION is within X GRIDDISTANCE from another entity.

What this ultimately allows us to do during building packets is to build a positional update PER GRIDPOSITION and then append the relevant ones by directly serializing them like we are doing currently for positionUpdates (skipping the garbage collection), and then finally appending any additional required out of distance SOI entities.

This would be much, much faster in my estimation by orders of magnitude, since we don't need to do positional reads per entity squared.

We may also find that its more suitable to send this all in two packets, one that is faster using only grid position, and another that is slower for in SOI but out of grid distance.

**Removal of existing optimizations:**
We currently have an optimization where if we exceed a certain number of clients within SOI, we start throttling update packets. This is I believe the main thing being observed with the slower interpolations and especially when clients are jumping around.

**Other factors:**
Implementing parabolic trajectory code and using that for jumping will smooth out the noticed clipping into the ground when clients are jumping around in high latency or throttled position update situations.

We should also let the client know and allow the client to adjust its expectation of the frequency of updates for smoother interpolation. Currently, client is still interpolating using its original assumptions which can cause jerkiness.
 
Last edited:
  • 2Like
Reactions: 1 users

Hekotat

FoH nuclear response team
12,017
11,474
  1. Hi Everyone! There have been a lot of questions about our first Open/Public Stress Test. We originally targeted the end of this month (March 2023), but have decided to change that based on details that will be explained below. The following plan is now firm: Public Stress Test
    April 28-29th (Fri & Sat)

    This will consist of two 4-hour sessions (one each day), with the possibility for them to run longer than 4-hours if conditions allow.

    The focus of these two sessions is Technical Stability at Scale.

    This includes everything from download and installation, through in-game/network/server performance.

    Data derived from this test will enable future tests that focus on gameplay in general or other specific facets of the game.

    This stress test allows us to gauge where we're at in development and plan for future sessions.
    The reasons for the change in timing are as follows: A recent Friends & Family Stress Test provided us with data on optimizations and bugs that needed to be fixed. Plus, this places the test right after the end of Ramadan. The new date gives us the next 3 weeks to wrap up the work on these issues, and then 2 weeks of time dedicated purely to testing and prepping the test build. As a side benefit, it also gives us more time to get in the new character art and address a number of other art and gameplay issues/additions, that while not the focus of this test, will make your first impression that much better. We'll update the information provided here in the coming days to include specific times and any details we might have left out. We're currently evaluating the best window of time for our North American folks, since you/they make up the vast majority of our community and team. We're looking forward to seeing you on the Friday, April 28th and Saturday, April 29th. Thanks! And just for fun, click below to let us know if you're planning on joining us those days. (edited)

    ✅

    34
    🤷

    1
    ❌

    2

 
  • 4Like
Reactions: 3 users

Nick

Trakanon Raider
10
84
Wasn't expecting a public test so early, even if it's just stress.

We promised the community last year that we wanted to get people in the game by the end of the year. While we were able to start a Friends and Family test by then, our true goal was to hold one of these Public Tests as well. There were many reasons for this, the main ones were:

- To let you guys come try it, because we promised it
- To show the community that there is indeed a playable game
- To see how the server and client perform during a load test

After this Public Test, and our Friends and Family testing wraps up not long after, we're going to be going a lot harder on content development. When we started it was only 3 of us working on the core development for about a year. Now the team size is up to 16. We have people and pipelines in place to facilitate content creation. We're also in the midst of a big character art revamp, because we recently added a 3D Character Artist with Senior experience in the Game Industry, having previously worked on several MMOs and other big titles.

We're in the planning stages for this next stage of development, but what I can say is that we plan on working on two brand new dungeons, while heavily revamping/outright replacing one of our outdoor zones. We're also planning some revamps to a couple other of our other less developed zones. We're likely going to start targeting 3 month milestones for our work.

If everything goes well with that milestone, we will probably be starting on a new biome outside of our desert region for the milestone after that.

I'm really excited to see what we can do when we put this test behind us. By the way, I appreciate all the kind words and good feedback here. I'm always keeping tabs on this thread and others.

Hope to see you all for the test!
 
  • 19Like
  • 2Solidarity
Reactions: 20 users

Secrets

ResetEra Staff Member
1,871
1,878
By the way, I appreciate all the kind words and good feedback here. I'm always keeping tabs on this thread and others.

Hope to see you all for the test!
To let you all know the level of detail that Nick puts into feedback gathering, he personally PM'd me after I posted in this thread mentioning the merchant thing, and wanted to get suggestions of what I'd recommend.

The MnM team actually aggressively pursues feedback and it's great to see.
 
  • 3Like
  • 1Solidarity
Reactions: 3 users

Kaines

Potato Supreme
16,798
45,741
To let you all know the level of detail that Nick puts into feedback gathering, he personally PM'd me after I posted in this thread mentioning the merchant thing, and wanted to get suggestions of what I'd recommend.

The MnM team actually aggressively pursues feedback and it's great to see.
Well if this game is shit, at least we can blame YOU. :)
 
  • 6Worf
Reactions: 5 users

Nirgon

YOU HAVE NO POWER HERE
12,659
19,487
Hey Nick Nick , if you want some great feedback, hit up Mr. Sox Mr. Sox and maybe Nirgon Nirgon , they have their finger on the pulse of old school MMO's like no other.

I've already chatted him up about particles and keeping it classic, we are mostly on the same page on things and I KNOW he's fully vetted with the "solved meta" of classic EQ

So, I'd say we are good there and knows I'm on the good guys team to say the least.
I'd of course provide additional feedback after some hands on. I want nothing more than for this to succeed.


..... not sure how he will do with Mr. Socko lol
 
  • 1Like
  • 1Mother of God
  • 1Solidarity
Reactions: 2 users

Kaines

Potato Supreme
16,798
45,741
I've already chatted him up about particles and keeping it classic, we are mostly on the same page on things and I KNOW he's fully vetted with the "solved meta" of classic EQ

So, I'd say we are good there and knows I'm on the good guys team to say the least.
I'd of course provide additional feedback after some hands on. I want nothing more than for this to succeed.


..... not sure how he will do with Mr. Socko lol
Dear lord Nick Nick What have you done?????
 
  • 2Worf
Reactions: 1 users

Mr. Sox

Trakanon Raider
2,145
1,221
I had a deep thought. What was the movie where the guy keeps going back in time to save his girl and she keeps dying. I think old schools mmo are like the movie occams razor
 
  • 2Like
Reactions: 1 users

Kaines

Potato Supreme
16,798
45,741
I had a deep thought. What was the movie where the guy keeps going back in time to save his girl and she keeps dying. I think old schools mmo are like the movie occams razor
I can only think of two.

The Abyss
Butterfly Effect
 

Fogel

Mr. Poopybutthole
12,094
43,734
I've already chatted him up about particles and keeping it classic, we are mostly on the same page on things and I KNOW he's fully vetted with the "solved meta" of classic EQ

So, I'd say we are good there and knows I'm on the good guys team to say the least.
I'd of course provide additional feedback after some hands on. I want nothing more than for this to succeed.


..... not sure how he will do with Mr. Socko lol

Did you at least put in a disclaimer that he should read the Pantheon thread before considering any of your feedback?
 
  • 2Like
Reactions: 1 users

Nirgon

YOU HAVE NO POWER HERE
12,659
19,487
Did you at least put in a disclaimer that he should read the Pantheon thread before considering any of your feedback?

We've Norrathed and I think he's aware of the other thread. I wouldn't go to the retarded troll thread for any serious takes on anything. He's not in there stamping around cuz instead he's living the dream making a game, no reason for Brad mads. We all vent the scourge of the corporate yoke in different ways I guess.
 
  • 1Like
Reactions: 1 user

Mr. Sox

Trakanon Raider
2,145
1,221
I think M&M has a connection with Eg7. Shawn always talks about living in Sweden anting to return home to austin