|
|||||||
This is a discussion on "Developing from scratch" in the Top Mud Sites MUD Coding forum : This thread is split from another discussion, in response to a couple of comments about developing a mud from scratch. Originally Posted by Kylotan Of course, all those same code changes could have been applied to a completely fresh code base written from scratch in a few weeks these days, so it is bizarre that Locke is so attached to them. Originally Posted by Kylotan Personally I would prefer to program a MUD from scratch in a different language these days - Moores Law means that we have almost 10,000x more CPU power these days compared to when DikuMud was ... |
|
You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our MUD community today! If you have any problems with the registration process or your account login, please contact us. If you are a registered member of the old TMS forums, please click here
|
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 | ||
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Developing from scratch
This thread is split from another discussion, in response to a couple of comments about developing a mud from scratch.
Quote:
Quote:
Of course that doesn't mean that someone has less skill (or has invested less time) just because they started out with an existing codebase. What it means is that, from an entry barrier perspective, it is quicker and easier to get a game up and running if a big chunk of the design and development work is already done for you. And even in the long-term, starting out with an existing codebase can give you a big headstart, as long as you pick one that meshes fairly well with your design. While it's true that modern computers have far more RAM and CPU power available today than they did in the 90s, that doesn't help you much if you're using a mud hosting service that charges based on RAM and CPU usage. And even if RAM and CPU aren't an issue, a creative mud developer should have no trouble coming up with interesting features to take advantage of the available resources - there's no excuse for squandering them on sloppy development. Your choice of language is likely to be influenced by a number of factors, with each language having its pros and cons. There's no "need" to use C (or indeed any specific language) but that doesn't automatically make it a bad choice - perhaps you have own reasons for favouring it. Indeed, there's no reason why you even need to limit yourself to just one language at all, maybe you'd rather use a combination of two or three languages for different levels of development. Finally, telnet itself is just a network protocol, it doesn't define or limit what you can or cannot do. There is nothing stopping you from using it for a fully graphical mud if you wish. |
||
|
|
|
|
|
#2 | |||
|
Member
|
Re: Developing from scratch
Of course it requires more time, initially. But, just as there usually comes a time to trade in an old and creaking car for a new one because fixing it becomes too cost-ineffective, a similar time approaches when you take code that has been hacked at for 20 years and replace it with something cleaner and more maintainable.
Let's not pretend the Diku/Merc family is great code - you and I may know our way around it but it's still a mess, with little heed to the advances made in software engineering over the last 20 years. In particular next to nobody is coding in plain C these days except those writing OS kernels or code for tiny devices, and for good reason - it's much harder to maintain and extend than a higher level language is. It has a niche role in 2010 and rightly so. Quote:
Quote:
Quote:
We're in an age where people are writing high speed servers in Javascript and Python which can handle much more traffic than any DIKU mud has ever or will ever have to serve, and with the advantages of being superior languages for high level text handling. You could probably host a typical DIKU on your phone these days. Yet still we have people thinking that we need C because every cycle counts. If someone really wants a Diku-style game, and doesn't care much about adding new features, then sure, there's no point starting from scratch. But your extensibility and maintainability is crippled by comparison. And I do think the mud community has suffered from failing to move beyond the code of the early 90s. |
|||
|
|
|
|
|
#3 | |||||
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
Creating a mud from scratch can be an enjoyable and rewarding project, but there seems to be a common misconception that it will automatically result in a better game. In fact, the only thing it guarantees is more work. If your main goal is just to create a fun, playable game, I would suggest going with an established codebase. Quote:
Take a look at NakedMUD for example - it's a compact and efficient mud server written in C, but it also supports embedded Python, allowing you to develop your own mud without ever messing with the underlying C code unless you want to. LPmuds are a similar story with their division of C driver and LPC mudlib. Quote:
Identify what you want to do, and then decide on the appropriate tool for the job. Don't pick the tool before you even know what needs to be done. Quote:
Basic cost for 2% CPU usage and 15MB RAM: $8 Increase CPU to 3%, 4%, 5%, 6%, or 7% = +$1, +$1.50, +$4,50, +$6, or +$7.50 Increase RAM usage: +$1 per 5MB. I notice you're hosted with Wolfpaw - I'm pretty sure they used to have a similar pricing system, although they don't appear to offer hosting to new customers any more, so I'm not sure what their prices are now. There are of course commercial muds out there, but for most of us this is just a hobby - all costs come out of our own pockets, and there is no income from the mud to offset it. There are usually no overheads for development, testing, licencing, etc - but hosting is one area where you'll often need to pay. However if the price of hosting rises too high, it will eventually reach a point where the owner can no longer justify or afford the expense. This results in a very different set of priorities compared to a commercially developed software project. Quote:
|
|||||
|
|
|
|
|
#4 | ||
|
New Member
Join Date: Apr 2009
Posts: 9
![]() |
Re: Developing from scratch
Quote:
Quote:
For example, I am programming my MUD server from scratch in Java but before I had a look at some of the existing codebases out there. CoffeeMUD has 370,000 lines of code and so many features that I wouldn't have required or used (or even known about). I think the only person that probably knows it very well is the author of it! Whereas if I make my own one, it's just got the things I require and I will know all of the code well enough to be able to develop features much quicker (once the 'core' code is done). |
||
|
|
|
|
|
#5 | |||||
|
Member
|
Re: Developing from scratch
Quote:
Quote:
Quote:
It's far faster, for example, to use a Python dict for object lookups based on a name than it is to do a linear search in a linked list in C for an object with that same string. Of course, someone with sufficient skill could write something broadly equivalent to a Python dict in C for your mud - after all, the Python dict is written in C. But Python already has it there for you. It's quicker both in terms of development time and in execution time. If you invest the extra development time you have a chance of coming close in terms of speed, a tiny outside chance of beating it in speed, but you'll never get that initial time back. Is it worth it? Same thing goes for networking - why have a naive select() loop in C when you have a platform-independent equivalent that uses more efficient alternatives like poll() or event-driven I/O in Python? Why hand-code your own 25-line bubble-sorts as you see in Smaug when you can use the list sort() method in Python and get a more efficient mergesort algorithm into the bargain? This is the problem with low level code machismo - people write code that does the wrong thing quickly and think that they're saving on some mystical overhead. Quote:
Quote:
Last edited by Kylotan : 07-30-2010 at 10:44 AM. Reason: Added correct quote attribution to first quote |
|||||
|
|
|
|
|
#6 | ||||||
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
Quote:
Don't get me wrong, I think it's great to see people creating muds from scratch. I just disagree with the idea that it should be done because it's easier than using an existing codebase. Quote:
However if you're using a well-developed codebase, it shouldn't require much in the way of maintenance anyway. How often do LPmud developers need to maintain their drivers? Quote:
Quote:
Quote:
What if you want to write "a tiny and highly optimised mud server with embedded support for a high-level scripting language"? What if you want to write "a fun mud using no more than 16K of source code"? What if you want to write "a mud with processor-intensive functionality but a low hosting cost"? What if you want to write "a mud that lets me showcase and/or reuse my extensive archive of C snippets"? What if you want to write "a mud just like my favourite Diku derivative, but with a few changes here and there"? Maybe you even just want to write "a mud in a particular programming that I personally enjoy using". As I said before, identify what you want to do first, and then decide on the appropriate tool for the job. If it really is simply the case that you enjoy programming in Python, and the mud is your hobby, then of course you should take that into account - the hobby isn't going to last long if you don't enjoy it! But even if you decide you want to write the mud in Python, that doesn't mean you have to start from scratch. |
||||||
|
|
|
|
|
#7 |
|
New Member
Join Date: Apr 2009
Posts: 9
![]() |
Re: Developing from scratch
Yeah, you can basically do anything so long as it isn't illegal (although I think IRC servers aren't allowed in some of the data centres). What is also great with a VPS is you have root access and complete control over the system/the software on it. I probably wouldn't be able to host my MUD (when it is ready, if that ever happens
) on MUD hosting because it is written in Java as opposed to C. |
|
|
|
|
|
#8 | |
|
Member
Join Date: May 2005
Posts: 208
![]() |
Re: Developing from scratch
Quote:
A MUD that runs on a LPMud driver is written in the script language lpc, and lpmud people call the actual MUD code for a "library" or "MUD lib" or something like that. So like Java developers wouldn't usually need to edit their Java interpreters, I doubt lpmud developers would need to edit theirs as the coding work would be done in the "MUD lib". |
|
|
|
|
|
|
#9 | ||||
|
Member
|
Re: Developing from scratch
Quote:
I'm not seriously arguing that everybody should be coding from scratch, just that it should be considered because it's not actually all that hard. I had basically 2 concerns which you quoted to begin with:
Quote:
Quote:
Quote:
|
||||
|
|
|
|
|
#10 |
|
Member
|
Re: Developing from scratch
Is it just me, or did this go from "why scratch" to, "RAWR PYTHON > C!!!!!"?
Language selection is an issue of personal choice when it comes to MUDs. We are not developing heavy or professional software that will be distributed to millions. And even if we were, language selection often is determined by the type of software you are making. C and C++ are used in intensive software such as professional games. C#, Java, Python, etc. are more often used in utility applications, where development speed and patch releases are a much bigger deal. Can we please return to the original topic, now? |
|
|
|
|
|
#11 |
|
Member
Join Date: Aug 2008
Home MUD: Archons of Avenshar
Posts: 51
![]() |
Re: Developing from scratch
My biggest argument AGAINST using an existing codebase --- specifically DIKU based -- is the damndable license. I have read more flamewars, taunts, hate posts, moronic wanna-be-lawyering and just plain old community disdain attached to just about any thread that deals with someone violating the license (or the spirit of the license) in some fashion. It makes one want to go out and write a server from scratch! ;-)
|
|
|
|
|
|
#12 | |
|
Legend
Join Date: Apr 2002
Home MUD: Threshold RPG
Posts: 1,019
![]() |
Re: Developing from scratch
Quote:
But for MUD designers, as soon as they could get a job anywhere else in the gaming industry they jumped at the chance. I've spoken to a lot of old game developers with 10-20+ years of experience over the past few years at gaming conferences and other gatherings, and it is a common point. MUDs were awesome, but since most people couldn't make a living at it they moved on. Some really brilliant programmers and designers totally left the MUD market out of necessity due to license limitations. And as you mention, the flamewars and vitriol that evolved from the license issue was poison for our "community." |
|
|
|
|
|
|
#13 | |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
As an example, the barebones NakedMUD codebase (written in C and Python) was used as the starting point for Maiden Desmodus, with the owner choosing to do most of his work in Python. |
|
|
|
|
|
|
#14 | |||
|
Member
|
Re: Developing from scratch
Quote:
Quote:
Quote:
|
|||
|
|
|
|
|
#15 | |
|
Member
|
Re: Developing from scratch
Quote:
Perhaps the problem is that these other code bases don't support Diku/Merc/Smaug/whatever area files and building a world from next to nothing has always been very daunting. (Of course, that gets us on to a 'Building a world from scratch' thread...) Was there ever any progress on a universal file format for muds? But it might also be that having a mud written in C is daunting to many people and so they just enter a cycle of relying on snippets and borrowed expertise to make tiny incremental changes to their game. By comparison, thousands of people who don't normally consider themselves programmers make server or client mods for WoW, Civilization 4, Baldur's Gate, Crysis, Oblivion, any of the Unreal-based games, etc., since they have an easier language to work with. |
|
|
|
|
|
|
#16 | ||
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
Quote:
The same holds true when it comes to creating a mud. The budding mud owner has a general vision of what s/he wants to create, and that vision will almost always be in terms relative to their former mud. If they're from a Diku background, then in most cases they'll want to create something very much like their former DikuMUD, and so it makes sense to simply download DikuMUD as a starting point. The same with LPmuds, MUSHes, and so on. It's a very difficult mindset to break out of, particularly if all your experience comes from just one mud. If you look at the people creating muds from scratch, in many cases you'll find that they're former players of a mud that isn't available for public download. An obvious example of this would be Avalon, which inspired the IRE games, which in turn have inspired several more muds. Sooner or later one of those muds will lower the entry barrier by releasing its source code, and then you'll see a surge of "stock" Avalon-style muds. I've seen a few muds that can import them, including CoffeeMud. It seems fairly unlikely to me that someone who's willing to move away from Diku would want to have a stock Diku world, though. |
||
|
|
|
|
|
#17 | ||||
|
Member
|
Re: Developing from scratch
Quote:
It's not just about what is possible - it's about how long it takes to get there! Quote:
Quote:
Quote:
|
||||
|
|
|
|
|
#18 | ||||||
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
Quote:
In particular: "The market for regular computer games is driven by the hardcore. The hardcore finishes product faster than newbies, and therefore buys new product faster than newbies. The hardcore understands design implications better than newbies. They won't buy a game with features they can see are poor; they select games with good design genes. Because of this, games which are good are rewarded by higher sales than games which are bad. In virtual worlds, the hardcore either wanders from one to the next, trying to recapture the experience of their first experience or they never left in the first place. Furthermore, in today's flat-fee universe, the hardcore spends the same amount of money as everyone else: developers aren't rewarded for appealing to the cognoscenti, except maybe through word of mouth that always comes with caveats (because of point #3)." Quote:
To repeat the process again would really require a big mud to release its source code. That would probably be rather undesirable. Quote:
The three main Aber-inspired mud families (Diku, LPmud and Tiny) have never really mingled much, and that hasn't changed. But Diku is probably still the easiest to get up and running. Cratylus did try to lower the entry barrier for LPMuds, but as far as I'm aware LPMuds are still the least numerous of the three. Quote:
Quote:
That aside, if you're creating an original custom mud then the hardcore Diku players probably won't like it - so you'll be marketing your game at those who are willing to try something different. If the first thing they see when they connect is stock Midgaard, the chances of them staying are minimal. Last edited by KaVir : 08-03-2010 at 10:04 AM. |
||||||
|
|
|
|
|
#19 | |
|
Senior Member
Join Date: Feb 2006
Location: Seattle
Posts: 266
![]() |
Re: Developing from scratch
Quote:
mudconnect.com: The Mud Connector - Mud and RPG game index, mudlist and reviews |
|
|
|
|
|
|
#20 |
|
Member
|
Re: Developing from scratch
Ah, I just hadn't thought of leaving the keyword field completely empty.
|
|
|
|
|
|
#21 |
|
Member
|
Re: Developing from scratch
Like many others, it appears, I've been working on my own game for quite some time, and I'm challenged by having to write from scratch.
There are two main reasons I'm going with scratch: 1. No MUD codebase that I've found thus far has an agreeable license; too many good licenses even make donation for the sake of upkeep illegal, and I would like to have the OPTION of accepting donations, merchandising, or investing into a related business without having the entire community come down on my head for it. (( As for the Open Source link that was posted, very few of the games listed there linked to a working page or download link; with no contact, there's no way of tracking those codebases down, thus making listing them rather moot. )) 2. No MUD codebase really offers what I'm looking for in terms of features. I'm not looking for stock, but I'd gladly rip out world content if that was my only barrier. A few games do offer -some- of the mechanical feature sets that I'm looking for, but are done so in a complicated manner or in a way that would make adding other features a headache. We have a truckload of codebases and MOST of them work almost precisely the same (or so it would seem). |
|
|
|
|
|
#22 | |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Quote:
I found the first year really hard to keep motivated - I actually stopped working my mud a couple of times, and nearly gave up completely, as I just didn't feel that I was making any progress. But once I had enough in place to start bringing in playtesters it got a lot easier.I think this is one of the areas where it can be really beneficial to start out with an existing codebase, even if it's something barebones - NakedMUD, ColdMUD, LPMud, etc. These can all speed up the initial development without forcing lots of unwanted features on you, allowing you to get something available for playtesting before the honeymoon phase wears off. It wasn't so bad with Gladiator Pits, as the mud was pretty small, and I was able to finish it off within a few months. But when it takes longer than that, that's when most scratch-written muds seem to start dragging their heels - muds such as The Cathyle Project or The Inquisition II, which showed incredible promise, but ground on so long that their developers lost interest. |
|
|
|
|
|
|
#23 | |
|
Legend
Join Date: Apr 2002
Home MUD: Threshold RPG
Posts: 1,019
![]() |
Re: Developing from scratch
Quote:
|
|
|
|
|
|
|
#24 |
|
Legend
Join Date: Aug 2007
Name: NewWorlds
Home MUD: New Worlds
Posts: 1,169
![]() ![]() |
Re: Developing from scratch
Agreed. You have to admit most of the "out of the box" MUDs are what proliferated the MUD market making it very hard for players to find quality text games.
|
|
|
|
|
|
#25 |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
Well 10 years ago we had the 16K MUD competition - 18 barebones codebases written from scratch. But I'm not aware of any muds built on them, other than a very recent adaption of the winning entry that's being used to demo a new web client.
And even today, despite the availability of all those open source codebases, most of the new muds starting up choose to go with one of the older established codebases. Right now on TMC's "new muds" list there are: 3 LPMuds 13 DikuMUDs 16 TinyMUDs (15 if you don't include MOO) 3 CoffeeMUDs 3 Custom 4 Unknown The presence of open source codebases doesn't change the fact that most up-and-coming mud owners already have a good idea of what sort of game they want to run...and it's usually just like the mud they used to play, except with their own "cool idea" that's going to make it ten times better. Change takes time. You need to wait for a generation of new mudders to grow up on custom muds, and then use those as their measuring stick. |
|
|
|
|
|
#26 | |
|
Member
Join Date: May 2005
Posts: 208
![]() |
Re: Developing from scratch
Quote:
Edit: Found the new MUD list. One of the LPMud libraries appear to claim to be "custom" while the other two use already existing libraries. Last edited by Aeran : 08-04-2010 at 09:08 AM. |
|
|
|
|
|
|
#27 |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Developing from scratch
I'm just listing the muds based what they wrote in their own "codebase" fields.
The advantage of using an existing LPMud driver is that it handles the low level stuff for you - much like using NakedMUD, or IRE's engine, or ColdMUD, etc. However the LPMud drivers often come with restrictive licences (for example DGD used to cost $100K/year for commercial use). What I'm trying to point out is that there are plenty of alternatives that don't have restrictive licences. And sure, you could write the driver as well, but then you're literally writing everything from scratch. The point I'm making is that you don't need to start from scratch just to avoid restrictive licences. You can, if you want to, but there are plenty of options there if you'd prefer to skip over the low-level stuff and get right onto the game building. |
|
|
|
|
|
#28 | |
|
Legend
Join Date: Aug 2007
Name: NewWorlds
Home MUD: New Worlds
Posts: 1,169
![]() ![]() |
Re: Developing from scratch
Quote:
|
|
|
|
|
|
|
#29 |
|
Legend
Join Date: Apr 2002
Home MUD: Threshold RPG
Posts: 1,019
![]() |
Re: Developing from scratch
Indeed. But imagine if the codebases available 10+ years ago were the open source ones, rather than the ones with restrictive licenses. I think the history of MUDs and their viability/success would have been much different (and better).
|
|
|
|
|
|
#30 | |
|
Member
Join Date: May 2005
Posts: 208
![]() |
Re: Developing from scratch
Quote:
|
|
|
|
|