ID:150202
 
Hi!

Thanks to the people who responded to my bug note. Now that I can get online and logged in I've really started to consider this as my new MUD platform. Scary though as a daunting task lays before me.

I am a primary coder on a Rom2.4 MUD (Rom2.4 is a text-based MUD, derivative from the original MERC codebase). To give you an idea of the amount of code in this, the original code is about 50,000 lines, currently our code is around 160,000+ lines. I've started to convert things to run off a MySQL backend and slowly get things more using C++ object oriented code.

I am just starting to run into machine limits though. The game has gotten complex enough that with 30 players, 10,000 rooms and 8000 mobs, 160 areas that things such as CPU usage and memory usage are beginning to become an issue.

I'm wondering if BYOND is powerful enough for this type of game. For one, I'll have no STL, no sorted lists etc. And no SQL backend and I'll lose a lot of freedom. I presume that the code for the BYOND engine is not publically available.

So can anybody answer my questions in regards to limits of a large complex game?

Thanks,

Joe
Hi Joe,

I cannot really give you a very good answer to your question since no one has created a world of that magnitude just yet. There are a few limits in place regarding the number of object appearances-- I think it is 65,000 or so-- but we'll probably bump that up, if Dan hasn't done so already. I do not think that the player count will be too much cause for concern; we have had games with 40-50 users without much problem. The technical limitation on the backend will be managing the large numbers of objects in the world, but even if the current system doesn't handle it that well we can always try to optimize things. I think that's what most of the developers here probably like about BYOND more than anything else-- they can always yell at us when things aren't working!

With a game of this size, the implementation will of course make a big difference on the performance. I think that in a game where the ratio of NPCs far outweighs that of PCs you'll want to have a system where the room data can be loaded dynamically only when people are present. I imagine that your MUD code probably does something like this, and it should be possible to port such an algorithm over to DM. The main inefficiency in the server is that it currently loads in the entire map files at once, but with a text MUD you need not even use such things and can control the state of the load manually. The garbage collector should be smart enough to free up unreferenced memory so I would expect that this task should be easier than in many other languages.

Other people have requested SQL support in the past, so the item is already on the List. The standard C++ libraries can be ported over to BYOND as needed. Deadron, for instance, has created a very useful set of utility routines in the Libraries section (Deadron.ddlib). I think a sorted list is in there somewhere.

One reason that users have been reluctant to create MUDs in DM is that we currently don't support the standard telnet access, so players will need BYOND to play your game. Clearly this is necessary for some of the augemented BYOND features, such as the stat-panels and browser support, but there is no reason (other than time and effort) that we can't eventually have special version of the server that
accepts telnet connections and relays the user output text to the port, filtering out everything else. In fact, I believe there is a MUD standard for outputting various elements (like statpanels) and clients that support it, so if it were really in demand maybe a future version of the server could even format output along those lines.

Zilal has been working on a pretty ambitious MUD for some time, so you may want to talk to her. Her biggest problem with the system was the lack of a "natural" parsing of commands ("get the red sword"), but she has decided to tackle the problem by writing her own parser to preprocess the commands ... pretty slick, if you ask me.

My best advice would be for you to write some simple things in the system to see if it feels right for you. If you like it, you might try writing a basic MUD framework where you can encode rooms in savefiles or some other format and expand the world that way.

Good luck!