I noticed on the early-modder program form that you had a radio button for "Server Management" mods. I've got some great ideas for that realm and was wondering if anyone could clear up the sort of limitations we'll have to work with. What? -How deep will reporting from the server be? For instance, will we be able to configure a valve to dump a log entry every time a unit is engaged/destroyed/created? Or will we at least have higher-level things such as commanders, when destroyed by who, on what planet, etc? For my purposes what would be fantastic is if you could just have a very low level option to just drop a log entry on almost everything (structures creation initialized on what planet by which player and another entry for when it's completed, etc etc etc). -Assuming there's some logging, what format(s) will it probably be in? YAML? JSON? Custom? Would it be too much to ask for access to the format? Will we be able to make a mod to extend logging (such as MySQL, rsyslog, etc) -Will there be a remote management API? Or even better will it be possible to design a mod with hooks into a live game on the server such that we can write our own APIs (and then you guys don't have to spend time on it )? -Will it be too much to ask to spawn or despawn units, planets, weapons, or anything else into a live game? An example of this would be Minecraft-style where I can simply spawn new items, blocks, etc from the server. Why? I'm a sysadmin by trade and the thought of doing heavy server automation with my new favorite DRM-free Linux-compatible game is exciting. The kinds of tools available now for system and network administration are incredibly powerful and would let us all do some crazy stuff depending on our limitations. Okay, like what? Things like building hooks to use with Puppet (very popular system configuration management tool) to allow me to dynamically provision, install, configure, start up, and keep a game server up and rolling as well as adjust aspects of the game in real time. Another idea I'd LOVE to do if I've got extensive logging is to set up some Logstash rules (amazing log aggregation and real-time indexing/search tool created at Dreamhost) such that I could instantly search for game events, players, and such. This would also allow me to through Kibana (a front-end) to dynamically create RSS feeds of games in progress for players/admins/community to follow or even trigger actions on alert such as on critical error messages signaling Puppet to kick off a policy to dynamically rebuild/restart the server and restore the game to a prior save point and then e-mail all players that the server's back up and ready to continue...automatically and clean. Depending on the logging level I could even do crazy things like start up a statsd server on the server and have it report to a Graphite (mega-awesome dynamic graphing tool built by Orbitz) so I could have instantaneous graphs on any and every event for any slice of time the admin cares to report on (click a button and see how many units intiated combats laid against a graph of unit deaths for a particular unit for all players over the last twenty minutes). I could even make it public facing with several graphs for commentators, game critics, admins, players, or anybody really to follow along with what's going on. Even better is if I've got all of the above I could do something insane like make it part of the Puppet Policy to always have at least four players and twenty planets in a star system. Logstash would trigger Puppet if the number of players currently alive (AI or human), planets, or other parameters which would hook into the game server and spawn as many commanders, planets, or other to re-establish the desired game world effectively creating an ETERNAL battle that players could hop into and out of, like an MMORTS. I could then build and configure a few Virtual Machine servers and configure Graphite/statsd/Logstash to keep, graph, and index logs for a few weeks and then pump that in real time to a web front end, perhaps complete with a spectator video players from Open Broadcast System so players could watch, monitor, test, correlate, and otherwise enjoy a continuous, eternal, ever-escalating solar system of destruction. I don't know, these were just a few very small ideas about how server management modification could open up a whole new level of administration for newbies and veterans alike. I'm definitely anxious to hear about what sort of limits we'll be working with. TL;DR Will we be able to build mods for complete and total live game server control? If not, what limitations will there be?
I'm also quite interested in the server side mod aspects I just lack an idea as to what I want to do for a mod at the moment, thus I chose no experience.
I suppose while doing some spitballing with a friend it would be fun to experiment with transferring game state information to other servers. Such as a server mod that allows an admin to connect to another game server and transfer player information as well as a hand-off to the game clients. You could even pretty simply make it in-game by spawning a black hole and have players target their commanders to it. If they got there it would signal the server to send the player's information to the NEW game server and tell the client to redirect game state information to the new server, effectively letting you take your battle from game server to game server. Actually, that sounds like a lot of fun. Since the game is server-client based and supposedly will allow for drop-in/drop-out gameplay it shouldn't be too hard to hook into that to allow players to bring their armies to other servers, creating a universe of warfare.
The design for server side modding is still in it's infancy. The most useful thing would be to describe what you want, which you are doing. I'll explain a bit more about the plan when I've got some more time (e.g. not dealing with just having launched).
Sounds awesome, sir, and thank you for the reply. The above ideas are definitely the big ones, the foundational stuff, from which we could build even more amazing things from. If I've got any other big "want" stuff I'll post it here, but yeah those are definitely the big ones. Oh, and a pony. Totally want a pony.
I was thinking - why not keep things simple - have the server side emit everything over a websockets(ws). Admin sets up a ws listener on a hostort - PA server is configured with the details. When the PA server starts up - it connects and server events & commands are all sent over ws. It's platform agnostic, integrates cleanly into what PA is currently doing on the client - allows rapid prototyping/testing and it's easily mocked - allowing server side admins & devs to build backends without any dependencies other than the message/command format. Server side admins & devs can work in any language they feel comfortable in - pretty much all languages have ws support - and it's RT so there's no polling. It would be simple to build wrappers for higher level tools if admins wanted logs sent to syslog/files, etc It's also allows a clean distributed architecture to be built as the server hosting the ws server doesn't need to be built to run games.
In that case I TOTALLY call Twilight Sparkle. For science. Actually while not a "server" mod this gives me a great idea for a unit and biome replacement mod for My Little Pony. Replace all the bots, vehicles, and more with ponies, blasting each other with brilliant multi-colored rays of violent friendship. Sadly I'd need to nab an artist to make it happen. Meanwhile back in the realm of server management it'd be nice to be able to design a custom overlay gui with your own buttons to control server aspects. The IDEAL way to do this would be not to bother Uber with having to create a widget that we overlay for each and every feature but RATHER just create an API that allows us to hook into the low level functions of management such as add/remove bots, planets, cameras, and/or run Javascript for UI announcements to players (such as pop up windows that notify them the server's going down). In this way the community can extended the game as far as they can dream and Uber doesn't have to waste resources catering to everybody's individual whims. Just some more "wants" and what I'd do with them. I hope this clarifies the sort of thinking about the kinds of mods I listed earlier. I know not every game server admin likes to take an active role so for many people it may not be a big deal but it would allow those active admins (or fans of automation) to create rich, powerful, and dynamic servers for players.
Websockets are anything but simple, clean, or easy to work with. What you gain in "can point a web browser at it", you lose in "can write lightweight software for it". Instead of a simple delimited stream, you have to deal with all the complexities of HTTP just to start the thing.