GithubHelp home page GithubHelp logo

riftadi / dragonsarena Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.59 MB

Dragons Arena: Warriors vs Dragons RTS Distributed Game

License: MIT License

Python 95.41% Shell 4.59%
distributed-systems game

dragonsarena's People

Contributors

konkrad avatar riftadi avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

dragonsarena's Issues

ZeroMQ

Introduce ZeroMQ to make the transfer of the Messages and the Gamestate working over it.

  • MSG via ZeroMQ

  • Valid Methods to make sure actions of MSG are valid game moves

  • Separate Gameboard. Decode it as array of player ids. If a player joins the game the server assigns a position and spreads it.

protect against cheating

Make sure that a client can not send too frequent of commands which he could not perform currently.

This means especially validating if the current command is a valid operation.

initzial time sync

A masternode should broadcast its inizial timestamps to the others for time synchronisation issues

idea: Send it with the alive topic

gui as own client

create a new file which is only responsible to show the gui

  • gui has to run on main thread
  • just listens to gamestate and game over topic

heartbeat

a mechanism to see if the other servers are still alive or not
a server sends a message under the alive topic to indicate to the others that is still alive

server who listens to this topics cut the connection if after a threshold (1sec) no new alive message is received.

distributing messages to multiple server

A server should publish the received command of a client in order that other servers can subscribe to it.

Point of discussion is when this should happen.

  • as soon as the message is received
  • later when processing the message for the first time

fix GUI bug in MacOS

In MacOS the GUI is crashing because it is running on a thread, move the GUI to the main process.

logging of events

make sure that the client can crash and rejoin the game

  • use id which does not change after restart
  • before spawning make sure if the current user id is already taken (or let the server ignore the second spawning message)
  • log user commands on server for fail rescue

distributed spawning

a client submits an spawn command and the server places this character on the gameboard. We have to find a solution in which we can guarantee that the character gets placed on a field which is not occupied by another player in the meantime on another server.

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.