[Reusable] Terminal - a netplay enhancement plugin

This thread contains content that may be reused, modified, or ported by anyone.
Status
Not open for further replies.

wolfs

Watch Symphogear
Sonic Team Junior
Kart Krew™️
Judge
SRB2 is naturally a real fun game to play online. There's always lots of servers up for it, which is nice. SRB2's netcode kind of makes playing on those servers a little harder though, so that can prompt one to put up a dedicated server as people on the MB like ToBeFree have done. Unfortunately, SRB2's dedicated servers are rather dull due to SRB2's lack of multiple admins and other things that are almost always in dedicated servers for other games. These servers often end up dead despite how much more stable and speedy they are in comparison to the other, user hosted servers, which instead contain active administration. By this logic, dedicated servers are practically useless.

Not anymore.


What we have here is Terminal, a mod dedicated to enhancing netplay overall but designed specifically with dedicated servers in mind. Influenced by mods from other games (primarily SourceMod), Terminal incorporates numerous features that we believe improve SRB2's overall netplay experience.

Features:
  • Voting/Polls - Terminal's largest feature by far is without a doubt its voting system. The system gives the players of the server the ability to call a vote on various predefined subjects, or even their own unique ones! This includes changing the map, kicking players, resetting maps, and also changing gametypes. To make things more customizable, the vote system has plenty of modifiable variables to suit the needs of the server. The vote system allows the users to operate the server independently, which is something dedicated servers have desperately needed for a very long time.
  • Permissions - SRB2 has lacked multiple admins on servers for well over eight years and this is a problem. Typically, two users whom the server host trusts with admin privileges will fight for the @ symbol to the left of their names. Those days are gone. Terminal includes a fully featured permissions system that allows for multiple admins, different levels of control, and specialized permission levels. Just in case you're wondering how much we really did, SRB2's original admin system has been scrapped entirely in Terminal. Professionals have standards.
  • Unique Extras - Okay, admit it. Sometimes you like to screw around on your server. We understand this. And for that very reason, Terminal contains a completely optional Cheat module that allows you access to many singleplayer cheats in multiplayer. But wait - there's more! We have our own neat commands put in there too, ranging from warping commands to displaying the locations of all players on your screen. If you like hosting casual servers, this module is probably something you'd enjoy.
  • Modularity - Terminal has lots of stuff. We understand this. Some people might not want as much of the large quantity of stuff as others may. So for this, Terminal is fully modular. You can select which components specifically you would like to load onto your server such as our cheats, help, and login modules. With this, you can make your server more lightweight while still carrying the benefits of Terminal.
  • Customization - Terminal is a mod that we intend for others to modify, and to make that a bit easier, we have a neat splash screen system in place. An example splash screen wad is included with Terminal that includes three graphics that can be used for an automatic joiner splash screen. The difference between the graphics is the levels of transparency, which are settable in Terminal's scripts. This is especially useful for advertising your dedicated servers(or showing off!)

Instructions:
  • 1. Extract Terminal files to your SRB2 folder
  • 2. Rename "term_logins.ex.txt" to "term_logins.txt" if you want to use the login module
  • 3. Host the server
  • 4. "exec loadall.txt" in the console, or manually load whichever modules you want (make sure to load "Terminal_Core.lua" first)
  • 5. DEDICATED SERVERS ONLY: Execute the "iamtheserver" command in the console.
If you find any issues with hosting, make sure to tell us about them. After Terminal is up and running, you can use "term_help" in the console to bring up a help dialog that will cover basic use of the mod.

Changelog:
  • v1.2
    • Use server instead of dediServer, since 2.1.15 has fixes for the former variable on dedicated servers.
    • Fixed showplayers for 2.1.15
    • charability and charability2 commands take lowercase input and allow omitting prefixes
    • destroyallenemies command only iterates through mobjs once
    • Minor changes in commands to prevent errors
  • v1.1
    • Countless fixes to countless features
    • Code has been completely refactored
    • findmap command, get map numbers by inputting level title
    • Players are not renamed to add symbols, PlayerMsg hook is used to make symbols appear next to names instead
    • Terminal_Help.lua has been merged into Core
    • Symbol colors can be changed locally with permissioncolor cvar
    • Moved showplayers command into Core
    • Lots of sanity checks added
    • addflags/removeflags added, simple method for manipulating player flags
    • charability and charability2 commands now accept CA_ and CA2_ constants as inputs
    • runonwater command added
    • destroyallenemies command added
    • spawnobject command added, spawns the given object 100 fracunits in front of the player
    • Polls with custom strings have been separated into the startpoll command
    • Maplists are generated automatically through mapheaderinfo, SRB1 maps are a manual override
    • Terminal_Maplist.lua has been removed
    • Voting, Login, and Cheats scripts will throw errors if Core is not added first
    Detailed changelog showing the locations of these changes can be found here. Revision history can be found on GitHub.
  • v1.0
    Initial Release.

LightDash.org Mirror
GitHub Repository


