Multiplayer U7

NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Forum rules
NOTICE: This forum is archived as read only.
Please use the Github Discussions at https://github.com/exult/exult/discussions
Locked
Blu3AciD

Multiplayer U7

Post by Blu3AciD »

I'm gonna start working on a multiplayer U7. Me and a couple a' skewl friends have decided to take the long journey down that round.

We can't seem to agree however on alot of things. Maybe you ppl can help fill in some answers here.

Not sure what protocol to make it. IPX could work well, even for net players cause they can use programs like Kahn? TCP/IP works well both ways, but in that case we were thinking about server machines. Which will lead to similiar problems that UO has.

Map redesign? Redo some of the maps to compensate more or less ppl? Bigger maps = more ppl = more lag!
Smaller maps = less ppl = less lag = less interaction

Do you still want people in your parties? Iolo etc. ? Could get messy with 5 ppl wandering around each with 6 similiar people tailing behind them?

New monsters? Much more fun to kill new monsters and enemies, could totally unbalance the game however.

Skills? In multiplayer extra skills like steal? From both NPC's and other players?

Everlasting game? You could play until you destroy the Black Gate or have an everlasting game where you have lots of quests to finish?

Selling and Buying? Want to buy able to buy and sell items to other ppl?

Mining, Repairing, Blacksmith? Could make a system similair to UO, Miners give ore and rocks to Blacksmiths, they make weapons and armor, Repair ppl keep these items in top shape. Quality of ore affects quality of weapons and armor? How about magical ore for special items?

Thats about all we need to know. Now some info for the public on the project:

How many developers: 7 at the moment.

Where are we: Please don't laugh, but seriously we are in South Africa.

Whats completed so far:

Basic connection over Lan for TCP/IP :
One player runs a listen server while the other connects with commands from the command line.
Very basic, net code is very lazily done. Requires 10mb Lan Cards.
Maximum of 2 players.
Highly unbalanced, as only one of the players can get Iolo. Only one player can complete murder quest etc. Players cannot kill each other. Chat not implemented. If players are not different sexes they look the same.

We have only been working on the project for 4 days and it was just to test the net coding out. If there isn't a big enough response from the public however we will shut the project down.

Even though the game currently hardly works it was fun playing together and seeing how messed up we could really get the game.

In a few days we will be able to handle up to 12 players. We're also intending on getting good performance out of 56k modems. ISDN and up will be ideal.
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by Dominus »

Well, the only good of making a multiplayer U7 would be that you could have a party consisting of your online/net friends and play together to beat the games. For all the other stuff, running a free UO server would be much more convenient.
Resizing the world is not an option I think. Adding more monsters a must if you play multiplayer. Also make them much more powerfull then as the AI of u7 monsters is not something to brag about.

IMO of course.
Good luck to your project.
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Slade

Re: Multiplayer U7

Post by Slade »

There was once a U7 online project. I heard they had a client and server set up.

Sounds like a good idea though, good luck.
toad`sMoke

Re: Multiplayer U7

Post by toad`sMoke »

There should be a little map redesign.
You gotta play that by ear, if something is not working out you should change it.

No parties, but people should be incouraged to play as a party.

There should be neverending game, but with many quests.
MV

Re: Multiplayer U7

Post by MV »

As I see it, multiplayer u7 should be ultima7 as we know it, (maps, quests, items, people) but, everyone (up to 8) hooks up and plays as party members. Together they beat the game of ultima7.

Anything else and it's just another UO. YAWN.
Blu3AciD

Re: Multiplayer U7

Post by Blu3AciD »

Thnx for the help. At the moment we're working on redesigning the parties. The party will be setup like this. People can hook up together as a party through new options menus. They complete quests together. Experience still needs to be thought out though. Do party members get exp individually or shared out between each other? Or even do all party members get the full amount of exp from the monster.

New monsters are also definetly going to be added. We're playing with a new piece of AI which lets the monsters runaway and when your on the move again creep up and attack you. The computer will also perform weaking spells it has on you first, etc. poison, curse. Then attack with things like fireball, bows, etc. Their attacks will also seem more organized, instead of the hopeless scramble that they normally do and get themselves killed.

Redoing the map, the map is being redone aswell. The map will be smaller but most of it will seem familiar.

