Sometimes I just want to check the rules, and I don’t plan on playing at that moment. And I feel bad for taking one player slot from the server just because I only want to remind myself of current rules.
I am not sure how doable this is, but it sounds really good imo. SPECIALLY for 18+ servers which may not make it clear before you join or simply servers where the rules may not be tasteful to you.
The rules are on XML iirc, so it may be easy to just open a browser page with it?
TLDR: Rules are based on guidebooks, there is currently no system to render guidebooks outside the game. This is a very hard ask and would need a bunch of moving parts to nail it.
The biggest issue I see here is how do we get it to the launcher in the first place? The rules file is inside the downloaded client in the form of a guidebook entry. And downloading the client just for the rules files will kinda defeat the whole purpose of this feature.
I guess you can expose the rules XML file via the HTTP API [1]
Although now there is a new issue… how do we render it properly? Guidebooks are complex and can have entities (in game items with their descriptions if you shift click them), links to other guidebook entries… and the rules file is just a guidebook so… how do we handle this? A server may use a feature of the guidebook for their rules page, and a half broken page could potentially look bad, and the server cant do anything to solve it!
Porting the guidebook parser into the launcher just for this is not a good idea and bad for maintainability.
The most obvious choice is the web browser but… If you are going to code a guidebook parser for the web browser, then you may as well introduce the feature to parse all other guidebook entries too…
There is a good reason no one has worked on such a feature yet sadly as much requested as it is… the guidebook is complicated to “port” outside the game due to its vast amount of features.
One hard one to solve probably being “how to get assets and stuff over without downloading the game which we want to avoid here”… sure the game server can send them it would be a web page after all, but that’s even MORE stuff you have to implement now… do you see how deep this rabbit hole goes?
This would also probably need an update on the ss14 hub side as well, since otherwise you visiting the rules of a (not favorited) server will expose your IP address to them (Current behavior is all the basic stats are forwarded to you by the hub server until you attempt to join the server). Not the worst thing for most, but if you are not interested in the server, the unnecessary PII transmission may suck for people.
Honestly, for this issue, this is the easiest to solve and the least minor to worry about. The big issue is the above one.
Otherwise I agree this would be a wonderful feature. And would love to see it.
Which the launcher uses to get player count/info on where to download the client etc before switching to the actual game’s net code protocol. ↩︎
I was worried the rules could use the guidebook and potentially be filled with graphics/other complex interactive elements.
In case if forks use only subset of features that guidebooks use for rules, just to create new pages and display text, it could be agreed upon to support it for the launcher as well - still two major efforts, but at least it would be easier than trying to recreate the UI from the server you haven’t even connected to yet.
Or, as alternatively, the subset easy to render by launcher could be decided by upstream, and then servers that want to have their rules exposed into the launcher, could just opt in into tagging their xml saying they are compatible, and all not ruleset friendly elements should generate warnings/be skipped.
Gonna be honest, if you are already writing a guidebook render you may as well go all out. I don’t think the launcher having support for rendering guidebooks outside of a button go open the page is a good idea either.
Even with limited guidebook features this may as well be building blocks for being able to use the guidebook outside the launcher/game.
A solution I could see working is that servers define an endpoint for rules. The rules sent on that endpoint are defined not in the guidebook format but just basic text with some tags like bold, italic, header and underline being parsed and allowed.
A downside this brings is that servers would have to maintain two versions of the rules file.
That’s also an idea I had, but I don’t like it for that exact downside
The main challenge is that the other better solutions are most likely outright impossible without major jank. You can’t do sprite views without a client and the test runners do not load sprites so you would need to run a full client.