Giter Club home page Giter Club logo

sailmaster's Introduction

Sailmaster

Technologies and architecture

Sailmaster is turn-based MMORPG.
The client is a single-page application (HTML5, Canvas, vanilla JavaScript), but it could be changed at anytime.
There are could be few clients, thanks to open API of the backend.
The server is a two-component application.
Webserver handles endpoints, with whom the client is communicate.
The webserver application is written in Python (Flask for http calls, asyncio for websockets).
Finally, there is a gameserver.
The gameserver contains all gamelogic and written in Go (Golang).
There is a RabbitMQ as communication middleware between webserver and gameserver.
The game's RDBMS is MySQL for now (for fast prototyping, thanks for phpmyadmin).
In the future it will be switched to PostgreSQL.

The game

The game's has core loop:

  1. all players interacts with NPC and their ships (sends orders) within the timeframe (30 sec for now);
  2. the server calculates all orders, battles, movements;
  3. all players, who currently online, got results from server and the client draws animation;
  4. when animation is done, all players get control on their's characters and could issue new orders once again.

Usually, when a player logged off, the player's character placed in somewhat 'stasis' and disappear from the game. And appears back only when the player is logging in.
In this game, the character is always in the game, disregarding the online/offline state of the player itself.
So, without the player attending, the player character becomes somewhat NPC-like, which could do some pre-written actions and somehow react to external stimuli, based on the scenarios which were written by the player.

It is Race-vs-Race game. 5 races, 6 fractions.
Humans, Elves, Orcs, Undead, Dwarves, Renegades.
While all fractions are playable, a player of any race could become a renegade only playing the role.

LICENSE

The source code and the documentation is licensed under Apahce License 2.0 for now
All assets, including graphic, sound, animation are under a proprietary license
Author is Gladyshev Anton, 2020

RUNNING

Install mysql
Create user, database
Install RabbitMQ sudo docker run -d --hostname rabbitmq1 --name rabbitmq1 -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Run RabbitMQ
docker start rabbitmq1
Run webserver
webserver$ python3 webserver_auth.py
Compile and Run gameserver
gameserver$ go build
gameserver$ ./gameserver

sailmaster's People

Contributors

areso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

sailmaster's Issues

Make health indicator on index page

DoD:
there should be statuses: on the front page of the project.

  1. Python script(s) statuses
    1-1) Python scripts DB connection statuses
  2. Database statuses
  3. Golang statuses
  4. RabbitMQ statuses
  5. Metric for online users number.

License ?

Hello, under what license is this project released under ? I would like to study it to learn from it. Thank you.

Create char creation page

Handle request to select all chars
If chars are not found show form to create a char
Handle request to char creation

Checkbox which toggles autonaming for new chars

  1. Check the settings.
  2. If enabled, disable the field on the client.
  3. Generate names, check against existing ones.
  4. Allow using previous ones (already generated).
  5. On the back, check the setting when a character is created if the client was hijacked, generate a new name, and overwrite the wrong data from the client.

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.