Important is that we don't want this winding up as UO with a Ultima7 look and feel. I do want it to be highly replayable and fun and not easy!

One note on quests. We have to change alot of them. The story line also will need adjustment because of this, as the game never ends. The destruction of the Black Gate will be one of the quests you can complete.

Serpent Isle and the other addons I do not have and getting games those in South Africa is a mission on it's own. Therefore Serpent Isle and the Forge of Virtue will have nothing to do with Multi U7.

Another exciting note is that about a month and a half from now we're expecting to release a small LAN alpha version.
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

Oh my god, finally another person who wants what I do!!

Thanks for doing this, if it works out it will be absolutely incredible.


Question, are you building off the exult engine, or is this a stand alone u7 modification?

A few things that would make it feasible, I wrote up a huge thing quite some time ago about exactly this but that was on the old board.

TCP/IP would be FARRR better then IPX, both for efficiency and function. IPX would be a poor choice for an engine like u7. There are many things you can do to make it efficient, lag free, and whatnot.

First, you should implement a checksum comparison of critical game files, such as the usecode, the game map, etc... they should be compared between clients, so that is a mismatch exists you can't connect to each other (prevents a number of things, including cheating and crashes, and getting out of sync).


If you have a choice, I would suggest having one method to leave the original story in tact, with quest flags and plot flags set globally, so all members of the party could individually help complete the quest. It may not be exactly realistic, but it would be awesome to be able to play through the u7 storyline with a friend.

A server --> client setup would be ideal, and have one person (pry someone on a broadband connection) act as a server and commands/usecode/flags/etc data sent FROM the server to the clients.

I'll see if I can find that paper I made...

good luck though!
SB-X
Posts: 980
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by SB-X »

The whole idea of a net-enabled version of Exult is something I am very
interested in, but I can't help but feel that you are aiming for too much
when you have not yet released a simple "run around Britannia with your
friends with any connection" version. Maybe this is just my biased
opinion though, since that is all I really want. :-)
Ideally to me, all I want to be able to do is connect up with people who
hang out in #exult and other places, and journey through the land with them, possibly testing out things in the Exult engine. None of this fancy
UO type stuff needed. In fact... don't bother with any of these(at least
at first):
Checksumming
Map re/design
Party modifications(with the exception of things needed to keep the game from crashing)
More monsters/Extra monsters
Improved AI - Exult developers are already planning on fixing things
No new quests/modifications of current quests
---
Deciding whether smashing the BG ends the game or not is irrelevant for me, since I wouldn't be doing that. :P
No IPX, you can use TCP and UDP or just TCP. More maps does not == more people, more people == more people. Also, you can make the
netcode very efficient and it will run well even for connections < 56k.

And if you are not doing this in Exult... then some of these won't apply and I wouldn't be interested anyway (but then why are you posting on an Exult Discussion forum?)

One man's opinion
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

You would need some form of file checksum comparison, or you would run into plethora's of problems. That's not a "feature", that's a neccessity of basic networking - If a shared dynamic resource isn't the same on both ends, when changes are made or actions performed based on assuming the other person's copy is the same, things go very wrong very fast.

The rest I concur, all I really want is to be able to run around with friends. Above all I'd want *ultima 7* as it was, just with more people. Exult already has hundreds of enhancements which I wouldn't even have thought of (higher resolutions, double clicking to close, new scaling engines, etc) and already make the game essentially perfect, improvements aren't what's needed.
SB-X
Posts: 980
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by SB-X »

The only dynamic resource are local items in gamedat(if you even choose to enable saving in MP games that is). Anything shared is likely
to be very dynamic and would likely take the form of "state information"
sent between the client and server frequently. If there is other data that
has to be identical that I am not aware of, simply make sure the version
of Networked-Exult is the same on each box. The same versions should
not be compatible when starting a new game.
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

Yeah I'm aware of how little would be, what I mean was say someone had edited their map, or had a damaged file - It would cut down on bandwidth usage greatly if instead of getting all the data from the server, having just the command sent, and then each side executes that command seperately. If the data wasn't the same however it would cause problems.

Don't mind me, I'm just finnicky when it comes to 100% data integrity, and the situation I'm talking about is very rare.

What I mean is, I'm a fan of map editing.