Notes:
Terminal is a rather large mod, so we've assembled our own temporary documentation for it here. We'll be moving this onto the wiki soon enough, however.

Terminal, while perfectly stable by itself, is meant to be a framework for servers. It is intended for others to modify Terminal to fit the needs of the server and as such, we strongly recommend that before you host a server with a modified branch of Terminal, you prefix any modified scripts or rename them entirely to avoid conflicts with scripts from other servers. As an example of this, I am hosting a 24/7 dedicated Terminal server with my own uniquely modified scripts to fit my (sort of) needs. If you really want, you can connect to this server at lightdash.org and I'll try to get a webpage up for it soon.

Some parts of Terminal can be really (and I mean really, really) dangerous if certain checks are removed. We advise you not to remove them for the sake of your server's security.

Remember, Terminal doesn't make any modifications to the way SRB2's information handling is done. You still shouldn't send sensitive information over SRB2 or expect things like your passwords to be 100% secure. Be careful and don't use any passwords that you use for other services as well.

Feedback is wonderful, we want plenty of it! Also make sure to report the usual stuff like odd tendencies and bugs. If you have any questions to ask or suggestions to push, the best place to ask is our channel, #SRB2Terminal on irc.esper.net.

The full credits for this mod are located in our external documentation link, for those interested. Everyone listed in the co-authors here has made a significant contribution or is an active main developer of the mod.

Terminal is, as previously stated, free to be modified and reused by anyone as long as proper credit is given. Unique server modules based on Terminal are something great that we specifically want to see.


Have fun!
 

Attachments

  • srb20133.png
    srb20133.png
    74.7 KB · Views: 2,793
  • srb20014.jpg
    srb20014.jpg
    183.9 KB · Views: 3,126
  • srb20125.png
    srb20125.png
    44.8 KB · Views: 2,854
  • srb20124.png
    srb20124.png
    48.3 KB · Views: 2,781
  • srb20132.png
    srb20132.png
    53.3 KB · Views: 2,346
  • Terminal-v1.2.zip
    22 KB · Views: 2,360
Last edited:

fickleheart

ms reflec beat stan
By the way, to better facilitate Terminal derivation (and also if anyone wants to contribute to the base), we have a GitHub repository available. Changes and new features will most likely show up here between MB release milestones, but in exchange it won't be reliably stable, so please use the MB releases instead if you want a stable experience. (This message will self-destruct once it has been metamorphosed into the OP.)

Lemme also reiterate the importance of feedback. There's a lot of complicated stuff going on in here, especially in systems like logins and voting, so please tell us of any errors you find, especially if they result in removed hooks or similarly bad things.
 
Last edited:

SonicX8000

Graphic & Sprite Modder.
Judge
Now this is rather something and I can tell that a lot of work was put into this. Welcome to releases.
 

DrStephen

My PhD is made out of foam.
...Unless there's a draw.
Also, I gotta say this makes server hosting SO much easier AND cooler. Great work guys.
 

TOGM95

What am I again?
Oh goody! I lua with server thingys! This is what I was expecting to appear so I could use it. Good Job!
 

SteelT

Developer
Sonic Team Junior
Kart Krew™️
It is possible, but remember that Terminal is a framework, so it can be modified by the user to include objectplace.
 

Sapheros

Member
Um, yeah, it's kind of embarrassing to ask, how do you execute loadall.txt? The wiki happens to be down and adding the files through a launcher causes an error saying "Command **** already exists"
 

wolfs

Watch Symphogear
Sonic Team Junior
Kart Krew™️
Judge
Um, yeah, it's kind of embarrassing to ask, how do you execute loadall.txt? The wiki happens to be down and adding the files through a launcher causes an error saying "Command **** already exists"

"exec loadall.txt" in the console. Don't use a launcher because replaced commands break with them, and Terminal replaces lots.
 

dany777

Addicted to Bubble Bobble
This will come handy, but i have a problem.

I dont know how to execute the loadall.txt, i tried to do the command addfile loadall.txt, but nothing, i tried using the SRB2 launcher, adding first the core, then the rest, but it says command password already exists
 

Sapheros

Member
This will come handy, but i have a problem.

I dont know how to execute the loadall.txt, i tried to do the command addfile loadall.txt, but nothing, i tried using the SRB2 launcher, adding first the core, then the rest, but it says command password already exists
We just discussed this earlier, you need to use the command "exec" to add loadfile.txt.
 

fickleheart

ms reflec beat stan
Try changing up the order in which files are added. (Core should still be added first, but otherwise the order isn't super-important.) If that doesn't work, post the splash WAD and I'll take a look to see if it might be a problem with the way it's set up.
 

SteelT

Developer
Sonic Team Junior
Kart Krew™️
Did pride convert his splash to Doom GFX before loading? If he didn't, that's the main cause for the crashing.
 

Sapheros

Member
Okay, I have found a problem even worse than the problem before, executing loadall.txt automatically causes the game to crash. All of the files are there. The only thing that might be different is i had a couple of wads on start-up, could that be the case?
 
Status
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Top