Code Monkey home page Code Monkey logo

mmo-dragon-game-framework's Introduction

MMO Dragon Game Framework

Proof of concept networking entities and load balancing with distributed server workers.

Warning

Slowly and surely improving but probably not ready for a big game yet. Under heavy development.

Tech

Features

  • Central server that handles message passing between the client and server workers.
  • An entity data store. Entities are the dynamic objects in the server. Entities have a list of data including position, type, and any game data needed.
  • MessagePack for message passing to the client and server.
  • Example Unity3d client and server.

Future Work

  • Better area entity checkouts.
  • Multiple server workers for distributed processing.

Getting Started

  1. Open the Unity Project at Workers/UnityMmo.
  2. Open the scene Scenes/SampleScene.unity.
  3. Run the sever from the tool bar Dragon GF/Run Server (Local).

Server and Clients setup

Watch the video

Important Links!

https://github.com/neuecc/MessagePack-CSharp#aot-code-generation-support-for-unityxamarin

Setting up MessagePack Codegen

-i ../packages/games.cookiedragon.mmogf.core/MmogfMessages -o ../packages/games.cookiedragon.mmogf.core/Scripts/Generated -r MmogfCoreResolver

and

-i MmogfMessages -o Scripts/Generated

Docker Build

Build Server build in the Builds/Linux folder.
Run in the main folder.

Game Build

docker build -f Docker/Worker/Dockerfile -t judah4/dragongf-testgame:v0.1.2 -t judah4/dragongf-testgame:latest .  

Example build file for the test game.

Run On Docker

docker compose -f Docker/Compose/docker-compose.yml up -d  

Push

docker push judah4/dragongf-testgame:latest  
docker push judah4/dragongf-testgame:v0.1.2  

Agones and Kubernetes

kubectl create -f Agones/dragongf-gameserver.yaml

Core Build

Run in the main folder.

Main Server Build

docker build -f Docker/MainServer/Dockerfile -t judah4/dragongf:v0.1.2 -t judah4/dragongf:latest .

Only required for core dev.

Push

docker push judah4/dragongf:latest  
docker push judah4/dragongf:v0.1.2  

mmo-dragon-game-framework's People

Contributors

judah4 avatar tyendinaga avatar linuxydable avatar

Stargazers

 avatar Felipe Reis avatar  avatar  avatar  avatar Jack avatar  avatar Ricardo Suman avatar 东方树 avatar sunguangdong avatar  avatar Joohun, Maeng avatar Benjamin Stanley avatar  avatar Julian Haderer avatar  avatar frankfanslc avatar 夜莺 avatar  avatar  avatar  avatar Julio Litwin avatar AlexMog avatar  avatar Man Sun avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

mmo-dragon-game-framework's Issues

Find memory leak in server

Figure out why the game stops responding to commands after 10-30 minutes. Might be an ever growing list somewhere in the main server.

Configuration for different Grid interests

Configure components so that we can make the player creator any range and the regular entities the default.

We would also want to configure entities players would want to have know further away like markers were party members are.

Cannon Fire Command

Fire left and right cannons, shoot cannon balls and apply on hit events when cannons hit another ship

Entity Checkout

Check out an entity list and make sure data is loaded. Current implementation can be missing entities if the data sent is not processed.

Flatten World Grid Data

It is very object heavy. We need the data flattened so we can eventually stick it into a key-value pair database like redis.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.