Jump to content
  • Advertisement
Sign in to follow this  
Spodi

vbGORE MMORPG Engine - v1.0.0

This topic is 4071 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

vbGORE is an open source, free MMORPG engine developed in Visual Basic 6 that has been in heavy development for over a year. It supports multiple connections with great speed with support over as many servers as you want. The server offers a lot of security from countless lines of packet integrity checking to streaming packet encryption, using a MySQL database to hold information. The client uses DirectX 8 to offer powerful 2d graphic support and manipulation with effects from alphablending, lighting and rotations to even a custom particle engine. description of your image description of your image description of your image description of your image vbGORE includes a fully playable demo game with spells to cast, quests to beat and NPCs to slay so you can see everything vbGORE has to offer. Main site: http://www.vbgore.com/ Download: http://www.vbgore.com/Downloads Screenshots: http://www.vbgore.com/Screenshots_From_1.0.x Forums: http://www.vbgore.com/forums/ More game information: http://www.vbgore.com/What_is_vbGORE [Edited by - Spodi on July 22, 2007 9:15:34 PM]

Share this post


Link to post
Share on other sites
Advertisement
When you say 'over as many servers as you want', do you mean to say that the server system is distributable? How did you manage writing data to the same database and hosting over several servers? Or is each server its own shard, writing back user specific data only? I would love to hear a bit more about this.

Also, can you say a bit on how you did the language localization? Is it all hardcoded, or is there something deeper? I have read a couple interesting articles about language localization techniques, but have never actually implemented anything myself.

This looks really great. Networking, particles, GUI -- it has it all. Have you developed a method for actual game creation (worlds and quests) -- or are you just working on the engine?

Anyway, looks really good mate. Keep up the good work.

Share this post


Link to post
Share on other sites
Greetings Visage,

The server load distribution is done by setting which servers run which maps. When a player changes maps, a verification is done to make sure they are still on the correct server. If they aren't, the client is told to disconnect then reconnect to the new server (this is all done behind-the-scenes, so the only thing the user notices is a slightly longer map switching). While the user is changing maps, the server saves their data to the global MySQL database that all servers get their information from. When the user connects to the new server, the new server just grabs their information out of the database and they become the handler. The old server just unloads all information about them.

The servers are allowed to communicate between each other, too. They will send packets to one another if a player sends mail or a private message to a player on another server, for example.

The whole "multiple server" system still requires heavy testing to make sure it works correctly, but from all I have tested it seems to work fine.

The language support is done by using a list of system messages, each in different languages. To prevent heavy packet loads, the server sends common messages by ID instead of by the message itself, so that way something like "The requested player is not online" goes from about 37 bytes (34 + packet header + string header + color) to 2 bytes (packet header + message ID). The client will first check the language specified by typing the /language (/lang for short) command. If the message exists in that language, it will use it, but if not, it will fall back on English. So as you can see, NPCs names are still English, and quest information will still be presented in English (unless moved to the client, which would use the same system described above basically, but risk expose the quest information to the user), but system messages are translated. It works for NPC's chatting, too, which is also done pretty much the same as above, but in a lot more sophisticated format.

I'm not exactly sure what you are referring to when you said, "Have you developed a method for actual game creation". Care to rephrase that for me? ;)

Share this post


Link to post
Share on other sites
Thanks for the responses. What I meant by 'game creation' was adding skills, triggers, events, designing maps, et cetera.

After perusing your site, though, I have pretty much found what I wanted -- there is still a lot of hard coding going on for skills, but that is to be expected at such an early stage. Are there any plans to add scripting for easy extension of the engine?

Anyway, definitely looks like it has come a long way since the early versions! Keep up the great work. Looks like your forums are starting to get quite a following!

