Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ MUSHclient ➜ General ➜ Possible new client written using wxWidgets?

Possible new client written using wxWidgets?

It is now over 60 days since the last post. This thread is closed.     Refresh page


Pages: 1  2  3  4  5  6  7 8  9  10  11  

Posted by Onoitsu2   USA  (248 posts)  Bio
Date Reply #90 on Sun 02 Sep 2007 01:33 AM (UTC)
Message
This is the reasoning behind disassembling zMud, is the methods used to "layout" the map, or the methods used to "predict" rooms. I am not talking about using the discoverd coding methods, but they sure as heck can be learned from. And as for the GUI area, that I won't think would be necessary, just the actual detection and data storage of the rooms.

I know for a fact that in the newer versions that you can open a saved map in MS Access, and it is a series of psudo-random numbering with at least a dozen sections per "room", and the first 6 sections are cardinal direction links, containing the room "number". The next several sections are dedicated to "non-conventional exits" which have pairs of command, followed by room number. There is also flags on each one that lets it know if it is a oneway exit, or a door, or a locked door.

I don't think that automatic mapping is something implemented easily, but perhaps have a method of "drawing" the map, like there is in zMud. I know that I've never had the zMud mapper work right to log the map, but if I drew it out using its keypad entry method. I could draw it in sections, then go and actually visit those rooms and it would log the information for those rooms, as they already "existed" and did not have problems with overlaps or duplicates, nor confusion of links.

-Onoitsu2
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #91 on Sun 02 Sep 2007 02:46 AM (UTC)
Message
Well, I don't believe there is anything to be discovered about "layout techniques" by disassembling zMud than what you could discover by just looking at it. Same for room prediction. Besides, unless you feel like spending many weeks of your time going through the assembly, it won't give you much insight anyhow. My point in the previous post was that the issues we face are not at all coding issues, so looking at source isn't going to be terribly useful.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #92 on Sun 02 Sep 2007 07:13 AM (UTC)

Amended on Sun 02 Sep 2007 07:15 AM (UTC) by Nick Gammon

Message
Quote:

Anyone know ASM, and of the possibility of reverse engineering zMud, by no means do I mean a recent version, but the free version that has the mapper.


I do not endorse in any way the idea of dissassembling zMUD. For one thing, it is a proprietary product, from which Zugg is making his living. Even if you found an earlier version, the mapper code may well be the same as in the current version.

Apart from the ethics of the thing, zMUD is written in Delphi, and I imagine that the assembler code would be somewhat convoluted, to say nothing of the fact that you won't see the original data names.

It would take weeks and weeks of work, from a competent assembler programmer (who are probably a bit thin on the ground these days), just to work out the basics of what it is doing.

If you used an earlier version, you may well find that Zugg found a whole lot of bugs and has rewritten it, so you would simply be incorporating his bugs.

One approach would be to simply send Zugg an email and politely ask for the technique he used in his mapper, and if he would be prepared to share it.

Another approach is to simply work out how you want the mapper to work, and design it from the ground up. In doing this you might look at the zMUD one and get ideas (general ideas, not stealing the design), and see if there are places that could be improved.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Onoitsu2   USA  (248 posts)  Bio
Date Reply #93 on Sun 02 Sep 2007 08:50 AM (UTC)
Message
Again, as no one seems to read my posts fully, I am not saying to USE it explicitly as it is implemented in zMud, as you stated Nick, "If you used an earlier version, you may well find that Zugg found a whole lot of bugs and has rewritten it, so you would simply be incorporating his bugs." Well this is completely folly to think such a thing, as the only thing that would be derived from this would be the method or few steps to a generic algorithm to create such a mapper. I believe that the ability to code the GUI is already there, as well as other features, but there has been quite a lot of debate as to the precise methods of "learning" or even gleaning the map. I am not for stealing coding, as that is quite wrong, BUT theories and methods from something that is deriving no profit, as it is a FREE version, can hardly be called stealing, it can however be considered using a "quality product" (sorry but *cough* *cough*) and creating something SIMILAR but in no way exact. Since there are many programs that do similar tasks, such as DVD to VCD (SVCD or AVI even) they ALL do things quite similarly, BUT are all by different companies, and initially only ONE company could have released theirs first, and all the "good points" were more likely than not implemented in the other companies releases, as it was already marketed.


Unless Zugg has a patent on the mapper methods themselves then there is no point arguing the fact that a "mapper" is in no way stolen intellectual property of Zugg, as well as the coding will be NOTHING like what he as used in zMud, but it will be a mental stepping stone in a better direction.