Now, say I had edited my map, and removed a rock that was once at a certain spot. Now, later I'm playing with a friend, and we get to that point. On his side, he sees a rock and the game won't let him pass through. On my side, I can pass through because the rock isn't there. However, on his side, I'm not able to walk through the rock, so now we're out of sync. If it FIRST checked to see if I was allowed to walk there on his side FIRST, that would fix it, but would also increase bandwidth use.

Again, it's not a very likely situation, just something that I deal with more frequently at other times.
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by drcode »

If you want to see an example of a run-around-and-just-talk-to-others game, check out Furcadia. It looks a lot like Ultima, which is not surprising, since it's written by "Dr. Cat". However, it seems to be in perpetual Beta for at least five years now.
Blu3AciD

Re: Multiplayer U7

Post by Blu3AciD »

Ok. I will answer some problems issued above. Editing of maps won't be a problem. On server connect the maps of client and server will be checked if they are the same and if not the client will be asked if he would like to download the server maps if the server allows it.

Quests need modification and this is obvious if you think about it. For instance if we have two parties wondering in Trinsic and one has completed the opening gate quest, the other party can skip it totally. If only one party is in the game, no problem. Personally I think two or three parties will be more fun.

I will definatly be using the Exult engine, which is why I post it on the exult forum. A webpage will be started up very soon.

Note to SB-X:
A alpha version has been established if you read up above, but simply put it sucks. You can run over each other and cannot interact with each other.

At the moment net code is the main development. Once that is well done we will make the neccesary changes to the game.
Stuart "Sslaxx" Moore

Re: Multiplayer U7

Post by Stuart "Sslaxx" Moore »

You have a character on Furcadia, DrCode?
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by drcode »

No. It was so long ago that I tried it, that I think the client program was for Windows 3.1.
SB-X
Posts: 980
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by SB-X »

Blu3AciD: Not quite sure how it would work, but at the start, only the slightest and most general modifications have to be made. For example, make the world flags global to every client. Oh and each player
should be able to have a party of NPC's (not duplicate NPC's), and if players want to party together(which is the main reason for the netcode), we can just follow eachother around.
When the alpha version is up and at least enables two players to connect to eachother and run around Britannia, please post it somewhere so I can help Soul Harvester build a pirate hideout. ^_^
sikor_sxe

Re: Multiplayer U7

Post by sikor_sxe »

there is already one in development and it is currently in alpha testing stage, however it's not open source, development is slow and page updates are not frequent. but maybe you can join forces in one project rather than starting another. the multiplayer u7 is called riva and the url is www.avatarpatch.com

sikor_sxe
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

That is seperate from exult however, and he's saying it's either an extension or an addition to exult, which makes a lot of sense - rather then rebuilding an entire game, including engine & usecode, you're just modifying an existing one. I'll look at riva...
XxVenomxX
Posts: 344
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by XxVenomxX »

Riva isn't really an online U7 though. It just borrows graphics, and is meant to satisfy the Ultima fans. I'm an alpha tester for it, though I haven't done so in a long time, since it's so slow in updating. (i.e. none since it started yet). Hopefully it will get much better as time goes on. I think I mentioned Riva on here once, about a month ago.
*shrug*
It's really basic, actually. I think it's worth starting a separate project.
http://venom.gamersgraveyard.com
Fantasy art/Illustration by Brendan Setaro
nadir
Site Admin
Posts: 407
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by nadir »

One of the reasons why Exult has been so successful is because the development model is open: mailing list, irc, forum, cvs, etc. Just look at the community that has gathered around the development of Exult. Projects like these need as much feedback as possible, and I believe a closed model (like Riva) actually stifles productivity.

IMHO a Multiplayer version of U7 should be derived from Exult: you would automatically have the following benefits:

objects to handle all of U7's data files,
objects to deal with graphics and sound
usecode interpreter, compiler and decompiler
exult studio
portability and configurability
this communityand the Exult Team, probably the most knowledgeable experts on Ultima VII :)
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by drcode »

... plus, Exult is already listening for socket connections and messages.
nadir
Site Admin
Posts: 407
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by nadir »

Yes Jeff, but we need to replace that code with something like SDL_net for portability...
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by drcode »

I thought sockets (but maybe not 'select') were portable. 'Course, the XDND isn't portable either, but I was told DND >might< be added to SDL someday.
Max aka Moscow Dragon

