Christopher Bunting wrote:
Hello All,
In regards to the reply that MrPotatoHead submitted, I thought I'd
start a new thread and try to get things going correctly instead of
adding on to the old burnt out thread.
Before I go any futher, I'm going to say that most of this post is my
thoughts and opinions, However, I also have years of experience with
php/mysql..
So to get to the point, I've seen allot of people saying what can and
can't be done. And my first question is, Have you actually tried to
use mysql for everything within Rom? It can be done with php and
mysql, No doubt. But just to say it can be done in Rom, or any general
diku deriv is a whole nother ball game. To get Rom to load everything,
I mean areas, datafiles, player files, spells, skills, objects,
mobiles, resets, and a spare db table to hold temp values for corpses,
repops and other misc things, You are moreless talking about rewriting
90% of rom as it stands. Just so we are clear, Everything loaded to
db.. Leaving you with only .c/.h source files and a .sql db.
The whole reason this all originates is because the standard diku
derived mud loads everything into memory to be referenced/manipulated.
(Unlike LPC) It's easy, fast, and it works.. But to go the only other
route, would mean that you use a database, or plain c and simple
generic IO functions to read and write to a text db.. The latter has
been proven to smoke sql..
Personal Note: Since I'm a big fan of TADS, HUGO, IF Adventures and
so forth. Including LPC, I'd prefer using C/IO to read and write from
text files..over SQL. It has worked for many, many years.. Discworld
and tons of others are perfect examples.
But that still leaves various issues in regards to SQL or MySQL.. I
simply do not think that most people are knowledgable enough of C and
SQL/MYSQL in general to be able to overcome the various issues.. Most
wouldn't even know where to begin trying to load resets, mobs, objects
which are dynamic data to an area and/or room that are dynamic as
well. Then let them try keeping a corpse on a timer show for X amount
of minutes in a dynamicly generated area/room when the players walk
in.
We are not talking about building a commercial CMS system built in
PHP/MYSQL. These alone have to be designed in a fashion to output the
needed data with the least amount of db queries to keep away from the
undisputed killer called lag. Unless you are using more than one
server to balance the load like sourceforge and so forth.. I still
have yet to see a plain text mud that big using more than one entire
server either.
But the problem I see is that everyone talks about how easy it is..
But the fact is, it's not easy. You are also talking about each player
making 75 times more queries to the db than a standard user browsing a
web site.. Can you imagine all of Aardwolf's players casting spells
throughout the day.. Prolly hundreds of thousands of spells each day.
Now think of that many db quries along with rooms, objects, mobs,
spells, skills and everything else being queried from a DB. There's a
reason why scripting engines are common in games like FarCry,
EveryQuest and Baldur's Gate but database usage is not...However, A
mud processes 50% more requests per user than any 3D MMORPG that I've
ever seen.
I honestly, in my experience still can not see where the end result
would be useful for such a thing.. To simply claim that it makes
adding extra data to areas easier is a bit... well, thats the same
reason why you can open db.c and insert, load_mod_area and add the bit
of code to load your cool new stuff. Then use save_mod_area to save
your cool stuff for the next reboot.
I've said to many people who asked me for ideas before to plan for
further expansion. Even if you only plan on using 4 races/classes. Add
5 extra spots to each table along with adding 5 to skills and spells.
Add 5 extra sections to the area files if you think you're going to
expand that much later on.. After all, Mud Development needs to be
planned out, and have a foundation just like anything else being
developed. MMORPGS don't just pop up. They are planned, schetched on
paper, it's a long drawn out boring process,
But overall, I still have yet to see any valid reason to waste extra
resources just to use sql. Using sql doesn't make writing spells or
the overall development of the mud engine itself any easier.. Fight.c
can't be stuck in sql. So as a mud coder, you still have to do a fair
share of coding, so why is a few modifications (5 minutes of work) to
add new area/mob/obj data or room features so hard?
I've searched the web high and low and I still, have yet to find any
MMORPG or Mud that uses sql as a back end.. I see tons that are in
development but none that I can find running with players..
This is by no means to start a flamewar nor am I saying that using a
DB simply can't be done.. But I'd like to learn more about this
myself, see some examples and find some Production Muds w/ 100+ active
players, who are actively using this concept.. If there is proof that
it is proven and working, then I may look into it more myself. I'm
always willing to do or try something new. But at this time, I see
nothing other than a bunch of hearsay on every mud related forum I
come across.
If you know of or think otherwise, I'd be glad to hear it.
Chris
I see what your talking about, and I don't see why sticking things like
spells, skills, fight code etc into SQL *IS* a
good idea. Things like the Ban list, Messageboards, Playerfiles (I have
to say this here, I saw a snip somewhere
where it put all the pfiles into SQL and read them from there, this is a
dumb idea, why not read the sql data then
load it into memory?) Areas, and specificly helpfiles being stuck into
SQL, but everything else?
Lets face it, (using the skills loaded from a file thingy) Its pretty
stupid to have to A) code the skill, B) increment the
MAX_SKILLS, then C) load the mud up, add it through an annoying command
just to be able to use it. Youve already
done A and B, C should just be as easy, open up const.c,
copy/paste/edit. These sorts of things shouldnt be
done in SQL, theres just no reason. Can you pull up Min/Max Damages from
SQL? No, thats in the code, can you
pull up what effect and duration a specific spell does? No. Then theres
no reason to add it to SQL. Infact IMHO
adding SQL to a rom based mud haphazardly is just flat out stupid. You
end up hammering the SQL server
instead of quickly reading it from memory. (flush_connections anyone?)
There are only a few things I belive should be put into SQL for purposes
of exporting it to a webpage, which
really is the only place you need the data elsewhere.
* Help files: Simple, add a search function for helps, link various
parts of your page to the helps wiki style
* Ban List: Its nice to have the Ban list in SQL, you can post it up
on your website, people can petition a siteban for example
* Area files: While adding new areas isnt easier, it just allows you to
create say a 'virtual' tour on your website. This can also be achived by
dumping the files to sql instead of reading directly from it, also
saving on SQL queries.
Possible HTML based Area editor? Have builders directly upload a
finished non-your-mud area into sql? hmm
* Messageboards: Link your ingame notes to a e107/NukePHP Fourm. Cool eh?
* Playerfiles: Easy way to keep track of top10 lists, 'finger' commands
(from ingame and webpage)
* Chat Commands: To view history ingame/on a webpage (Chat history
webpages are cool ;)
Seriously, do you need anything else in SQL? Even Area files is a tad
over the top. Unless the Data changes alot,
(not constantly like Player data, note i said playerfiles, not
playerdata) like messages, ban lists, helpfiles, Why not
just write a function to create a Static HTML page with the information?
To finish, sticking everything into SQL is not a good idea, sticking
things that could be useful in other places like say
websites is. Just a word of advice. Besides, What about Security? =)
-Thri