|
Verge Online Server Source Displaying 1-9 of 9 total.
1
loretian
|
After going through some of my old files, I noticed the old (third iteration) Verge Online Server source code.
So, here it is. This is from around 2001/2002, when we accomplished the most of what was Verge Online. It's made to compile under linux, but I'm sure it could be ported to Windows fairly easily. It won't do you much good without the client source code to go along with it, but figuring out the protocol shouldn't be that difficult if someone cares to try.
It requires mysql, lexx, and yacc. Download it here. If anyone wants to actually attempt compiling it, and has any questions or problems, feel free to e-mail me.
Posted on 2006-01-21 18:09:38
|
adderd
|
Interesting. I downloaded it and looked at it. It would appear that, at this point, Verge Online bears little relation to Verge2 or Verge3. Am I right in that? My impression is that it's a framework for online gaming but has not gotten to the point that it will do much or any interoperating w/ verge itself. It's interesting stuff and something that I hope could be continued!
Posted on 2006-01-21 22:39:41
|
loretian
|
Right, well, Verge Online was always a separate project. It's entirely it's own framework, as far as the network, with the idea being that it could handle hopefully as many as 100-200 users at once (it'd be hard to do more than 8-16 using v3 netcode, I'd guess), but the Verge Online client was heavily based on xerxes, as I recall. The networking and auto-update features, as well as stuff with how the maps worked, I imagine, was unique to VO. vecna coded most of the client code, and I did most of the server code, so he probably knows more than I as far as the client is concerned.
The next few days after we got emoticons (animated even) working were probably some of the most fun "mmorpg" experiences I've ever had.
Which actually reminds me, I don't think I included the auto-update server code in with that. If I can find it, I'll post that as well.
Posted on 2006-01-21 23:30:22 (last edited on 2006-01-21 23:38:46)
|
loretian
|
Here's some more info:
The packet system was TCP based, but it assumed Nagle's algorithm would be turned off (normally, TCP automatically holds packets until you attempt to send a few in order to speed up overall effeciency, which is why a lot of twitch based games, like Quake, use UDP. For what we were attempting to do, the speed of TCP -Nagle w/ the advantages of TCP made it the better choice)
Each packet holds some basic info. Eventually an encryption system was going to be put in place, so it'd be easy to add one in, and you'd probably want to do that if you were ever going to use this with anyone besides your friends.
The packeting system was losely based on the Qauke system. There are four types of packets: System, Object, Event, and Text.
System packets were for things like connecting, authenticating, disconnecting, and pings (keepalives).
Object packets control the movement of objects (such as your avatar). This was kept separate from the event system so it could be optimized accordingly.
Event packets were for things like casting spells, or basically anything besides movement. We intended to include a very simple movementcode-type scripting language in it, so somewhat complex scenes of events could occur with just a couple of packets being sent, with no prior knowledge on the client end.
Text packets were for text communicating and announcements. Again kept separate from event packets so they could be optimized accordingly.
It would also grab text commands from the client and possibly interpret them as commands (svr_cmds.c)
Each map ran on it's own server instance, but the database (meant to be replicating) was aware of all the other maps, and could forward you to the correct server, so theoretically, the "starting" server that every client connects do didn't even need to be hosting any actual gameplay, it would just act as a directing service.
Each server instance had a separate thread to handle the gameplay world which was pulse based; it would process whatever it needed for the current pulse, and then sleep until it was time to process the next pulse. The possibility of missed pulses is taken into account.
Another thread would handle incoming connections, and another thread would handle all the actual client connections. I kept this as one thread instead of multiple threads because it saves system resources, and I've always been an FD_SET kind of guy.
All persistent data was held in the mysql database, but there wasn't much beyond maps and servers, and users and their "costumes."
The basic framework for npcs was barely built, but they don't have any sort of AI or do anything. It would be very simple to add in the wandering code from V3 to get them to start to do something, the system handles NPCs and game players alike.
Otherwise, there was an auto-updating engine which was the actual "vo.exe" on the client end, that would connect to the auto-update server. The auto-update server accepted simple text commands, and it compessed each file individually. The client could check each file by a datestamp and then determine if it needed to update each file, to keep the updating time to a minimum.
The config file parsing was done via lexx and yacc. Check out config.l and config_parser.y. They can look strange if you've never worked with them before, but it's essentially regexps with some extra rulesets. Overall very simple, but great at handling lots and lots of scenarios with minimum concern for all the "gotchas"
Posted on 2006-01-21 23:55:18
|
ghaladen
|
Interesting. I may poke around this a bit tonight and see if I can't write something based on it. More likely than not it may wind up being a .NET implementation, but who knows.
Posted on 2007-08-20 17:19:26
|
lilwing
|
woo! mysql!
i'll download it later... i am actually thinking about developing an online cross platform isometric engine...
Posted on 2007-08-20 18:56:29
|
loretian
|
Cool, wow, somebody is actually checking out my old source. :D
Shoot me an e-mail if you have any questions.
Posted on 2007-08-27 09:33:07
|
Arek
|
I might also look into this. I don't know if anything will come of my poking around, but I have some ideas.
Cheers. :)
--Arek
Posted on 2007-09-08 14:53:44
|
baylek_swiftbite
|
Hello everyone,
I am very interested in having a look at the client code if possible. I am a dev from www.darksunworld.com and we are creating our own engine as well. We are getting ready to start another DSO project and i would like to look into possibly using your engine for it. Let me know if the source is available.
Posted on 2008-04-15 14:29:00
|
Displaying 1-9 of 9 total.
1
|
|