Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [MySQL] Consiglio struttura database gioco

    Il mio livello di conoscenza e' medio basso, mi servirebbe una dritta per costruire un db relativo alle missioni del gioco indipendente complesso. Elenco le tipologie di missioni:

    Tipo: STORYLINE - sono missioni che si presentano in un ordine, finita una missione, se ne sbloccano altre.
    Tipo: NORMALI - missioni senza un ordine, una volta finite possono essere eliminate pure dal db.
    Sono inoltre ad esaurimento posti.
    Tipo: NORMALI CONDIVISE - come sopra, in piu per raggiungere l'obiettivo vale la somma dei punteggi di tutti i partecipanti.


    Ci provo:
    codice:
    +giocatori
     id_giocatore
     nome_giocatore
     ecc...
    codice:
    +Storyline
     id_giocatore
     id_missione_sbloccata
    Con questa seconda tabella risolvo il problema delle storyline. Perche mi da il progresso della storia e le missioni storyline disponibili.

    codice:
     
    +Missioni
     id_missione
     id_missione_requisita
     nome_missione
     descrizione_missione
     obiettivo_missione_1
     obiettivo_missione_2
     posti_liberi
     missione_tipo
     missione_condivisa
     missione_durata
     ecc...
    Listone con tutte le missioni memorizzate, tipo regole del gioco.
    Confrontando con "id_missione_requisita" con "id_missione_sbloccata" della tabella precedente, ottengo le missioni storyline disponibili.
    Dentro a "missione_tipo" potro scrivere se "storyline" o "normale" o meglio ancora un numero identificativo. Se storyline come detto prima su filtro se e' sbloccata.
    I posti liberi indica se è sempre disponibile o a esaurimento posti. Se è ad esarimento ogni volta che uno accetta il valore lo farò scendere di uno.
    Usero un valore che indichi l'opzione "posti infiniti"

    Ma ora mancano le informazioni sulle missioni in corso ed i progressi, quindi continuo sotto:

    codice:
    +Missioni_attivate
     id_giocatore
     id_missione_attivata
    In questa tabella carico i dati quando un giocatore sceglie una missione.

    codice:
    +Missioni_progressi
     id_missione
     progresso_obiettivo_1
     progresso_obiettivo_2
     missione_scadenza
    Questa tabella dipende dalla precedente, ma carica in più informazioni sui "progressi", confrontandoli con gli "obiettivi" della tabella missioni. Inoltre "missione_scadenza" si attiva non appena accetto una missione ed usando "missione_durata" ottengo inizio e termine della stessa.
    Manca pero ID del giocatore che pero ho segnato nella tabella precedente. Non ho messo tutto assieme perche esistono le missioni condivise, dove i punteggi si sommano ed avrei duplicare dei dati per ogni partecipante.

    Dentro a "progresso_obiettivo_1" e 2 potro segnare addirittura i progressi dei singoli partecipanti, se si tratta di missioni condivise,

    Ci ho messo quasi 6 ore per partorire sta cosa, è terribile?
    Il Cavaliere dei Sogni

  2. #2

    Re: [MySQL] Consiglio struttura database gioco

    Originariamente inviato da narghat Ci ho messo quasi 6 ore per partorire sta cosa, è terribile?
    No non è affatto teribile...anzi è un buon punto di partenza

    non ho capito solo un paio di cose:
    1)ma un giocatore può partecipare contemporaneamente a più missioni di più tipi (per esempio a una storyline, una normale e una condivisisa)?
    2)inoltre non ho capito se i progressi delle missioni condivise sono er singolo giocatore o per la missione in generale suppongo la seconda ipotesi)

    in ogni caso vediamo un po' come potremmo risistemare il tutto...

    prima cosa considererei la missione Normale come un sottotipo di Storyline formata da un'unica missione, in modo da avere una gestione unficata delle mssioni...in pratica tu devi preoccupare di gestire solo missioni Storyline

    di conseguenza consideriamo anche la missione Normale come una missione Condivisa con numero di posti totali = 1


    a questo punto


    [CODE]
    +giocatori
    id_giocatore
    nome_giocatore
    ecc...


    --da missioni togliamo gli obiettivi e li mettiamo a parte così possono essere 1 o n
    --e togliamo posti_liberi (metteremo poi posti_totali nella storyline)
    +Missioni
    id_missione
    nome_missione
    descrizione_missione
    posti_totali
    durata
    ecc...

    --in obiettivi missione la pk sarà (id_missione + id_obiettivo)
    +Obiettivi_missione
    id_missione
    id_obiettivo
    descrizione
    progresso_obiettivo
    ecc ...


    +storyline_missioni
    id_storyline
    id_missione
    id_prog
    id_stato (1=attiva 0=già chiusa o ancora da sbloccare)


    +missioni_giocatore (pk id_storyline+id_giocatore)
    id_storyline
    id_giocatore


    +id_storyline
    id_storyline
    posti_totali
    ecc

    [CODE]


    facciamo degli esempi:

    +missioni_giocatore
    id_storyline id_giocatore
    1 ------- 444
    2 ------- 666
    3 ------- 888
    3 ------- 999

    Da qui vediamo che attualmente nel gioco ci sono 4 giocatori (con id 444,666...)
    e 3 missioni (abbiamo detto che tutte le missioni sono storyline)

    +id_storyline
    id_storyline posti_totali
    1 ------ 1
    2 ----- 1
    3 ------ 5
    Da qui scopriamo che la soryline 3 èuna condivisa con cinque posti totali (quindi ce ne sono ancora 3 disponibili)


    +storyline
    id_storyline|id_missione|id_prog|id_stato
    1 ------- 1 ------- 1 ------- 1
    2 ------- 14 ------- 1 ------- 0
    2 ------- 32 ------- 2 ------- 0
    2 ------- 12 ------- 3 ------- 1
    2 ------- 44 ------- 4 ------- 0
    3 ------- 16 ------- 1 ------- 1

    da qui vediamo che
    -la storyline 1 e 3 sono composte ciascuna da un'unica missione (con id 1, e con id 16) che è attiva
    -la storyline 2 è composta da 4 missioni (con id 14,32, ecc) delle quali è attiva la terza (id_prog=3) con id_missione 12 e che la prossima da sbloccare la missione con id 44

    ecc. ecc.

    vedi un poi se ti torna

  3. #3

    Re: Re: [MySQL] Consiglio struttura database gioco

    Originariamente inviato da philbert
    non ho capito solo un paio di cose:
    1)ma un giocatore può partecipare contemporaneamente a più missioni di più tipi (per esempio a una storyline, una normale e una condivisisa)?
    2)inoltre non ho capito se i progressi delle missioni condivise sono er singolo giocatore o per la missione in generale suppongo la seconda ipotesi)
    Innanzitutto grazie
    Rispondo alla tua domanda,
    si, un giocatore puo partecipare a piu tipi di missioni.

    Nelle missioni condivise i progressi appartengono alle missioni non al singolo. Esempio: dici a 5 persone di recuperare 20 mele. Nn importa poi se uno ne raccolga 14 e gli altri 1 sola. L'obiettivo e' arrivare a 20.

    La tabella storyline mi piace molto.

    Perche dentro a
    +Obiettivi_missione hai messo anche "progresso_obiettivo" ? Pero vorrei far notare la meccanica:

    Esempio la missione 1, obiettivo e' raccogliere 5 pere. Vuol dire che tutti i giocatori,che sono al livello 1 avranno quell'obiettivo.
    Se entrano 10 100 o 1000 giocatori la eseguirano tutti, magari pure contemporaneamente.

    Le missioni che ho chiamato normali, in realta sono missioni con posti finiti, che possono essere eseguite un numero massimo di volte.

    Le missioni condivise permettono di condividere ed accumulare i risultati.
    Il Cavaliere dei Sogni

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.