Sorry this went on and on, but I was interrupted many times by RL things, and my train of thought was broken repeatedly.
Also sorry if this sounds like a rant, but it is not meant to be one, it is meant to be a VERY strong attempt at a push in ANY direction on the mapper.

-Onoitsu2
Top

Posted by Shaun Biggs   USA  (644 posts)  Bio
Date Reply #94 on Sun 02 Sep 2007 11:25 AM (UTC)
Message
There is a LARGE difference between reverse engineering and using the original code to create a program. Even just comparing someone else's code to your own can result in severe issues legally. The phrase "Intellectual Property" should also severely insult anyone who has an intellect, as it is one of the most insane concepts ever created by a legal team. Pretty much it makes any mapper created after looking at Zugg's mapper's code the property of Zugg, even if said code was not used. Regardless of whether or not the code is patented, it is copyrighted, and also covered by 'prior use.'

Creating our own mapper would probably be easier than trying to pick apart ASM, and it would most likely mesh better with whatever system we are going to be using. I can poke a few of my friends with computational mathematics degrees to see if they have any idea on how to have the map displayed in a sensible manor with various room exits which may or may not match cardinal directions. I'm sure they would appreciate getting an entertaining problem to solve during boring work days.

It is much easier to fight for one's ideals than to live up to them.
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #95 on Sun 02 Sep 2007 12:32 PM (UTC)
Message
Quote:
Creating our own mapper would probably be easier than trying to pick apart ASM

Probably? You mean absolutely completely certainly beyond any shred of doubt... :-)

Nick correctly points out that not only are good assembly programmers in short supply, and furthermore that it would take weeks of full-time work anyhow to get something figured out. And then more weeks to actually implement it. In all that time (probably a fair bit less, to be honest) you could have done it yourself.

Quote:
I can poke a few of my friends with computational mathematics degrees to see if they have any idea on how to have the map displayed in a sensible manor with various room exits which may or may not match cardinal directions.

Wait, why is it so technically hard to display the map? The programming for the display is relatively easy (assuming you know how to write the GUI code). The hard part is figuring out how to display the information in some sensible way; that is not really a technical issue.

As for the issue of correctly "guessing" the map, that is something for which you will need human intervention, plain and simple. Unless the MUD provides some way for the client to uniquely identify rooms (which is very unlikely), there will always be ways for the mapper to make mistakes, perhaps even because the MUD is intentionally sending confusing data. In this sense, the issue is yet again not a technical one of how to deduce the map, but rather, how you are going to let the human correct the mapper's mistakes and input the map themselves.

I think Nick is correct that the best solution is to (a) ask Zugg for his suggestions and (b) think about the problem from scratch anyhow. But if I may suggest something myself, it would be to try to keep that discussion separate from the more general issues of a new client, except insofar as it impacts the design of the client in general.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Shaun Biggs   USA  (644 posts)  Bio
Date Reply #96 on Sun 02 Sep 2007 12:58 PM (UTC)
Message
Quote:
The hard part is figuring out how to display the information in some sensible way; that is not really a technical issue.

Displaying the information in a sensible way is what I would be asking people about. Trying to make a abstract map fit into a sensible manner in an efficient manor is going to be an exercise in discrete math. Selecting a way to sort out how the map is displayed should just need a little bit of GUI work and a few templates.

Asking Zugg for suggestions, or even just trying to see if we can get his mapper to work for this client would be great. I personally don't like zMUD, but I have to admit that Zugg's mapper is the best out there, hands down. I should see if I have my ancient copy of zmud floating around somewhere to poke around with it and see if I can get something working. Aardwolf at least has a nice way of telling if you are in a new room, so it should be easy to test there.

I still say that having a mapper able to be integrated into the client would be a good idea. Even if it's just a little panel off in the corner with very basic info displayed.

It is much easier to fight for one's ideals than to live up to them.
Top

Posted by Shadowfyr   USA  (1,790 posts)  Bio
Date Reply #97 on Sun 02 Sep 2007 03:24 PM (UTC)
Message
A note on "reverse engineering": Companies that do this either determine the *behavior* of a product, then recreate the behavior, code unseen, or *if* they do use code, they usually have a team, who will have no direct access to, or contact with, the people that produce the final product, dissect the code/product, then write a detailed specification. Someone else, who have had no contact with the first group, share no members, etc., then takes that specification and builds a product from it.

This depends a lot on if the intent is to produce "compatibility" or "replication". For compatibility purposes, which would mean something like having Mushclient generate "data" that Zugg's mapper would act on as though it came from the original zMud mapper, anyone can rip apart the program to see how it works. We however are discussion "duplication", the making of a competing product, which replicates the entire behavior, and doesn't need to be compatible at all. That sort of thing requires greater separation, if for no other reason than to protect against *claims* of code theft, and not just design theft.

