0
\$\begingroup\$

In tera online when you enter a battleground or go into a city with hub with hundreds of players all in one place, The game has to download the faces, hairstyles... armors and weapons of every single player... and the players that are not downloaded look like T posing Black untextured manequins.

so to avoid the same problem, since each of my players has like a lot of hairtyle sets, weapon and armor sets and 30 face sets + eyes...well... it gets easily in the 100'000 vertexes in total per player which can take quite a while to download.

and no, calling and deleting pieces of the players as scenes is not an option :/, all assets are into one file and are turned visible/invisible when the player wears their respective items.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Do not download. Those assets belong to the client. \$\endgroup\$
    – Alex CB
    Jun 21, 2023 at 20:17
  • \$\begingroup\$ When saying you have 30 face sets, you don't need to transmit the vertices... You can just transmit the face set number... Same for all other things like weapon, armor, hairstyle... Keep the transfered information small. Just to make an example, when transferring a text document, you would not send it pixel by pixel... You would send the text in form of byte array and the font name, size... \$\endgroup\$
    – Thomas
    Jun 21, 2023 at 20:53
  • \$\begingroup\$ @Thomas i don't understand. \$\endgroup\$
    – Cei
    Jun 25, 2023 at 14:43

1 Answer 1

2
\$\begingroup\$

Art assets should be client-sided, not server-sided.

The 3d meshes and textures of those "hairtyle sets, weapon and armor sets and 30 face sets + eyes" should all be bundled with the client. When a new character comes onto the screen of a client, then the server only tells that client the ID number of each of those assets. So communicating the whole visual appearance of a character only takes a few bytes of network traffic.

However, some loading time on the client might not be completely avoidable. As your library of character parts grows over the course of development, you will soon run out of RAM / VRAM to keep all those textures and meshes permanently in memory. At that point it becomes necessary to load those from the file system whenever a character with a previously unloaded art asset comes onto the screen. To optimize those loading times it can be useful to have each of those assets as an own file, or if you want to use some archive format to bundle assets, choose one that can unpack individual files without having to unpack the whole archive.

But loading assets from files will still take time. So if you don't want the game to hang while loading and parsing all those files, you will have to temporarily represent characters with placeholder assets while the actual art assets load in the background.

and no, calling and deleting pieces of the players as scenes is not an option :/, all assets are into one file and are turned visible/invisible when the player wears their respective items.

Well, then you should revise your architecture to make it an option. Your approach might work while you still have a low number of variations. But when you get into the thousands of character art assets (which isn't even that much for an MMORPG), you will experience a very long initial load time of the game, and a while later you will start losing players because after an update their computers no longer have enough memory to keep all the new art assets loaded.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .