MMORPG "Kit" In Construction.

Hello !
(Scuse for my bas english im french ;p)
before starting I hold has to say that for the moment I use the following code:

http://www.unifycommunity.com/wiki/index.php?title=Simple_TCP/IP_Client_-_Server

This for the DLL and the Code Customer.

======================================================

Hello everyone !

I propose a single subject, where, if you want, we will realize a toolkit for development of MMORPG in unity.
Now I’ll answer the first question could be asked.

Who encode the client ?
Me and you.

Who encode the server ?
us (we propose SVN.)

Who are you to say that ?
I’m just a simple programmer who wants to help a large community

I°) The client :

The MMORPG will contain a client composed of Unity and script C# !
All people with ideas, scripts or want to help me will post in this topic.

II°) The server :

The server will be in C++ (encode by ourselves). We are not endowed in C# so we want your
supports. The server has its own “RakNet” created be ourselves. Ths one is stable and efficient
It connects to a MySQL database wich encode by ourselves again. This library is a simple
connection like Mysql PHP scripts!

III°)The Used libraries :

Why not have taken libraries already made? The first reason is the problem of copyright / license
and therefore that our server is really free! This means that a person familiar with the basic
C++ may interact in modifying the server.

About the MMORPG we’re going to (You and me) present our idea on how to create this toolkit. We’ll use steps.

Fisrt Steps :

