World Question

Posted by Corey on Tue 04 Dec 2007 06:52 PM — 18 posts, 80,837 views.

#0
Hello Mudders,
I am a new mud operator and have some questions.
I have nick's port of smaug 1.4a for win32 and was wondering about the default world.
Are they all linked together in the game? or just seperate lands? i.e. do I have to link
them together to make the world? I wish there was a program that would give me a map
like picture of the world. I know how to walk thru the lands with area editor, but it don't
give me the big picture of the whole game world.
USA #1
Normally all the areas are linked together one way or another, yes.

It's rather difficult to automatically make a graphical display of the areas because it's often unclear how to deduce spatial layout, due to the exits between rooms not being constrained to a logical spatial plane. That is, you can have weirdnesses like west/west/west/north going to the same room as north/north/west/south, but that's not the same as north/west... etc. It should be possible to generate a full map and feed it to a tool like GraphViz and see what it generates, but it might not look like what we'd consider a spatial arrangement; rather, it tries to minimize things like crossing of lines in the graph. Well, anyhow...
#2
How about just text then that would say how to get where?
I heard Coffee Mud does this, but it's written in java.
plus it will do pictures and sounds too.
USA #3
You mean something like you give it a room name and it tells you what steps you need to get there?

That could be done; Nick has provided something very similar to that (where the destination list is preprogrammed) on the forums, although it requires adding Lua IIRC (but that is very easy to do). I don't have the link off-hand but if you search the forums for something like "directions" and "lua" you'll probably find it.

But there are some complications, such as several rooms with the same name. If you used vnums it'd be a lot easier.

It'd be very easy to adapt Nick's code to the more general case of finding directions to any room, if that is indeed what you'd like to do.

What do you mean when you say that Coffee Mud does pictures and sounds too? Do you mean that it uses MXP to display pictures, and MSP to play the sounds?
USA #4
Here's the link to the path finding thing I mentioned:
http://www.gammon.com.au/forum/?id=8006

It has some other relevant information, too.
#5
hmm, lua?
I maybe will add that to my code.
worst thing about adding *nix code to a win32 code base is
unix headers. like uinstd.h and others. I don't know what to replace them with in win32. thats whats holding up my imc3 server/host code mod also.
Amended on Tue 04 Dec 2007 07:21 PM by Corey
USA #6
Is Cygwin a possibility for you? That'll make things a fair bit easier for a lot of code work.
Australia Forum Administrator #7
Quote:

Are they all linked together in the game? or just seperate lands? i.e. do I have to link them together to make the world?


The areas that come as default are, as far as I know, all linked in the sense that each area has at least one room which links to another area, thus connecting them.

As for a map, that is harder to do, because there is no real "big picture" that I am aware of.

What I would do to get the general idea is to open each area in the Area Editor (available here), and find which ones have external links (that is to "missing" rooms for a particular area).

For example, loading daycare.are and doing an "area check" reveals, amongst other things:


Checking rooms

** Exit: up to #6500 (not in area): from room #6601


Now if we type "zones" into the game itself, logged in as admin, we see this:

zones
limbo.are      | Rooms:     2 - 99    Objs:     2 - 99    Mobs:     1 - 99   
newgate.are    | Rooms:   100 - 199   Objs:   100 - 199   Mobs:   100 - 199  
plains.are     | Rooms:   300 - 345   Objs:   300 - 313   Mobs:   300 - 350  
astral.are     | Rooms:   800 - 899   Objs:   800 - 899   Mobs:   800 - 899  
gods.are       | Rooms:  1200 - 1201  Objs:  1200 - 1200  Mobs:  1200 - 1200 
srefuge.are    | Rooms:  1500 - 1599  Objs:  1500 - 1599  Mobs:  1500 - 1599 
pixie.are      | Rooms:  2070 - 2099  Objs:  2070 - 2077  Mobs:  2070 - 2073 
unholy.are     | Rooms:  2101 - 2172  Objs:  2101 - 2150  Mobs:  2101 - 2120 
manor.are      | Rooms:  2400 - 2499  Objs:  2400 - 2499  Mobs:  2405 - 2484 
chapel.are     | Rooms:  3405 - 3475  Objs:  3400 - 3430  Mobs:  3400 - 3416 
midennir.are   | Rooms:  3500 - 3590  Objs:  3500 - 3550  Mobs:  3500 - 3550 
grave.are      | Rooms:  3600 - 3651  Objs:  3600 - 3613  Mobs:  3600 - 3605 
haon.are       | Rooms:  6000 - 6156  Objs:  6000 - 6155  Mobs:  6000 - 6117 
dwarven.are    | Rooms:  6500 - 6554  Objs:  6502 - 6519  Mobs:  6500 - 6517 
daycare.are    | Rooms:  6601 - 6651  Objs:  6600 - 6647  Mobs:  6600 - 6610 
sewer.are      | Rooms:  7001 - 7445  Objs:  7190 - 7310  Mobs:  7000 - 7206 
redferne.are   | Rooms:  7900 - 7918  Objs:  7909 - 7911  Mobs:  7900 - 7900 
grove.are      | Rooms:  8901 - 8999  Objs:  8900 - 8919  Mobs:  8900 - 8911 
Build.are      | Rooms:  9500 - 9589  Objs:     0 - 0     Mobs:     0 - 0    
export.are     | Rooms:  9810 - 9899  Objs:  9810 - 9899  Mobs:  9800 - 9899 
newacad.are    | Rooms: 10300 - 10499 Objs: 10300 - 10499 Mobs: 10300 - 10499
newdark.are    | Rooms: 21000 - 21499 Objs: 21000 - 21435 Mobs: 21000 - 21499
gallery.are    | Rooms: 24800 - 24899 Objs: 24800 - 24899 Mobs: 24800 - 24899
Areas listed: 23  Loaded: 23


