Giter Site home page Giter Site logo

zyeloni / ti-projekt Goto Github PK

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

Celem programu jest utworzenie rozwiązania chmurowego odpowiedzialnego za gromadzenie danych z serwera do gry minecraft.

Dockerfile 0.01% JavaScript 1.06% HTML 1.52% Python 96.28% CSS 0.91% PowerShell 0.15% Batchfile 0.01% Java 0.07%

ti-projekt's Introduction

RANKED.IO-APP

Autorzy

Lp Imię i Nazwisko
1. Kacper Łukasik
2. Michał Mulik
3. Sebastian Komuda

Cel projektów

Celem programu jest utworzenie rozwiązania chmurowego odpowiedzialnego za gromadzenie danych z serwera do gry minecraft. Dane przechowywane będa w bazie postgresql. Całość projektu będzie rozłożona ma mikroserwisy.

Specyfikacja mikroserwisów

Domyślne hosty oraz porty kontenerów

  • frontend ( frontend:8081 )
  • backend ( backend:1337 )
  • postgres ( postgres:5432 )
  • minecraft ( minecraft:25565 oraz minecraft:4567 )

Komunikacja

Komunikacja

Serwer gry (minecraft) komunikuję się z klientem (grą) poprzez porty TCP/UDP na porcie 25565. Serwer frontendowy, backendowy komunikują się poprzez protokół HTTP po przez serwis REST.

Specyfikacja API - BACKEND

API dostępne pod adressem http://backend:1337

# zwraca listę wszystkich graczy, którzy przynajmniej raz się zalogowali na serwer
curl -X GET /players
# odpowiedź
[
    {
        "id": 7,
        "uuid": "b53006c8-2b25-4d21-8432-c8695412317c",
        "displayName": "Mustafo",
        "createdAt": "2021-06-14T00:31:46.317994Z"
    },
    {
        "id": 41,
        "uuid": "7ed4ff84-1694-42d6-9b99-3530d207ccbc",
        "displayName": "Shisuun",
        "createdAt": "2021-06-15T16:41:09.189231Z"
    },
]
# dodaje gracza do bazy graczy
curl -X POST \
    --data '{"uuid": "uuid_gracza", "displayName": "nazwa gracza"}' \
    /players
# odpowiedź
{
	"uuid": "asdasdasdasdasdasdasd",
	"displayName": "alamakota"
}
# wyświetla statystki zabitych mobów dla podanego gracza 
curl -X GET /entitystats/<id_gracza>
# odpowiedź
[
    {
        "player": 7,
        "entityType": "Sheep",
        "total": 11
    },
    {
        "player": 7,
        "entityType": "Pig",
        "total": 9
    },
    {
        "player": 7,
        "entityType": "Cow",
        "total": 4
    },
]
# dodaje zabitego moba dla gracza
curl -X POST \
    --data '{"player": "uuid_gracza", "entityType": "entity_type"}' \
    /entitystats/<id_gracza>
# odpowiedź
[
    {
        "player": 7,
        "entityType": "Sheep",
    },
]
# zwraca statysytki wydobytych bloków dla podanego gracza
curl -X GET /blockstats/<uuid_gracza>
# odpowiedź
[
    {
        "player": 7,
        "total": 202
    }
]
# dodaje zabitego moba dla gracza
curl -X POST \
    --data '{"player": "uuid_gracza", "blockType": "block_type"}' \
    /blockstats/<id_gracza>
# odpowiedź
[
    {
        "player": 7,
        "blockType": "Stone",
    },
]
# wyświetla informacje o zabójcy/ofierze
curl -X GET /kills/<type:vitim|killer>/<uuid_gracza>
# odpowiedz
[
    {
        "killer": {
            "id": 7,
            "uuid": "b53006c8-2b25-4d21-8432-c8695412317c",
            "displayName": "Mustafo",
            "createdAt": "2021-06-14T00:31:46.317994Z"
        },
        "victim": {
            "id": 40,
            "uuid": "853c80ef3c3749fdaa49938b674adae6",
            "displayName": "Paromix",
            "createdAt": "2021-06-14T03:22:32.692442Z"
        },
        "createdAt": "2021-06-15T10:15:25.798740Z"
    }
]
# dodaje do bazy danych historię zabójstwa
curl -X POST \
    --data '{"killer": <uuid_gracza>, "victim": <id_gracza>}' \
    /kills/add
# odpowiedź
[
    {
        "killer": {
            "id": 7,
            "uuid": "b53006c8-2b25-4d21-8432-c8695412317c",
            "displayName": "Mustafo",
            "createdAt": "2021-06-14T00:31:46.317994Z"
        },
        "victim": {
            "id": 40,
            "uuid": "853c80ef3c3749fdaa49938b674adae6",
            "displayName": "Paromix",
            "createdAt": "2021-06-14T03:22:32.692442Z"
        },
        "createdAt": "2021-06-15T10:15:25.798740Z"
    }
]
# zwraca cała historię zabójstw
curl -X GET /kills
# odpowiedź 
[
    {
        "killer": 7,
        "victim": 40
    },
    {
        "killer": 40,
        "victim": 7
    },
    {
        "killer": 41,
        "victim": 7
    },
    {
        "killer": 41,
        "victim": 7
    }
]
# zwraca ostatnie 10 zabójstw
curl -X GET /lastkills
# odpowiedź 
[
    {
        "killer": {
            "id": 41,
            "uuid": "7ed4ff84-1694-42d6-9b99-3530d207ccbc",
            "displayName": "Shisuun",
            "createdAt": "2021-06-15T16:41:09.189231Z"
        },
        "victim": {
            "id": 7,
            "uuid": "b53006c8-2b25-4d21-8432-c8695412317c",
            "displayName": "Mustafo",
            "createdAt": "2021-06-14T00:31:46.317994Z"
        },
        "createdAt": "2021-06-15T17:19:07.198219Z"
    }
]
# zwraca wszystkie statystki dla wszystkich graczy
curl -X GET /stats
# odpowiedz
[
    {
        "player": 44,
        "total": 4
    },
    {
        "player": 40,
        "total": 1
    },
    {
        "player": 41,
        "total": 25
    },
    {
        "player": 7,
        "total": 33
    }
]

Instalacja

Ranked.io wymaga DOCKER'a.

docker-compose up

To wszystko docker zrobi za Ciebie resztę

Wykorzystane technologię

  • js (vue.js)
  • java
  • python (django)
  • postgresql

Wykorzystane obrazy

Lista wykorzystanych obrazów z DOCKER HUB

  • nginx
  • itzg/minecraft-server
  • postgres
  • python

Struktura folderów

FOLDER OPIS
/backend folder z aplikacją backendową
/frontend folder z aplikacją frontendową
/minecraft-server folder z serwerem do gry minecraft
/data folder danych bazy sql
/ranked-io-plugin folder z kodem źródłowym pluginu do serwera minecraft

Zrzuty z aplikacji frontendowej

SS1 SS2 SS3

ti-projekt's People

Contributors

zyeloni avatar

Watchers

 avatar

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.