Re: Multiplayer U7

Post by Max aka Moscow Dragon »

>with something like SDL_net for portability...

I would disagree. The lesser third-party-libraries the project will have - the better. This was always my point in any software development, not only in open-source but in commercial projects too.
They can sped up the project a bit, but under the fear of sinking in lots of different issues then. This is like writing a very complex and non-trivial app on a mix of C++ and VB. VB part will cause nasty glitches which cannot be fixed since VB is a closed box.

I see lots of issues with sound on Mac. Are they not SDL issues?
I see build issues on MS compiler. Are they not SDL too?

IMHO what Exult needs is a) StretchDIBits - already pre-exists in Win32, Linux version can be picked from the same SDL - it's open source, why use the whole library instead of picking a single function? b) playing WAV/MIDI sounds - already in Win32, I hope Linux version is just write bytes to /dev/dsp or such.

No DirectX at all. StretchDIBits + good old WINMM API on Win32. DirectX can lead to issues on particular video and sound cards. Am I wrong?

Also - sockets are really portable, at least between UNIX and Win32. I have some experience in porting socket-using code from UNIX to Win32.

WinSock is a superset of Berkeley sockets, the only serious difference is that in Win32, socket handles and file handles returned by open() are different beasts and you cannot mix them in select() (which is socket-only on Win32) or in read() (you can call ReadFile on socket but not read()).
send()/recv() are portable though.
Dominus
Site Admin
Posts: 5656
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by Dominus »

The one problem I see with multiplayer Exult is just that Exult is Open Source. This will probably make it easier for people who want to cheat on multiplayer to change the code of the client someday. As under the GPL the source must be open and so people would have the possibility to change the code of their client...
--
Read the documentation and the FAQ! There is no excuse for not reading them! RTFM
Read the Rules!
We do not support Piracy/Abandonware/Warez!
Max aka Moscow Dragon

Re: Multiplayer U7

Post by Max aka Moscow Dragon »

So what?
Then run everything on the server - keyboard/mouse action flow to the server, list of visible items flow from the server.
Or will it be too slow?
wjp
Site Admin
Posts: 1708
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by wjp »

> I see lots of issues with sound on Mac. Are they not SDL issues?

They might be. Basically, we don't know yet. Could be caused by an endian-ness bug in our audio code, our mixer being too slow, misconfigurations, or dozens of other things.

> I see build issues on MS compiler. Are they not SDL too?

No. None of the build issues I saw are SDL problems. There are several problems with MSVC and complex STL (sTl, not sDl) constructions, some others are caused by MSVC not recognizing .cc as C++ files by default. None of the build problems on MSVC I've seen resulted from SDL, though. (SDL works just fine with MSVC)


You seem to forget that using SDL allows us to write one single I/O backend, hugely simplifying development. Would you prefer we spend weeks upon weeks researching and writing platform specific input and output code for all OS's Exult currently runs on (Windows, Linux, MacOS 9, MacOS X, BeOS, Solaris, OpenBSD, FreeBSD, and probably several others), or would you rather we focus on Exult itself, ie. perfecting the engine itself?

Using SDL allows us to build on work by experts on I/O on lots of platforms. If we did it ourselves, we'd basically be re-inventing the wheel, and probably end up with a platform independent abstraction layer anyway, which would most likely be inferior to SDL.
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

"So what?
Then run everything on the server - keyboard/mouse action flow to the server, list of visible items flow from the server.
Of will it be too slow?"

Depends on how much you're looking at. Say you didn't do this for map dependant items like fixed things, walls, trees, et cetera - Only thing you would have to check is if the action was valid at the time, i.e. "Does this item exist, can this person see this object?" Fairly non-cpu intensive and only requires a small amount of data returned.

However, I doubt "cheating" is really an issue here.
drcode
Site Admin
Posts: 2267
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by drcode »

Before using SDL, Exult's 'imagewin' library was my attempt to do a multi-platform abstraction level. As WJP can confirm, it was quite a mess, with separate #ifdef's for X, Win32, and DOSVGA. And it only handled the video output, so we still had to deal with big #ifdef's in 'exult.cc' for dealing with X events and Win32 events (done by WJP). When we switched to SDL, all that mess went away, plus we got support for the Mac, BeOS, and any other platforms that SDL gets ported to.

