Some tech blabla

posted in Salmakis
Published October 14, 2019
Advertisement

I made a few Projects with networking and stuff, also on work i have alot to do with sockets and network streams, so i think and hope i picked a good setup for my task.

Client Side

The Client is made with Unity by using its onboard Tilemap and Sprite system.

I decided for unity because i wanted to be able to reuse code from the server, specially the network code and some stuff.

Server Side

Authentication is managed via an extra Authserver that accepts Rest API calls on an HTTPS address, after authentication is done, the client will connect to a World server, the address of this server and some kind of token to identify the client is in the response of the API call.

The Authentication server is written in C# by using .net Core 3 and ASP core

The world server is also written in C# with .net Core 3 but without ASP, it shares some database code with the auth server but its an own process.

Database

the database is curently RethinkDB a Document oriented database that i used for some projects and anyhow like alot, i will see how it performs for that task.

But i layered all database code to an Interface, so i could replace the database to any other DBMS, specially if its also document oriented it should be very easy to implement.

The communication between the client and the world server is done with LiteNetLib, because its works on .net core and also in Unity.

currently the netcode is not so well layered of the game or server code, but switching to another network library should also be possible as long as i can write and read bytes from/to the stream.

I dont use any object serialisation for the netcode, because im just not a big fan of all that metadata coming through with serialized objects.

Full authorative Servers

Any player action is executed on the server, so if a player losts connection he cant do anything.

If example a player wants to move from A to B, then just a message preamble and a position is being transferred, and the answer is that the Player Entity is now moving from A to B, if this is even possible.

Same with buy, sell and any other player Actions.

World Servers

Each world server represents a Game world that can be imagined as a continent or a big Island

If you travel to another continent (by ship) then you technically connect to another world server.

 

here some image that i just made in mspaint:

image.png.e60673c8d5327d09f8659aa790af8f1d.png

Previous Entry What is MTO?
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement

Latest Entries

Some tech blabla

1337 views

What is MTO?

2085 views
Advertisement