This tells us that the "external link" from daycare.are is in room 6601 and that takes us to 6500 (which we see is in dwarven.are). We also see that we go up to go from 6601 to 6500, so presumably daycare.are is below dwarven.are.

Now if we open dwarven.are and do an area check we see:


Checking rooms

** Exit: down to #6601 (not in area): from room #6500
** Exit: southwest to #3502 (not in area): from room #6500


This confirms that room 6500 is the linking room. You go down to 6601 (which is symmetrical with 6601 going up to 6500). So that is indeed the room that connects the two.

Also to leave dwarven.are in another direction we go SW to 3502 which is in midennir.are.

So what you could do is start making bits of paper and joining them together in the designated ways (or some sort of drawing program on the computer), and eventually work out the general map, of which area connects to which.
#8
tryed it with smaugfuss, it quits working after a while with some wierd error when people try to connect.
USA #9
Quote:
So what you could do is start making bits of paper and joining them together in the designated ways (or some sort of drawing program on the computer), and eventually work out the general map, of which area connects to which.

That might be a good idea actually for doing it automatically; it might be easier to do it on the area granularity than per room. Of course, you still might not end up with actual spatial layout (as in north/west/etc.) but at least you'd get a feel for which areas border each other.

Quote:
tryed it with smaugfuss, it quits working after a while with some wierd error when people try to connect.

Ah, yes, I remember the thread now. The only real solution there unfortunately is to use gdb. Cygwin will really make your life easier for compiling stuff so it might be worth your time to figure out what happened.
Australia #10
Corey, adding a mini mapper to get a map of the imidiat rooms about where the player is, is actually quite easy, i think thats what you mean when you refered to coffeemud.

The Secret Passage                                         -     N     -
-<----------------------------------------------->-        -<---(*)--->-
                                                           -     S     -
+-----------+
|     O     | This secret passage continues to the north and south. 
|     |     | 
|     O     | 
|     |     | 
|     X     | 
|     |     | 
|     O     | 
|     |     | 
|     O     | 
+-----------+ 


Im thinking in essence you want something that looks like that? If so there are 2 things you can add to your code, samsons compass snippet and zarius mapper snippet. Yes this would require you to have some basic programming knowledge and to have access to the relevent compilers.

Of smaug bases that have this sort of thing added already, Afkmud and Eldhamud both have this code installed, but you need cygwin or linux to run either of them.

Hope i have been of some help.
USA #11
SmaugFUSS 1.8 also has the compass and mapper code installed. The official Smaug 1.8 release shipped with those features, so we figured FUSS should have them too. We opted to use Zarius' mapper code since it's much better than what was in the official 1.8.
#12
How about a win32 port?
or just make nt services work in a cygwin win32 compile?
USA #13
There is rather little interest in a win32 port for most developers, really, because most have ample access to Unix-based systems or "at worst" Cygwin. So, unfortunately for those who want win32 stuff, you'd have a fair bit of convincing to do for somebody to take the time to make anything Windows-specific work, be it the port or the NT services.
Australia #14
I pulled out all the support for win32 out of Eldhamud which was derived from Fuss, as i had done things that were more or less linux specific, win32 might be something a professional coder might be able to do, but for a smaug coder like myself its way beyond my abilities.

Thanks Samson for the tip on the latest Fuss packages, i have been out of the loop for about 18 months and have no idea what development has gone on in the mean time, and i was shocked to see thoric released another version of smaug. Something that im yet to Dl and look at, tho i will prolly do that with the fuss version instead.
USA #15
Personally I wouldn't bother with SMAUG 1.8, and go straight to the FUSS version... :-)
#16
I have the fuss with lua, don't even get me started on those problems. geesus, I know why it's called the fuss version. damn fussy to compile.
USA #17
I'm a little confused because FUSS compiles completely cleanly for me, both stock and Nick's Lua addition... you might not have set up your cygwin environment correctly?