-Creation of the server (in command line)
-Creation of the packets : we use a simple system : Packet => Information
exemple : (Position => X,Y,Z
-Creation of the login to the server (not yet complete) in C# with a script took in official forum
-Creation of server command

The first step is almost complete ! We just need to finish the command server. Screen:


This is the truth look this screen :

Second steps ( We need you) :

-Character-Sync Client / Server .We need a script of synchronization of packets to the server

  • Creation of one chat ( We need you on that point)

The two steps I’ve described are the basics of client / server. You are free to add and supplement.
Give us your script sending a socket XX | ZZ and we will create the server part.

We will give you a link to download the server at each step.
And each stable version we will give you a source version.


New : Information about the starting of the server ( Load / port use)
New : The system of the command is now complete ( See below)
update : of the packets will be send to the server
update : of the packets will be receipt


Update :

-I’ll show you the command of the server. (screen)



The binairies :

Be care ! In the client only server connection are encode and a little part of the server reception.
About the server login (Client => server) and for the sends of the packets i used a source wich
comes from the officiel forum. If we find encoders we encode the client since the beginning. (we are
not very skilled in C#)

http://honoka-online.fr/Arkantium.rar

A setup file is provided to install the C # script levels Unity. Regarding the DLL just the place
as it is already (assests / Plugins)

Recruitment For This Project ! English Or French !
Recruitment the C# Coders for Client

I’ve a few questions assuming you already thought about these as you started the server and thread:

  • How are you planning to handle persistency in a fast and consistent way?
  • How are you going to handle script persistency post server shutdown in a fast and stable way?
  • What server scripting capability are you planning to use for designers to create dynamics without ever beeing allowed to touch the source? (sounds bad but it makes life significantly easier for both sides)
  • Which distinct self containing services does your design use to make the technology scaleable in any way? (as in login service, chat service, position service, inventory service, quest service)

Guess I’ll come up with more questions later but these are the basic questions that are likely of most importance at the start

That’s a topic unto itself that requires as much thought and work as the application protocol that you send over the wire.

Does he have a sample data dictionary yet for anyone to see? How does he plan on handing things like referential integrity and journaling? Did he choose MySQL over something rock-solid and tool rich like DB2, simply because it’s free?

Hi,

I tried to understand the issues. And I will try to answer them.

  1. The server is coded in C and will use libraries like racknet. However they are entirely created by us to optimize speed. Such a junction for the server = Mysql.

  2. The backup server will automatically repeated every six hours. To stop the server, it will be done by saving all the accounts before stopping this one. During the disconnections of someone, the server will record real time information.

  3. Our project is to create a small MMORPG “kit” for Unity! We do not create a platform for creating MMORPG! We will therefore not an integrated scripting system yet. Unless we find help on this forum. ^ ^

  4. Our goal is not to create a revolutionary system! We just want the minimum integrated to create an MMORPG.
    Login / Register, chat, Inventory, Statistics, level, Life / Mana), may be the guild system.
    If we chose MySQL for our project is by this that it is free and many people know uses it because it is simple to use. We have created the query as to whether the system PHP => Mysql. This will result in the programmer knowing queries in PHP to modify the server easily.

Or just: Why was it decided to start at 0 if there is Project DarkStar that handles horizontal scaling and persistency out of the box? :slight_smile:

I guess there’s not too much use for trig functions in an MMO, so Java wouldn’t be too much slower than his C++ server.

performance can’t be that important, MySQL was choosen as db and tcp for the networking

But I’m naturally looking forward to the development and what they come up with :slight_smile:
Love looking at other peoples work in fields familiar to mine :slight_smile:

Question answered go up ;p

Lol Dreamora. And here I was trying to be subtle!

Though not answered the questions (backup does not solve the problem of persistency, only of not losing all your data - but you need also an efficient way to handle and cache data in live for example. though if you target a smaller scale game its not that important)

from what I get from your posting, you might want to look at this article: IBM Developer

although its targeted at torque, it applies to any general client - server architecture within a game environment where not a single continous work is beeing used. as yours for example

What happens if the server stops due to a power outage? Even worse, in the middle of writing a transaction to disk? What happens if something gets corrupted, and you need to roll back a single transaction? What happens if you find out that MySQL is not up to the task?

Hence my questions to you about referential integrity and journaling. Both of which you don’t appear to grasp the importance of from your response.

I’m just a simple non-programmer who wants to help a simple programmer :wink:

Have you looked at this?

http://is.gd/6Uevl

Not exactly a kit, but it looks easy. Why start from scratch if the pieces are out there already? Maybe I am missing the goal of this project.

Yes,

I have to look at but we want only to make one small server who will be able to hold many people and to have the basic options of a mmorpg; p

We do not want use an API for create this server beacause API = Not Free ;p

I just finished the first stage of my project which aims for quite the same like this one.

In my setting i have ONE webserver with mysql which handles all accounts.
So the gameservers get the account data (and put it in its own gameserver SQLite database) from the webserver, when a client connects to a gameserver with his accoutdata.

Well i am aiming for a few servers with the same gameworld. So if one server has too many players (>500), i would just open another independent one running the same game.

Till now this + position sync playerstate sync etc. works fine + error handling

I chose reliable/unreliable UDP packets (with encryption) and C/C++
(with boost threads) for this solution.
and of course the sqlite cpp stuff and md5 hashes etc. pp

And if someone is interested in it i can share the server EXE + sqlite DB + config/client DLL/php script + mysql DB in the forum if i think its ready for a first look.

My next big step is:

  • consistent items inventory in gameserver DB (SQLite)

I’ll suggest some possible solutions, but first note that this assumes you’ll take a service-based approach to this - anything else would be asking for volatility!

  1. Proxy objects, lazing-loading and batch-writes with an entity framework like NHibernate would be ideal - I don’t know what alternatives there are for c++.

  2. Scripts should simply be instructional - they shouldn’t carry any essential data themselves, so a quest script may store its data in your db with say: Name, Status, Stage. Events that trigger a create, update, delete for these should be written in the next write-to-db batch. Any db entry that entails using a script is thus un-loaded and re-loaded when a character logs in, using this persistent data. Therefore the worst that could happen is you just complete a quest objective and 5 seconds later the server bombs out and hasn’t written that to the db. But hopefully this wouldn’t happen on account of the failover :wink:

  3. I’d suggest Ruby, Lua or even C#.

  4. Probably the most important point of all and worth looking in to with relation to decoupling, load balancing and failover. Ultimately you want the client to point to a domain and have a proxy server/s
    throw him around in a Observer-patterny-like-way.

I’m interested to know whether or not this project is still running.

(Sorry for the Thread Digging)

Is this project only doable with Unity Pro (I mean to make C++ .dll communicate with C# script ?
And can the server run under Linux environment ?
I’m a developer interested in this project but I’d like to know more about it.

C++ dll usage is a pro only feature right.