Results 1 to 10 of 708

Hybrid View

  1. #1
    Player
    GiR_Zippo's Avatar
    Join Date
    Dec 2021
    Posts
    39
    Character
    Nonoko Yamada
    World
    Shiva
    Main Class
    Conjurer Lv 52
    So far in Dawntrail, on Crystal, the only time things got really bad when somehow we managed to shove 1k people into a single instance for a single boss fate. The server survived but it was not a pleasant experience. The other instances, however, were working great.
    Hmm... 1k player on one server instance and the server can't handle it. Sounds like a normal issue with the update tick, that's the limitation.

    If they are used the basic 1&1 how to build a MMO-Server the map, client and network should run on different threads (of course multithreaded) and glued together via push-pop queues.
    If this is the case, the map-thread updates everything happening on the map, build the packets out of the box which aren't requires client datas (monster move, vfx, s.o.) and hand them over to the routine which publishes them to the clients in range (normally the server should know where are the clients are located on the map and this routine is publishing parallelized).
    Basically everything on the map which's not static is in a queue on the map and this queue will be processed by every update tick.
    Please keep in mind, this object-queue is normally not proccessed multithreaded.
    That's the easy part.

    The hard one is, when you or 1k ppl intercating with the boss, if you gettn the aggro the boss will ask for your position and turn around.
    For this you have to get the position from your player-object, whichs mostly in a mutexed region, so every other routine has to wait until the active one has finished the access since the C++ below C++14 or C# dosn't have specialized read many - write once mutex, if not custom implemented like ACE was doing long time ago.
    Now we have to push this packet to the players involved (this does the "clients in range" routine).

    Getting further: All of them doing damage to the boss, it gets the spell data you hit with, calls a sub to calculate the damage and passes everything to the boss-script too, in case it has to react to your actions.
    Now we'll send the response to you and every player in range.
    Please keep in mind, this will handled by the map-tick for every player, boss, mob, NPC, s.o. in the object-queue.

    The tricky part
    The player-object. Normally the map and its queue keeping track of it, unfortunately you have to wait until it's your player-objects turn to be updated (damage calculation, get collision, update position, send data, s.o.).

    Oh and there is more: The script engine SE is using for the bosses. I guess it's LUA.
    Compared to native compiled routines, LUA is kinda "slow", but it has a huge advantage:
    You can change the scripts and reload on runtime.


    Had to shorten everything... hope this will help a tiny bit to understand what is going on under the hood of a MMO-server.
    (Programmed such server things long time ago, so everything is kinda vague)

    Songbirds as an example (one of the most famous bard groups)
    Don't know them. ¯\_(ツ)_/¯
    (3)

  2. #2
    Player
    VoidsentStatus's Avatar
    Join Date
    Apr 2022
    Posts
    379
    Character
    Voidsent Veneer
    World
    Halicarnassus
    Main Class
    Paladin Lv 100
    Quote Originally Posted by GiR_Zippo View Post
    Don't know them. ¯\_(ツ)_/¯
    https://www.twitch.tv/SongbirdsFFXIV
    https://x.com/songbirdsffxiv?lang=en

    Back before DJ's, when bards were heavily everywhere, as far as I was aware, they had the biggest song catalogue out of all of the groups, and used to host hours long concerts playing famous songs from irl, other game genre's, and previous ff's. they used to do this in open world in limsa, gridania, etc. but eventually you could pay for them at venues, weddings, etc. They eventually expanded and played on eu and jp as well from what I remember back then. you can find a decent chunk of some of the concerts on youtube.
    (0)

  3. #3
    Player
    KazukoHimura's Avatar
    Join Date
    Jul 2024
    Location
    Limsa Lominsa (RP), Gridania (WoL)
    Posts
    66
    Character
    Kazuko Himura
    World
    Halicarnassus
    Main Class
    Viper Lv 100
    Quote Originally Posted by GiR_Zippo View Post
    -Oooh MMO programming details-
    Welp, we're done here. Sqenix, hire this person!
    (0)
    I apologize deeply for anything I've written that has hurt someone.

  4. #4
    Player
    GiR_Zippo's Avatar
    Join Date
    Dec 2021
    Posts
    39
    Character
    Nonoko Yamada
    World
    Shiva
    Main Class
    Conjurer Lv 52
    Quote Originally Posted by KazukoHimura View Post
    Welp, we're done here. Sqenix, hire this person!
    huh? It was not my intention to "attack" someone, I'm sorry if it was taken that way.
    I just had the good intention to explain what's going on in the background for ppl who may not know and are interested in.
    Unfortunately 3000 words aren't enough to get into detail...
    (0)
    Last edited by GiR_Zippo; 08-16-2024 at 02:55 AM.

  5. #5
    Player
    KazukoHimura's Avatar
    Join Date
    Jul 2024
    Location
    Limsa Lominsa (RP), Gridania (WoL)
    Posts
    66
    Character
    Kazuko Himura
    World
    Halicarnassus
    Main Class
    Viper Lv 100
    Quote Originally Posted by GiR_Zippo View Post
    huh? It was not my intention to "attack" someone, I'm sorry if it was taken that way.
    I just had the good intention to explain what's going on in the background for ppl who may not know and are interested in.
    Unfortunately 3000 words aren't enough to get into detail...
    Oh, no no no no no no! I'm not attacked, I'm impressed! It probably didn't come off that way because sometimes its hard to convey intent through text.
    (2)
    I apologize deeply for anything I've written that has hurt someone.