does your server have a real window / GUI ?

Started by
11 comments, last by kaysik 19 years, 5 months ago
hi, quick question. first of all, let me give some info that would be important. im working on a 2d online RPG. the game will be a persistant world, this means i will run a dedicated server. i won't be distributing the server, so only i will run it. anyway, should i give the server a real window w/ OpenGL rendering capabilities? or, should i not bother and just stick with the windows console. what do you guys do ? my one concern was speed. console output is S - L - O - W. i know that rendering font to the screen via OpenGL is probably 10x as fast. however, the server won't be doing this much, except maybe when i want to execute commands, which, wont be very often if at all. so really, this isnt a real concern. but im thinking there might be other reasons to do this. just lookin for what you all do and your opinions. thanks.
FTA, my 2D futuristic action MMORPG
Advertisement
Er.... for windows I'd probably look at writing it as a Service.
sorry, i dont follow... what do you mean exactly ?
FTA, my 2D futuristic action MMORPG
services
interesting, so a service is just a console app that is run invisably in the background? i don't really have a need for that. i plan on buying a machine when the game is ready for a decent beta and running a dedicated server. i dont need to completely hide the program since i'll be the only one using it and dont mind it being up. i guess i was just curious what everyone else does and what recommendations they had for me.

thanks again.
FTA, my 2D futuristic action MMORPG
You don't want to burden your system with the bus hogging and interrupt latency of a graphics window.

What we do is write a HTTP listener right into the server. You connect with a web browser, and can check up on status, change parameters, etc. This is for a large, commercial, online world. The cool thing with this is that you can also automate management using Perl, or wget, or C#, or whatever you have that can issue HTTP requests.

You also want to look into logging. We log interesting events (a fair bit of them) to files on disk. We close and re-open the files every so often, so that a log rotater can rotate them out of the way so the disk doesn't get full. This is good for getting debugging or audit data after the fact, but a "tail -f" on the file will spew a lot :-) Luckily, disk writes are pretty much free in our system, as they are asynchronous and we're not disk bound on the log disk.

We also log important player-affecting events into a database, where we can run reports on them ("which of these three guns is most effective" etc).

Last, operational alerts and things that possibly warrant investigation get logged to syslog, and listened-in to by a central syslog client, which collates reports from all the machines in the cluster. There's also some other monitoring software like Cricket, Nagios and Logsurfer which helps managing it all.

Some of this may be overkill for you, but I do recommend the HTTP interface. Make sure every subsystem has a good meta-data description of itself, so that you can easily create a HTTP service for it, and you're ready to go.
enum Bool { True, False, FileNotFound };
hi hplus,

thats pretty interesting that you have a web interface to the server. what kind of machine are you running it on? im planning on setting up a MySQL server on my machine soon which will store character and account data and stuff on it. i was planning on setting up triggers to log things that seemed suspicious. so you guys take statistics on things and log it? do you do this to help make changes to the balance of classes / weapons and stuff?
FTA, my 2D futuristic action MMORPG
What exactly were you planning on doing with this window?

Another big reason to go the route that hplus recommended is that you usually don't want to have to physically go to the server to administer it. With commercial systems you often don't have physical access because the actual box is being managed by either your IT people or some hosting firm on the other side of the city (or country for major applications).

One thing to keep in mind with remote administration is that you need to make the administration access points very secure.


-Mike
HPlus,
Interesting post. Thank you, you've shedded light on a lot of issues I've been thinking about with my server.
Quote:
thats pretty interesting that you have a web interface to the server. what kind of machine are you running it on? im planning on setting up a MySQL server on my machine soon which will store character and account data and stuff on it. i was planning on setting up triggers to log things that seemed suspicious. so you guys take statistics on things and log it? do you do this to help make changes to the balance of classes / weapons and stuff?


Lots of questions. Perhaps I should write a post-mortem sometime :-)

Our server cluster has a number of servers with different roles, such as simulation, routing/visibility, transactional applications, database servers, web servers, etc. We used to run some of them on Win2k Server, and some on Linux, and both had bugs. However, we had the source, so we could fix the bugs in Linux, but we couldn't do that with Win2k, so the production servers currently run only Linux.

Almost all boxes are the same: cheap, 1-U, Pentium 4 servers with a single Ultra-ATA drive. For the database back-end servers, we use a 2-U enclosure, and RAID-1 for the database logs and RAID-5 for the database table space. We still boot off and page to the single ultra-ATA drive :-)

We use MySQL in production, and are happy with the price/performance ratio. Actually, we're happy with the performance, no ratio necessary.

Our data warehouse can be used to tune anything and everything in our system. We mostly worry about the virtual economy, as our game elements are light enough or real-world enough to not need much tuning.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement