![]() |
I'd like to build my own mud, I have a few resources (people inclined) available to help, aslong as I know what I need.
So.. where exactly do I start? All replies much appreciated. ~Jade (aka Mierza) |
|
|
Just wanted to point out there are a lot more options than just the ones that Ogma mentioned.
Not mentioned, that I can think of off the top of my head, are (in alphabetical order): As mentioned, these are just a few off the top of my head. There are numerous codebase listings all over the net. More information about what exactly you're looking for would be helpful in pointing you to something that might suit your needs. And, as Emit mentioned, there is always the option of building your own codebase from scratch. * - Chronicles is my own derivative and is a pretty cleaned up version of SMAUG that has been trimmed down quite a bit, and had some new features added. |
Here's a random question. Which wuld you say is easiest to learn? Knowing some code (C mostly), but having been forewarned about the complexity of MUDs, is there one less... complex than the rest?
|
Well knowing you really well Mierza, I thought i'd reply. (on a seperate note, i'll be contacting you on your current mud.)
Muds are indeed some complicated piece of code but after you have worked a lot with a codebase you get to know it quite well and understand what is needed. Which codebase you choose really depends upon what you want it to already have, which features on that codebase do I want compared to that other codebase. Now, answering your question maybe a bit more precisely. Any mu* is complex because first it is a server/client application and the current standards are relatively high on how a mud should be. I know you currently are an immortal on that mud I play with you, and I will be contacting you. I hope what I said made sense and maybe also helped some other people. On another note, it does cost some money to run a mud and a lot of dedication. And now as an advice, with your changes, start with small things, you will learn a lot about different part of the code and then will be able to progress into making some bigger changes. Remember that some codebases are just ugly to look at but I am thankfull to the creators as they sure saved all of us a lot of time, and gave us inspiration to continue on. -- edit - My first post on this board, really bad formatting which I hope I fixed. |
|
Yes, Orion, I only mentioned the major MUD codebases. I also failed to mention MUCK (Glowmuck or fuzzball), Mush, Mux, MOO etc. so as not to confuse the issue.
Mierza, If you want to do something significantly different than the standard medieval/fantasy setting, I'd recommend ldmud or MudOs (another one I failed to mention). LP style muds are much more flexible. |
I need to -learn- to code..
1. Is there anything similar to mIRC scripting that will suit my needs; or 2. Where can I learn? (Desired online, free, etc. Or tuition from an exp. friend'd help too.); or 3. Anyone wanna code? |
|
|
Honestly, regardless of codebases out there, or any of OUR preferences, this is what I would recommend you do.
Take whatever code you are the most familiar PLAYING on and at least start with that. You know what things do, what messages are given, etc, and you can find that in the code and by reverse engineering it, you can start to figure out just what makes it all tick. Modify and change it, get comfortable with it, and THEN decide if you want to go with it, or something different... |
|
Harr Harr..Yes. You will need to surround yourself with competent and dedicated staff members, or else the staff will slack off and the MUD will disappear. That will just result in a waste of resources.
|
Raith? Are you my Raithy-raith from the place where Paia reigns?
|
|
|
Not to be flippant or discouraging, but asking a question like this is like saying 'I'm just learning to drive a car, how long will it be before I can drive in the Indy 500?'
There is far more to learning to program than just learning the language. It is a unique way of thinking and solving problems. The programming language is just the tip of the iceberg. Once you know how to program, learning another language is a piece of cake. Chosing Python as a first language is a good choice, it lends itself quite well to learning good habits and techniques. However, don't expect to be coding a mud in a couple weeks or months. I wouldn't recommend coding a mud in Python though. It'd make a good embedded scripting language, but it doesn't lend itself to the fiddly bit bashing that communications protocols require. If I had to code a mud from scratch, I'd go with C++. On the other hand, if I were building a mud, I wouldn't code it from scratch either. Chose a codebase and built off of that. For most of them you'd need C, but I think the best way to go is use LPMUD or LDMUD and code it in LPC. |
|
What are you talking about? Python is ideally suited for muds given that it comes with extensive networking and string-handling capabilities as part of the standard library. I'm intrigued to see what 'fiddly bit bashing' you think is required...
|
I have been working with python a lot lately, and quite honestly I hate its documentation. Its detailed.. but at the same time, grr.
I had an iterator that was returned to me from outside of python.. i couldn't find anyway to see how many items were in it... much less to reset it.. it might even be possible... But you have to deal with junk like Shrug |
|
Well, when using jython.. and receiving a java Enumeration such as the elements of a Hashtable... Jython automatically converts Enumerations to iterators.
What I did was put every item in the iterator into an array. Which gave me the count and what I really wanted anyway. Since my engine is multithreaded.. if my python scripts asked for the number of players in the room, and then a list of the players... its possible those things could be different. :/ |
I've never used Jython and can't really see why it would return all that, but I assume there's a good reason.
If you only wanted the count, wouldn't one of these work?: myHash.size() len(myHash) If not, a simple method of counting the number of elements that an iterator will yield to you is this: len([x for x in myHash.elements() ]) Basically you make it into a list and grab its length. |
|
And what do you do if another thread changes the hashtable while you are iterating through it?
|
Hehe.. good thing you asked... I was under the impression the impression it wouldn't work this way...
[code] <cl 100.0% el 100.0%> set derk foo bar foo->bar <cl 100.0% el 100.0%> exec attributes = player.getAttributes() <cl 100.0% el 100.0%> exec player.println(attributes.next()) admin <cl 100.0% el 100.0%> set derk foo foobity foo->foobity <cl 100.0% el 100.0%> exec player.println(attributes.next()) Traceback (innermost last); File "<string>", line 1, in ? File "scripts/exec.py", line 1, in ? File "<string>", line 1, in ? java.util.ConcurrentModificationException at java.util.Hashtable$Enumerator.next(Hashtable.java ;976)[/quote] Which is interesting, because according to the java api... I am not using a java iterator, but a java enumeration. |
Myself and a group of trusted, talented individuals, started designing and creating the 'revolutionary' MUD that I was dreaming of.
Unfortunately, after the game engine was created, and the start of spec sheets and documentation, my lead coder had to leave the project. Because I don't want to scrap the project (and let down other employees) and because my heart is so set on actually -completing- it, I'm going to have to ask for the help of you experienced coders out there. So the question I have to ask is, what things will be required in the process of creating, from scratch, this MUD code. Now, I know earlier on in this topic, people were kind enough to explain ways about creating a MUD from scratch, however there are other things I'm seeking answers to. For one, we need everything original. Like our game engine, a main client that is realiable and can support alot of features, a java client that is not so heavy and can be accessed from pretty much anyone. I need the main client to support graphics, kind of like a 'view screen'. Say, where in a normal MUD you'd type 'look at person' and it'd bring up text, I intend ours to also display their character portrait. Same with landscapes and such. So what steps would be involved in creating a code base like this? Also, what language/s would be best for such a project? Our former coder and his assistant were using RUBY, and using LUA as well for the ease of world builders. As you can guess, I'm not very knowledgable when it comes to codeing of any sort.. but that's why I'm asking for some experienced input. Thanks. |
Ok... you have to realise that you're really in the deep end here. Telling you what steps would be involved would be like telling you what steps are involved in making a car. Not only are you requiring a totally new server - maybe a year's dedicated work in itself - but you want a totally new client with features unseen in other clients,which again is quite a lot of work. I'm not sure you quite realise the scope of your demands, which to be fair is quite common among people who don't program. They often say "all I want is X... with Y added" and they don't realise that writing X from scratch took years in the first place and that Y isn't already in X because it's #### hard to code... but anyway.
As for the "What language is best?" question, I thought you said you already had a lot of code written... are you willing to give all that up and start again? Because that seems a bit wasteful. Anyway, if so I would always recommend Python as a coding language to a newbie, but Ruby is very similar. I am dubious about your old coder's decision to incorporate Lua however; that seems pointless given that I'm sure you could get the builders to write scripts in Ruby. Anyway, back to the point; I could write a basic MUD engine in Python in 2 months but I know what I'm doing. If you don't really know what you're doing it's likely to take you years no matter what language you use. Therefore generally the best language to use is 'whatever your coding team wants to use', and finding such a team becomes the priority. |
We did have code done, including the game engine. We also had a server, etc. But when our coder left, he kinda didn't leave either the code or the documentation for it.
It is a big task, and I never expected it not to be. Pretty much everyone on my team has been working to the original design of our clients and codebase based on the decisions I made with my former coder. His suggestions and advice are where I got my 'demands' from, and was made to believe that they could be accomplished with time and a bit of hard work. I mean, there's no way I'd have thought of wanting our own game engine, I barely know what one does. I think the reasoning for it was something like "We own it's copywrite, we can use it for further games, and creating it will give us more experience." The reasoning for the two clients was like, "We own the copywrite and can use it for further games. Fixing bugs and helping players with technical support will be alot easier. We can support our features more." (Features being audio, video sequences for quests, etc.) -Before critisizing the 'high goals' please remember that when this project was started, these were realistic, and we did have someone who knew the code side of things over and under. Because I can't ask him anymore about what is involved in all that stuff, I decided to ask here. That way I can employ proficient new coders to do the job. -I don't want to start the coding from scratch. But I also don't want to waste the work of my game designers and some of the artist's work, because of this disruptment either. If some things are a bit far ahead then I'd appreciate advice on what things. That way I can re-evaluate. As I said earlier, I'm no real coder.. and that's exactly why I'm asking. I also have no idea about the choice of the RUBY/LUA thing. Most of the reasons for doing things were supposed to be included in the documentation that was also supposed to be provided. But we didn't get that far, ah well. As a team leader, I don't want to just let it fall apart because a member had to leave. Even if we don't have the code anymore, we still have hours and hours worth of designs and art that I don't want to waste. If you have a better idea of a more realistic coding approach, I'd be glad to discuss our designs more indepth. Hopefully I find a coder willing to help first though and run it by them instead, cuz it's quite involving. |
|
Hey Netwyrm, thanks for your reply!
I'm just curious about how your project turned out, like what things worked for you, and what didn't, etc. One of my assistant coders specializes in java, so atleast it's good to know I've still got something that can be worked on by him. As for races, I have about 4, possibly 5. Most of their concept art is already finished. I currently have 3 artists, so the workload of getting art done really isn't a problem. Now the only issue is.. since I guess I'll have to start the code over.. is it realistic for a new coder to come in and do the same job as my former -is it hard to code for the allowance of graphics in a seperate window. We have this thing where there's the option of a graphical health status bar. Like we have the usual health bars and points for during battle sequences, but we have these way cool outlines that highlight different wounded areas and indicate what kind of injury it is. That's just an extra for RP value and skills.. like doctors are able to asses injuries and help treat them realistically. I really don't want to give these thoughts and efforts up so easily, especially since most of the effort put in was hours of work from dedicated team members. I doubt anyone else in my position would, either. Uh.. anyway, back on track. Actually, I've not much more to add. Other than I totally agree with you on the thanks part -When I started this topic I didn't think it'd get so big, but the amount of experience and information shared here is awesome to read, and it really helps me learn alot more too. |
Mierza, indeed anything can be accomplished with time and a bit of hard work, but these particular ideas require a bit more than most. As I mentioned before, the best feasibility test for someone who isn't a programmer is to compare the requirements to existing systems. If you're asking for something new that isn't done anywhere, that's a potential problem because there's nearly always a reason it's not been done yet. Or, look at it from the other side; what you're asking for are many of the features in a massively-multiplayer online game... and they usually take large teams of professionals years to produce.
Realistic according to who? Your lead coder who is no longer with you, who spent a year working (as an 'employee' ) and yet didn't leave you code or documentation? If you were paying him, you own that code and those docs. If you weren't, then I still can't see why you didn't arrange to have an up-to-date copy of these things at all times as part of the deal. Definitely something to keep in mind next time around. You probably also know that you're unlikely to get great coders for your project by posting here. For every 1 coder there are 5 designers such as yourself looking for coders, each of whom thinks they have a great idea. And in some cases, the coder is (or believes they are) that designer and will make their own game instead. So maybe you'll get lucky, or maybe you'll end up with someone who will bail out when it gets tough. Good luck. Do you have any screenshots or examples of some of these features you mention in action? Like those injury outlines? Or are these still just concepts on paper? In answer to the questions you posed in your reply to Netwyrm: "since I guess I'll have to start the code over.. is it realistic for a new coder to come in and do the same job as my former" - well yes... starting from scratch is no harder the second time around, really. You may find some things get finished quicker while others take longer, however. "is it hard to code for the allowance of graphics in a separate window." - not hard, but time-consuming. You need to develop a protocol for exchanging these graphics and write the interface for displaying them. Java is one platform you could use for this. I personally might use wxWindows. Although I'd also be tempted to see if much of what you want to do can be approximated with MXP so that you can use an existing client such as ZMud for testing and prototyping at least. |
|
|
Wow! Thank's so much Netwrym for your post, I've found it very informative, and encouraging to know that I'm not the only one persuing a dream for a MUD like mine.
As you may guess, from reading the first post of this thread, I too originally wanted to learn to code my own MUD. However, I was only wanting to learn enough to take an already made codebase and go from there, to learn just enough to get me started. Ofcourse then others came along, and since my strengths lay mostly in leadership, design, and production, that's where I naturally positioned myself, leaving coders to code, artists to create art, and learning a little about each in the process of putting it all together. You sure sound like you had some learning experience, alright, hah! But good on you. I get most of my design type experience from the real world, from novels, from movies, etc. Alot also comes from research, and I seriously suggest that people who are interested, do some research and find places like GameDev. The opinions of experienced game designers and programmers alike, can seriously alter the way you view the creation of a MUD. I like your tips. Especially the one about limiting yourself. I've seen games with thousands of races, and that's great to offer variety for a more simple, traditional mud. However in cases like yours and mine, I agree that where a more complex system is involved, content should be simplified to begin with. I was thinking of like.. 8-9 races when I first started designing, but ended up deciding on 4, possibly 5 original ones. Thanks for your suggestion about nailing a language, lol. I do intend to learn enough for me to work efficiently as a game designer. Unfortunately there's no way I could code a game to my standards, and have it meet my standards. You yourself said you've been learning for the last few years. Mmm.. I know there has to be a coder out there somewhere that finds it appealing to be involved and challenge themself with an innovative MUD design? Even if this game of mine isn't to go commercial, this is just one step in the rung of a ladder. Either my company will slowly grow, OR quite simply, my team members can take our finished product, and their development steps and show these to potential employers in the future. ~That's what I intend to do, to help me get game design experience to get into the industry (as well as school education, of course) -and I think that has been one major motivation for coders and artists that I know as well. I have another point to add to your "Always write down what you're thinking." My point is brainstorm -An initially 'stupid' idea that can be brainstormed, can turn out to be a great concept further along on the track. Getting together with the rest of your development team (or even just some like-minded friends if you're working solo) can be a great source of fun and motivation for progress. I think your last section of the post, about backups of code, is extremely important. -You were right, I did learn my lesson the hard way, and I hope that other people can read this and learn from my mistake. |
|
|
In every company I've ever worked at or applied for, software engineers are expected to be able to both design and code (as well as the other parts of the software development lifecycle).
Someone who can code, but not design, is typically referred to as a "". |
I am not even a programmer and I thought that was funny (nice link to the jargon site as well) *chuckle*
|
That's true, but game design means something very distinct from software design in the game industry. The best way of putting it is that they design the game, rather than the program.
|
Yeah, they have a Java client on their website. No idea what it offers though because I can't run it on my browser for some reason.
Ok. You're unlikely to get anything that can fool a player into thinking a mob is another player. But you can certainly make them seem more intelligent. For example, simple pathfinding is one important step (no pun intended) along the way; mobs that actually go places and guards that patrol a given route seem more realistic than those who wander erratically or stand perfectly still forever. Couple that with time-triggered progs and you can have mobs that go to their shop in the morning, go to the tavern in the evening, and go home at night. Or mobs that take a bribe and agree to meet you at midnight in the Square to give you further details on a mission. For a good coder, the pathfinding shouldn't take more than a day or two to implement in C or C++, maybe a few hours in Python or Ruby. But the gameplay rewards can be immense. Another small touch that might work wonders is a basic reputation system. Kill an elf, and elves will stop trading with you, and kill several, and maybe they'll start being aggressive on sight. And maybe losing favour with elves involves gaining it to a lesser degree with goblins. Again, a very simple mechanic, but so many possibilities. |
Their java client is simply a telnet interface, as most java clients for MUDs seem to be.
|
All times are GMT -4. The time now is 07:23 PM. |
Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright Top Mud Sites.com 2022