I really like your localization system -- but you might run into an issue when you start getting into dynamic quotes. For example, 'The ogre dropped an apple' versus 'The wolf dropped a green pelt' versus 'Franklin handed you fifteen pearls'. Notice the grammar issues with plurality, handling articles, et cetera. This gets even more complicated when you go between languages -- because each language has its own rules. Gamasutra has an excellent article on this exact topic, which you can read here. Obviously, not high on the priority list -- but worth keeping in mind as development rolls along.

As for the distributed system -- is it p2p or does it have a master server? Have you ever thought about using the systems to watch one another and handle any crashes elegantly? As in, if one system drops, another one picks up the connections. It probably wouldn't work so well with the design you have now -- where each server holds 'one' map -- but I assume that you have the ability for one server to hold several maps in the case where you only have one server. Do you typically split the map load among different servers (as in, with 10 maps and 3 servers, each server would have 3, 3, and 4 maps respectively). In this case, do you ever do any weight testing, to see if some maps are more 'active' then others, and try to rebalance the servers? Is there a way to 'weight' one server more heavily.

Sorry, that got off on some pretty wild stuff there. The idea excites me though -- I love distributed systems.

Best of luck!

Share this post


Link to post
Share on other sites
Yeah, a lot of it is purely code-based. This is mostly because I find scripting would be a combination of slower and more limiting then directly coding, along with harder to write. With VB6, you got the IDE with its syntax and powerful error handling, but with a lot of scripting languages, it'd simply just crash if there was any error. Of course, theres some powerful scripting languages, but then still, you have to learn two languages instead of one. I'm definitely not anything close to a pro at scripting theory and writing, but I have never found much help for it in open source projects like this.

Thats a cool article on the language - I'll check it out! I'm not too worried about small grammar errors in cross-language support, though. As long as the people can figure out what the message means then I'm happy. ;)

The distribution system can handle as many maps per server as it needs. By default, its set up all maps go to one server. The load balancing is pure manual - no automatic checks. One reason for this is that load balancing itself takes a bit of a load to do itself, so I doubt I'd be able to do it very well any time soon without more work then it is worth.

That would be a cool idea, though, having one server pick up if the other drops. Though, I can't see an efficient way of that working. The other server would have to maintain a lot of the same memory as the server that crashed, which would require a lot of communication between the two.

Thanks for the feedback! :)

Share this post


Link to post
Share on other sites
I noticed your networking technology is based upon the Winsock API - please tell me you didn't use select()? :\

Share this post


Link to post
Share on other sites
No Select(), I use WSAAsyncSelect(). I'm not as knowledgeable with the Winsock API as I would like to be, so I wouldn't be surprised if the socket isn't superb, but I believe it is written quite well. You can view the code in the \Code\GOREsock\ folder for the socket control.

Edit: You can now view it online here at http://www.vbgore.com/code/100/Code/GOREsock/

[Edited by - Spodi on May 13, 2007 6:43:30 PM]

Share this post


Link to post
Share on other sites
This looks hot! Downloading right away.

How easy is it to modify the interface? What resolutions does the game support?

Update: Step 5 of SQLyog install guide tells you to right click on the right panel, when I think it is the left panel.

Very thorough install instructions. I have installed vbgore, mysql, odbc and the sqlyog. I've started SQlyog but when I go to run vbgore I get an error message.

I've run all the configuration, twice now and SQLyog loads the vbgore database successfully. I'm going to check your forums now.

[Edited by - Dumptruck on May 13, 2007 9:10:46 PM]

Share this post


Link to post
Share on other sites
Thanks Dumptruck! Any resolution is supported, but one constant resolution must be used for all clients and recognized by the server, so either 800x600 or 1024x768 (if you don't mind cutting out some lower-end computers) is recommended.

As for modifying the interface... it could be a lot better designed, and I hope to some time in the future. Theres an article that will help lead you through adding new windows to the interface, though, which can be found at: http://www.vbgore.com/Adding_windows

Share this post


Link to post
Share on other sites
I have everything up and running now. This has huge potential.

Awesome documentation for getting started.

What are you targeting now for improvements?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!