ET: Legacy

ET: Legacy - free open source multiplayer fps game
ET: Legacy - free open source multiplayer fps game
ET: Legacy - free open source multiplayer fps game

ET: Legacy Team Blog

Container System

You may have noticed that since a few weeks your main menu looks wonderfully clean. This is due to the container system which was initially introduced in ET: Legacy 2.77 and fixed in the 'Recapture the City!' 2.77.1 hotfix. In short, this system isolates all paks downloaded from an ET server and ensures your client looks clean and most importantly, remains usable on launch.

clean_menu.jpg

This is a major change addressing a long-standing issue, which we probably all are familiar with. After playing on a server the main menu has been tampered with in one form or another. This raises several issues for regular players. For example could it be that the main menu was translated by the previous server (quote6.png below), it also raises security concerns (quote7.png below) as those modifications to the game client happen without permission, but in general, it's probably simple annoyance (quote3.png below) by the constant alterations. Unfortunately, @stealth6 (quote2.png below) put it quite well, as the ET community lost the battle. However, Radegast, our founder, indicated plans to fix this issue (quote4.png below) once and for all and we finally did! 8 years later, but we got you Radegast! Your plans and vision for this project are in good hands. At least we hope so!

isolation.jpg

Short backstory

"Players. Admins. PK3s. Developers. Long ago, the four parties lived together in harmony. Then, everything changed when the Admins discovered the tilde ~. Only Radegast, founder of ET: Legacy, could stop them, but when the Players needed him most, he rightfully took a well-deserved retirement. Eight years passed and the current ET: Legacy dev team developed a new way to protect Players, the dlcache container system. And although our motives were good, we botched the early tilde block attempt in 2.76. But, We believe the dlcache container system can save the Players."

Long backstory

When connecting to a server, the pk3 get downloaded to your fs_homepath. Historically, all files from all the servers you connect to, get put either into etmain or the mod directory (e.g. legacy, silent,...), which are the same directories the game pulls the content from when launching the game. This enabled server admins to force players to download pk3 containing the aforementioned custom menu files, which the game then uses to initialise the main menu on launch. Because all the files from all the servers got put into the same respective directory, a war broke out between servers for who can put more Z or tilde ~ characters in front of their custom menu pk3. This was done because the game goes through the respective directory on launch alphabetically and overwrites previously loaded files with whatever comes after it. In other words, the game loads pak0.pk3 and finds a menu file. It then loads z_custom_menu.pk3 and finds a menu file which it uses to overwrite the one from pak0.pk3. Then zz_custom_menu.pk3 comes along and even after all the Zs the tilde (~~custom_menu.pk3) pk3 come along overwriting everything ones again. Hence, in 2.76 we tried to implement an early measure against all of that, by blocking the pk3 with the tilde ~ character from being downloaded. This, however, prompted righful backlash by our community as it also prevented you from joining those servers even if you understood and accepted the risk. Another solution was required and here we are.

Functionality

Now, pk3 get downloaded into a new sub-directory called dlcache rather than the base directories (e.g. etmain, legacy,...). This means that for example maps get downloaded into fs_homepath/etmain/dlcache instead of fs_homepath/etmain and server pk3 get downloaded into fs_homepath/legacy/dlcache instead of fs_homepath/legacy. These new sub-directories do not get initialised on game launch, which means that custom paks do not get loaded. This is different to the initial plan of the per-server container system described in the initial proposal here as that would have required players to always download all pk3 when connecting to a new server, because even maps would have been stored in each per-server container separately. That would have presented an immense inefficiency for your required disk space, which is why we are even more happy with the current implementation.

Things to keep in mind

  • Third-party mods Exception to this are third-party mods (e.g. silent, nq,...) as changing the folder structure is very likely going to break functionality of those mods. Therefore, it is recommended to keep legacy as the default mod on game launch (+set fs_game legacy).

  • Manual work-around The good news is that you can still manually install custom menu files for quick access to your favourite server. Simply check the pk3 from your favourite server or ask your server admins which of them contains the custom menu and move that to fs_homepath/etmain. Ideally, to minimise any risk, that pk3 should only include the necessary menu files, so please double check with your server admins if you have any concerns.

  • Local host When trying to host a game locally or when simply using /map or /devmap the contents of dlcache are not considered. You will have to manually pull those maps that you wish to test/play locally from fs_homepath/etmain/dlcache and put them into fs_homepath/etmain.


For further questions as well as if you, dear player, server admin, interested follower or else, are interested in contributing to this project, we are always looking for helping hands to speed things up, so please don't hesitate to reach out to us on Discord.


Quotes:


written by Kemon 6 months ago

No comments
You need to login before being able to comment