Its not too hard to guess how the predictive system he uses likely works. Even similar rooms will "usually" contain a mob, object, etc. that can make it unique, not to mention exit names, so figuring out which room you are dealing with is *usually* going to be a matter of assuming that its on a set grid, then "predicting" that two seemingly identical rooms *can't* be the same if they "appear" to be 500 rooms away from each other when you come across the second instance. The only question, and this could be tested, is if zMud's mapper can handle situations where 2-3 ways exist to get into a room, some from 20+ links away, but it can't tell if its the same room until you then start moving through additional repeats outside of it. Either a) it can decide that it made an error and try to correct it, or b) it can't, since making such a predictions isn't all that easy to start with. The more complex issue is handling muds where the "logical" location of rooms might place them in the same locations as other existing rooms. That is why I don't think showing the "closest" by stored coordinate is a good idea, but rather that any "map" display needs to be generated by looking N rooms from the "current" room. The odds of two rooms, a mere 3-4 rooms apart, overlapping each other visually isn't too high, and if they did, a good mapper could still "adjust" the view, if in an isometric design, to appear someplace other than the same physical location as the other room it overlaps. The only real question is how much the offset should be, if its only a "this isn't the same room" display, not an actual change of altitude (going up/down).

I would suspect that zMuds' mapper has a more primitive method of handling up/down too, but can't say without checking, in that it probably "hides" all rooms not on the same apparent "level". I.e., if you go up, then everything below/above you is then hidden, and only the rooms on "that" level are shown. This is probably the only practical solution for a 2D flat display, which is why I think some sort of isometric system would be nicer.
Top

Posted by Jammet   (14 posts)  Bio
Date Reply #98 on Sun 02 Sep 2007 05:30 PM (UTC)
Message
I hope we aren't going too much against the purpose of the thread with all the map-talk. It's still mainly about getting a fresh start on multiplayform, right?

I'm not a fan of reverse engineering that feature, but why not talk to the author of zMud if it's that good?
Top

Posted by Nick Gammon   Australia  (23,133 posts)  Bio   Forum Administrator
Date Reply #99 on Mon 03 Sep 2007 03:45 AM (UTC)
Message
I'm inclined to agree that the issue of the mapper is a bit separate to other things, except as a Good Thing to have.

I believe even in Zugg's case he has isolated out his mapper module to something called zMapper, so a similar thing that works in conjunction with MUSHclient, or a new client, could be considered.

Perhaps people with good "mapper" ideas might like to start a Mapper Thread.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Beale   (35 posts)  Bio
Date Reply #100 on Mon 03 Sep 2007 04:44 PM (UTC)
Message
If I may comment on the OT for a moment...

wxWidgets sounds ideal, although I'm always somewhat dubious about the snappiness of cross-platform widget libraries.

I'm interested in a good client for Windows, Linux and Mac - I currently use Atlantis on Mac, and tinyfugue on Linux, but they're both lacking in several departments.

I would really hate to lose MXP from MUSHClient. If it's really that hated/difficult to implement, can we see if we can produce something a little more standard-worthy? From what I see of MXP, it looks like a bit of a kludge.

MCCP is a dream for MUDs with many players, I'm told.

While making all the send_tos into script ones would be convenient, it would probably put off those who fear actual code(parenthephobia?). You could easily do it under the hood, of course.

Oh, and I've never used the spellchecker. Or the Chat system, but the Chat system looks interesting and I have some ideas I'm pondering for it.
Top

Posted by Shadowfyr   USA  (1,790 posts)  Bio
Date Reply #101 on Mon 03 Sep 2007 07:02 PM (UTC)
Message
Just to give some perspective, this is what we are up against, in terms of the type of client the games with large playerbases, pay to play, and custom clients are doing:

http://www.4players.de/4players.php/screenshot_list/PC-CDROM/4908/Screenshots/0/0/Aeonfalls_Online.html

This is obviously, from the standpoint of how you deal with the "rooms", a mud. Its development is currently suspended, according to their actual page, but I have seen other clients going the same way, including a long discussion of these very things on TMS. The way I see it, a client doesn't have to support all this stuff for most of them, certainly doesn't want them enabled by default, etc., but having the ability to do them... The problem with custom jobs is simply lack of flexibility. Not only are they going to limit your scripting, if they allow it at all, but you can't change the client behavior, add things you think are missing, or just redo the client for a different game. You can do all of that with Mushclient, as it stands, just so long as you don't want GUI elements or mapping.