I generally do like to avoid external dependencies, but SDL definitely has my confidence.
Blu3AciD

Re: Multiplayer U7

Post by Blu3AciD »

I am looking at Riva while I write this. Could link up with them but they aren't open source so I don't know.
Blu3AciD

Re: Multiplayer U7

Post by Blu3AciD »

I just finished playing on Riva. The lag was terrible but it is with most games that you play overseas. They have some interesting ideas like the ability to build in a designated area. However this game is not Ultima 7 just a look a like with stolen graphics.

Cheating will note be an issue with our multiplayer ver. as most processes will be done server side. Also I think that the players that still play Ultima 7 are true lovers of the game and will respect the multiplayer version enough not to cheat and allow it to grow. Character storage however will be done client side unless server computers are started. Perhaps we could setup open and server side options, like diablo 2?

We will be starting a web page for the project very soon and when it starts a public alpha version will be ready with it.
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

If this thing actually takes off, I have a very fast connection and the machines available, I would be more then willing to setup a dedicated server at my home.
Soul Harvester

Re: Multiplayer U7

Post by Soul Harvester »

*** add on to that, I meant for all testing purposes, assistance in debugging and reporting, et cetera.
SB-X
Posts: 980
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by SB-X »

This sounds like you want something that is Massively Multiplayer and hosted at a central location or at least on dedicated servers, with the
ability for people to save and reload their characters...

Ick :-)
Carlos Sisi

Re: Multiplayer U7

Post by Carlos Sisi »

I'm completely addicted to Tibia, another Ultimalike multiplayer game. It is awesome. My dream is to help to build a game like this one as unfortunately I am not a programmer myself, but I'm pretty good with graphics and have wrote several WHAT-IF games in the past, including a roguelike written in Summer Clipper 87 (yes laugh) :-)

www.tibia.org

Have a look. Could give you ideas.
nadir
Site Admin
Posts: 407
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by nadir »

Moscow Dragon, it seems you have no idea what it is like to maintain a multiplatform application. I'm sure StretchDIBits is fine. But what about X ? MacOS 9.x ? MacOS X ? BeOS ? We just discovered there was a port of Exult for the Amiga, which apparently was trivial thanks to SDL... SDL is a great abstraction layer, which lets us forget about the underlying APIs. I also strongly believe that it is a waste of time reinventing the wheel with such abstraction layers. Our sound subsystem could be much simpler if we used SDL_mixer.
Dependencies are not a problem, if we include them in our binary distributions.
Sol
Posts: 4
Joined: Thu May 14, 2020 1:34 pm

Re: Multiplayer U7

Post by Sol »

Wow.

An ambitious U7MP project. Its an enticing idea, the infrastucture is there. U7 is still my favorite Ultima game to date. I played a lot of UO, but it lacked a real Ultima feel (mainly because of the people playing). A U7MP game would kick the pants off UO if it was done properly. First, it wouldnt have to "appeal" to a large audience, because as can be seen here, U7 has a large following, and Exult is reviving it. Exult already makes U7 better, more portable, and the possibilities are still endless. A U7MP game can take many forms. Enabling the crafts in code, such as blacksmithing, carpentry, cooking, farming, etc... would make the game way more immersive than UO could ever be. This would only be possible on a shard that runs full time to make an impact tho. Players could assume playing actual NPCs in game, and be part of the game. This would require good RPers, and it can make Britain come alive. Think about it. NPCs that are real. Of course, no one could be the Avatar unless conditions are met, but such conditions will have to be scripted by the coders, or, they run the shard :). Still others can assume the role of brigands, who storm towns and take of on their ships. Of course, you'd have the knights, who would go after them, and a fight would ensue. The groundwork is there, and if done properly, U7MP can be the MMRPers favorite game.
My apologies for cutting this short, I need to go.

Peace
SnowyThing

Re: Multiplayer U7

Post by SnowyThing »

Furcadia.
Dr.Cat.
Yes.
If there was an Ultima VII online game like that, it'd be great.
But change the graphics and make it virtually...... better. ;)
SnowyThing

Re: Multiplayer U7

Post by SnowyThing »

P.S. My Furcadia name is 'SnowyThing'.
Locked