People running large muds, which take in money, *are* looking to design clients that do these things. Smaller muds might like to see such things, but can't afford to pay for developers. I don't think we really need to have a *huge* gap open up between two different branches of the mud community. Mapping is certainly "one" of those things, and personally, I don't see the point in replicating, or using, someone else's design, instead of aiming higher, for something that is in improvement to it. Though, it might still be useful to allow an overhead view, for those that want it. Your going to be using the same algorithms in both cases, just that the 2D overhead throws out the layer over and under your current one. The layout functions would be essentially the same. If anything Aeonfalls seems to take the path of, "Lets only show where you are in a gridded area (if the screenshots are any indication), which just shows the weakness of such clients, they have to "Force" someone to use a specific design, rather than provide a flexible solution. And that is, I think, one area a user programmable client has a huge advantage with, if the basic for the GUI elements are in place to handle it.
Top

Posted by Shaun Biggs   USA  (644 posts)  Bio
Date Reply #102 on Mon 03 Sep 2007 09:08 PM (UTC)
Message
Wow, that is about the worst setup of a screenshot page I have ever seen. I'm not sure what you are getting at for a comparison here for this custom client. Custom clients are really just a niche market per game. It's not like you can often take a custom made client and connect to a different mud with it and expect the same quality or anything. There is also no way to make sure that a general client has anywhere near the same benefits of a custom client unless there is someone who is constantly maintaining a theme/plugin/whatever specifically for that mu*. I think that any comparisons made for what to have in a new client should be against current general clients instead of any custom client which has been designed for only one game.

Also, with your 'layer' idea for mapping.. that has some severe limitations to it. Tower areas, for example. There are some areas in the mud I play on where you can go up 10 levels or so, and having a mapper need a layer for each would be much more confusing than other options. The following link is a map to an area with 9 up/down links in a row. This would be a nightmare to deal with in a layer system, but pretty easy to deal with in a flat method.
http://www.adverserealms.com/cgi-bin/emerald/cgi-view/openmap.pl?type=gif&file=dreadtower
The following link shows a large area spread out over several layers in a 2d method.
http://www.adverserealms.com/cgi-bin/emerald/cgi-view/openmap.pl?type=gif&file=hell
Granted, if the mu* you play on has more directions than the cardinal directions, there is the option of having a 22.5 degree line showing up/down, or some other method. Even having coloured stars or letters marking different points on the map that are connected like the dreadtower one does would be better than a layer if the layers do not always match up. For example: moving n,e,n gets you to the same place as up does.

It is much easier to fight for one's ideals than to live up to them.
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #103 on Mon 03 Sep 2007 10:23 PM (UTC)
Message
Quote:
Custom clients are really just a niche market per game.

Unless you establish some kind of protocol for providing data descriptively instead of prescriptively. That is, instead of telling the client what to put in which frames and in which color, you (= the server) tell the client that this piece of data is the inventory, and that this piece of data in the inventory data is an object, and so forth.

Basically, you describe the data, instead of just telling the client where to put things.

If a client could speak such a protocol, then any MUD could talk to it, providing whatever data they liked, and the client would have client-side layout engines for putting stuff where they would like.

And then the MUD, instead of providing a full client, would merely have to provide the layout logic to their players.

And of course, more enterprising players would be able to customize their layout if they wanted to. (This is, as I understand things, what WoW does with Lua and its GUI.)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Shaun Biggs   USA  (644 posts)  Bio
Date Reply #104 on Tue 04 Sep 2007 01:31 AM (UTC)
Message
Quote:
Unless you establish some kind of protocol for providing data descriptively instead of prescriptively.

This would still require either getting the authors of the client/server to write the protocol in a way that any client can interpret, or (as I said earlier) having someone maintain a plugin to interpret the protocol. It's not really something that we should be focusing on for getting a new client off the ground, but even now with the OnPluginPacketReceived functions, this can be vaguely emulated now. So long as the new client supports plugins, multiple panels, and scripting on a packet level, this should not be hard for anyone create a plugin to deal with a specific game.

Actual event handling is on my list of things I would like to see, and that would take care of any other issues on interacting with servers that have custom clients. OnMouseOver, OnClick, OnPacketReceived, etc would allow for fairly easy GUI inventory manipulation among other things.

It is much easier to fight for one's ideals than to live up to them.
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


370,946 views.

This is page 7, subject is 11 pages long:  [Previous page]  1  2  3  4  5  6  7 8  9  10  11  [Next page]

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.