Ultimamente stavo pensando ai futuri sviluppi del progetto Yoda Soccer, di quando ci sarà una IA giocabile e quando l'engine della partita sarà a posto: è molto difficile inserire a questo punto dello sviluppo del gioco alcune caratteristiche nuove nei giocatori, che per il momento possono rimanere inutilizzate, ma che potrebbero avere un grande senso se Yoda avrà anche una evoluzione "gestionale" (alla SWOS, o, con un esempio più recente, alla Championship Soccer): per esempio sarebbe eccellente poter inserire i seguenti ulteriori parametri dei giocatori:
anno di nascita = va ad influenzare la carriera del giocatore in questione, di modo che dopo i 32/33 anni le caratteristiche del giocatore inizino a scemare fino ad arrivare al ritiro ai 36 anni (per esempio, o random a 33+(1-6) anni.
gioco di squadra = questa caratteristica potrebbe influire sul calcolo dei risultati da parte del computer: sommando, per esempio, il valore di gioco di squadra dei giocatori schierati in campo dal pc, nel calcolo dei risultati, un alto punteggio potrebbe influire sul risultato, sulla quantità di gol incassati etc.
Inoltre sarebbe interessante inserire ulteriori dati per le squadre, come la capienza massima dello stadio (il computer potrebbe determinare il numero di spettatori sulla base della performance e della classifica della squadra), la "reputazione" della squadra etc. Moltissime altre cose possono essere implementate in questa direzione, ma per ora mi limito a queste giusto per avere un giudizio di fattibilità a livello di codice: una buona fonte di ispirazione per quanto riguarda un sistema di gestione dei campionati veramente fenomenale è Championship Soccer di Andreas Osswald, che so di citare spesso, ma che fra tutti i giochi di calcio che ho giocato davvero è quello che mi ha impressionato maggiormente per la profondità e la complessità dell'intelligenza artificiale nel gestire una enorme quantità di dati assolutamente personalizzabili: se in un futuro non troppo remoto si dovesse essere in grado di fondere le caratteristiche gestionale di CS con il gameplay e la grafica di Yoda saremmo sicuramente di fronte al giocone di calcio definitivo.
Nel frattempo mi farebbe piacere aiutare non soltanto con l'elaborazione dei database delle squadre, ma magari anche con delle prime bozze di codice (anche solo concettuali) riguardanti la parte gestionale del gioco: esiste un manuale di Blitzmax per poter iniziare a masticare qualche rudimento e dare una mano attiva in questo senso?
Grazie per l'attenzione e buon lavoro
Nuove info nei file yst
Nuove info nei file yst
[b]OckHAM[/b]
Re: Nuove info nei file yst
Allo stato attuale è difficile parlare di queste cose, ancora c'è ancora troppo da fare prima di avere una versione giocabile: la modalità carriera non e' nemmeno prevista al momento. Sara' gia' un miracolo riuscire a tirar fuori una versione 1.0OckHAM wrote:è molto difficile inserire a questo punto dello sviluppo del gioco alcune caratteristiche nuove nei giocatori, che per il momento possono rimanere inutilizzate, ma che potrebbero avere un grande senso se Yoda avrà anche una evoluzione "gestionale" (alla SWOS, o, con un esempio più recente, alla Championship Soccer)
I parametri possono essere aggiunti in qualunque momento, non vedo particolari problemi. Sulla data di nascita non sono favorevole tuttavia, preferisco il sistema swos con i giocatori 'eterni'. Cmq devo ammettere che non sono molto appassionato dei manageriali, tendo più verso... l'arcade.
Ampliare il formato e' abbastanza banale, il problema e' poi inserire e gestire i nuovi dati. Cmq il formato non e' definitivo, sicuramente qualcosa aggiungeremo col tempo.OckHAM wrote: Inoltre sarebbe interessante inserire ulteriori dati per le squadre, come la capienza massima dello stadio (il computer potrebbe determinare il numero di spettatori sulla base della performance e della classifica della squadra), la "reputazione" della squadra etc. Moltissime altre cose possono essere implementate in questa direzione, ma per ora mi limito a queste giusto per avere un giudizio di fattibilità a livello di codice
Ho provato il demo di CS e mi ha 'impressionato' come realizzazione ma non 'appassionato'. Questione di gusti naturalmenteOckHAM wrote: : una buona fonte di ispirazione per quanto riguarda un sistema di gestione dei campionati veramente fenomenale è Championship Soccer di Andreas Osswald, che so di citare spesso, ma che fra tutti i giochi di calcio che ho giocato davvero è quello che mi ha impressionato maggiormente per la profondità e la complessità dell'intelligenza artificiale nel gestire una enorme quantità di dati assolutamente personalizzabili: se in un futuro non troppo remoto si dovesse essere in grado di fondere le caratteristiche gestionale di CS con il gameplay e la grafica di Yoda saremmo sicuramente di fronte al giocone di calcio definitivo.
Il mio gioco ideale e' uno swos arricchito e migliorato.
Una modalita' carriera piu' approfondita sarebbe un possibile miglioramento, ma solo purchè non si perda l'immediatezza tipica di swos.
Putroppo ancora non esiste un manuale vero e proprio, ma si trova parecchia roba nel forum e nel wiki, compresa qualche piccola guida 'fatta in casa'. Sai gia' programmare?OckHAM wrote: Nel frattempo mi farebbe piacere aiutare non soltanto con l'elaborazione dei database delle squadre, ma magari anche con delle prime bozze di codice (anche solo concettuali) riguardanti la parte gestionale del gioco: esiste un manuale di Blitzmax per poter iniziare a masticare qualche rudimento e dare una mano attiva in questo senso?
Io penso che aggiungere una parte manageriale alla CS non sia una cosa contraria all'immediatezza del gioco alla SWOS: si tratterebbe di una modalità completamente "altra" rispetto alla partita secca, al torneo arcade etc. che saranno ovviamente le priorità. Per una parte manageriale seria, però, è indispensabile che i giocatori invecchino e che vengano creati ogni anno dei nuovi talenti o delle nuove schiappe dalle squadre primavere. L'importante cmq è sapere che un giorno sarà possibile mettere mano anche a questa modalità.
A mio parere la famosa versione 1.0 di Yoda non mi sembra affatto lontana: di fatto bisogna, rispetto allo stato attuale:
- inserire i tackle
- migliorare i portieri
- fixare un poco la velocità e la dinamica del pallone
- elaborare una buona IA sulla base dei file tattici
Insomma, il motore del gioco, il cuore (la partita) sta già tutto là, bisogna soltanto farlo muovere e poi iniziare a raffinarlo.
Proprio per questo mi piacerebbe dare una mano alternativa occupandomi un poco del codice per quanto riguarda la parte puramente concettuale e di elaborazione di dati del manageriale: da questo punto di vista Yoda è grandissimo perchè è opensource, e ci si può conseguentemente lavorare anche in più di uno. A livello di programmazione conosco il C++ e ho programmato qualche script non eccessivamente complesso per il gioco Neverwinter Nights, niente di che, ma in compenso ho molto tempo e ho voglia di imparare seguendo i modelli del codice di Yoda presenti nella release: quello che vorrei elaborare è un il simulatore di incontri e tornei per la parte manageriale: formule per calcolare i risultati fra le squadre, fare i calendari stagionali delle partite etc.
A mio parere la famosa versione 1.0 di Yoda non mi sembra affatto lontana: di fatto bisogna, rispetto allo stato attuale:
- inserire i tackle
- migliorare i portieri
- fixare un poco la velocità e la dinamica del pallone
- elaborare una buona IA sulla base dei file tattici
Insomma, il motore del gioco, il cuore (la partita) sta già tutto là, bisogna soltanto farlo muovere e poi iniziare a raffinarlo.
Proprio per questo mi piacerebbe dare una mano alternativa occupandomi un poco del codice per quanto riguarda la parte puramente concettuale e di elaborazione di dati del manageriale: da questo punto di vista Yoda è grandissimo perchè è opensource, e ci si può conseguentemente lavorare anche in più di uno. A livello di programmazione conosco il C++ e ho programmato qualche script non eccessivamente complesso per il gioco Neverwinter Nights, niente di che, ma in compenso ho molto tempo e ho voglia di imparare seguendo i modelli del codice di Yoda presenti nella release: quello che vorrei elaborare è un il simulatore di incontri e tornei per la parte manageriale: formule per calcolare i risultati fra le squadre, fare i calendari stagionali delle partite etc.
[b]OckHAM[/b]
Grazie per l'incoraggiamentoOckHAM wrote: A mio parere la famosa versione 1.0 di Yoda non mi sembra affatto lontana:
Potresti iniziare programmando un piccolo gioco solo manageriale... e poi se la cosa si evolve si puo' fare una fusione... magari nel frattempo riusciamo a completare la parte arcade di yodaOckHAM wrote: Proprio per questo mi piacerebbe dare una mano alternativa occupandomi un poco del codice per quanto riguarda la parte puramente concettuale e di elaborazione di dati del manageriale: da questo punto di vista Yoda è grandissimo perchè è opensource, e ci si può conseguentemente lavorare anche in più di uno. A livello di programmazione conosco il C++ e ho programmato qualche script non eccessivamente complesso per il gioco Neverwinter Nights, niente di che, ma in compenso ho molto tempo e ho voglia di imparare seguendo i modelli del codice di Yoda presenti nella release: quello che vorrei elaborare è un il simulatore di incontri e tornei per la parte manageriale: formule per calcolare i risultati fra le squadre, fare i calendari stagionali delle partite etc.
-
- FIFA President
- Posts: 148
- Joined: Wed Dec 29, 2004 3:22 am
- Location: Rome, Italy
Oh salve a tutti
Constatata per il momento l'impossibilità per quando mi riguardo di apprendere a programmare decentemente in Blitzmax non mi sono perso d'animo e ho iniziato comunque a lavorare sulla futura/ipotetica parte manageriale-stagionale di Yoda: in attesa di avere una partita giocabile sto scrivendo lo schema di come il computer gestirebbe una stagione, con le formule per calcolare i risultati delle partite, i voti, le statistiche, le formazioni titolari, il tutto basandosi sulle informazioni presenti nei file yst (opportunamente da ritoccare con piccolissime modifiche) e sulla generazione di numeri casuali. In attesa di sapere come il tutto può essere tradotto in Blitxmax (non vi voglio mica caricare di lavoro extra ci metterò tutto il possibile per riuscire a tradurre in codice), inizio a postare quanto scritto ed elaborato fino ad ora. Ho creato anche un file excel che al momento fa tutti i calcoli e mette in pratica le varie formule che ho scritto, ma conto di allegarlo e postarlo quando sarà ad uno stato più completo.
E' un pò lunghetto e disordinato, poi quando finisco la sezione sull'elaborazione della singola partita lo indicizzo e sistemo per benino
Constatata per il momento l'impossibilità per quando mi riguardo di apprendere a programmare decentemente in Blitzmax non mi sono perso d'animo e ho iniziato comunque a lavorare sulla futura/ipotetica parte manageriale-stagionale di Yoda: in attesa di avere una partita giocabile sto scrivendo lo schema di come il computer gestirebbe una stagione, con le formule per calcolare i risultati delle partite, i voti, le statistiche, le formazioni titolari, il tutto basandosi sulle informazioni presenti nei file yst (opportunamente da ritoccare con piccolissime modifiche) e sulla generazione di numeri casuali. In attesa di sapere come il tutto può essere tradotto in Blitxmax (non vi voglio mica caricare di lavoro extra ci metterò tutto il possibile per riuscire a tradurre in codice), inizio a postare quanto scritto ed elaborato fino ad ora. Ho creato anche un file excel che al momento fa tutti i calcoli e mette in pratica le varie formule che ho scritto, ma conto di allegarlo e postarlo quando sarà ad uno stato più completo.
E' un pò lunghetto e disordinato, poi quando finisco la sezione sull'elaborazione della singola partita lo indicizzo e sistemo per benino
1. Modifiche ai file yst
VALORI DA INSERIRE PER I GIOCATORI
Stamina
Mentalità
I Portieri hanno punteggio TESTA per indicare bravura
VALORI DA INSERIRE PER I CLUB
Reputazione
Ricchezza
2. Simulazione della singola partita
2.1 Come si calcola il vincitore di una partita
Punteggio base + VAR Tattica + VAR Casa/Fuori + FORMA + VAR Tempo + Numero Casuale 1-90
Punteggio base = PASST + TIROT + TESTT + TACKT + CONTT + VELOT + FINAT
PASST = Somma di tutti i Passaggio dei convocati
TIROT = Somma di tutti i Tiro dei convocati
TESTT = Somma di tutti i Testa dei convocati
TACKT = Somma di tutti i Tackle dei convocati
CONTT = Somma di tutti i Controllo dei convocati
VELOT = Somma di tutti i Velocità dei convocati
FINAT = Somma di tutti i Finalizzazione dei convocati
STAMT = Somma di tutti i Stamina dei convocati (nuovo)
MENTT = Somma di tutti i Mentalità (nuovo)
2.2 Trasformazione valori per calcolo risultati
0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 2
9 = 3
10 = 4
11 = 5
12 = 6
13 = 6
14 = 7
15 = 8
16 = 9
2.3 VAR Tattica = modifica a PASST TIROT TESTT TACKT CONTT VELOT FINAT sulla base della tattica
0 4-4-2 -> FINAT -10% CONTT +5% TACKT +5%
1 5-4-1 -> FINAT -20% TACKT +10% CONTT +10%
2 4-5-1 -> FINAT -20% CONTT +8% TACKT +8% PASST +4%
3 5-3-2 -> CONTT -10% TACKT +8%
4 3-5-2 -> VELOT -8% TIROT -8% FINAT +8% PASST +8%
5 4-3-3 -> TACKT -15% CONTT -10% FINAT +10% TIROT +10%
6 4-2-4 -> TACKT -20% CONTT -15% FINAT +10% TIROT +15%
7 3-4-3 -> VELOT -10% FINAT +10% CONTT +10% TACKT -10%
8 sweep -> TACKT -10% PASST -5% VELOT +10% CONTT +5%
9 5-2-3 -> CONTT -20% TACKT +15% FINAT +5%
attak -> TACKT -20% FINAT +10%
defed -> FINAT -20% TACKT +10%
2.4 VAR Casa/Fuori = incidenza su punteggio Mentalità del fattore casa/trasferta
Squadra di casa -> +10% MENTT
Squadra trasferta -> -10% MENTT
2.5 FORMA = forma della squadra sulla base dei risultati ottenuti
Punteggio base di FORMA = 100 + Reputazione + media stamina dei giocatori convocati
Ogni vittoria aumenta del 3%
Ogni sconfitta diminuisce del 3%
Pareggio fuori casa aumenta del 1%
Pareggio in casa diminuisce del 1%
Pareggio in campo neutro non cambia il punteggio di FORMA
2.6 VAR Tempo (opzionale)
Si applica alle due squadre
Sereno = nessuna modifica
Pioggia = +2% TACKT -2% VELOT
Diluvio = +3% TACKT -3% VELOT -2% TESTAT
Neve = +5% TACKT -5% VELOT -5% STAMT
Caldo = -5% VELOT
2.7 Risultato
2.7.1 Vittoria
Numero di gol fatti = FINAT + TIROT - TACKT avversario + Numero casuale 1-100
1 124- 1
2 125+ 2
3 130+ 3
4 145+ 4
5 155+ 5
6 160+ 6
7 170+ 7
2.7.2 Pareggio
Media TACKT + CONTT delle due squadre + Numero casuale da 1-50
120+ 0-0
110+ 1-1
100+ 2-2
90+ 3-3
85+ 4-4
80- 5-5
2.7.3 Sconfitta
Numero di gol fatti in caso di sconfitta = FINAT + TIROT - TACKT avversario - Numero casuale 1-50
-1 dell'avversario 30+
-2 dell'avversario 25+
-3 dell'avversario 10+
nessuno 10-
2.8 Giocatori fuori ruolo e sostituti
La formazione determina gli slot dei giocatori in base alla tattica
Un giocatore fuori ruolo dimezza i propri punteggi
In panchina vanno sempre un portiere, due difensori, due centrocampisti, un attaccante
La panchina applica la metà del proprio punteggio
2.9 Come il computer sceglie i titolari
Tutti i valori sono trasformati come per il calcolo dei risultati
FORM0 = punteggio TESTA portiere + STAMINA + media voto ultime 3 partite + numero casuale 1-5
FORM1 = punteggio VELOCITA + TACKLE + PASSAGGIO/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM2 = punteggio VELOCITA + TACKLE + PASSAGGIO/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM3 = punteggio TACKLE + TESTA + VELOCITA/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM4 = punteggio VELOCITA + PASSAGGIO + TIRO/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM5 = punteggio VELOCITA + PASSAGGIO + TIRO/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM6 = punteggio PASSAGGIO + CONTROLLO + TIRO/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
FORM7 = punteggio FINALIZZ + TIRO + TESTA/2 + STAMINA + somma voti ultime 3 partite + numero casuale 1-5
ruolo -> punteggio selez
0 -> FORM0
1 -> FORM1
2 -> FORM2
3 -> FORM3
4 -> FORM4
5 -> FORM5
6 -> FORM6
7 -> FORM7
2.10 Chi segna i gol all'interno della squadra
Ogni gol si assegna al giocatore col punteggio più alto di
(valori modificati come sopra da 1 a 9)
FINALIZ + TIRO + TESTA + numero casuale 1-8
2.11 Assist
Ogni gol ha il 20% di possibilità di avere un assist per ogni centrocampista in tattica -5%
Esempio: il 4-5-1 ha il 95% (20x5)-5 di avere un gol con assist; il 4-4-2 ha il 75% (20x4)-5 di avere un gol con assist
L'assist del gol è effettuato dal giocatore col punteggio più alto di
(valori modificati come sopra da 1 a 9)
PASSAGGIO + CONTROLLO + numero casuale 1-8
[b]OckHAM[/b]
La cosa e' interessante, e anche se al momento i campionati non ci sono, in futuro chissa'...
Riguardo alle modifiche dei file yst, siccome parli di modificare l'intervallo ne approfitto per parlare di una cosa...
I valori attualmente vanno da 0 a 15 e come saprai 0=8, 1=9... 7=15
Questo e' il sistema di swos e ha ovviamente una sua ragione: cambia il bit piu' significativo, che (ho dedotto ma ovviamente non ne posso essere certo) indica i parametri piu' importanti del giocatore, ad esempio:
PA SH HE TA BC SP FI
2 1 14 14 0 6 3
vuol dire che anche se il giocatore ha tre parametri pari a 6 (HE, TA e SP) i suoi punti di forza sono due: HE e TA.
In swos ciascun giocatore ha *minimo* due punti di forza, anche se scarsissimo.
Ad esempio nel database di swos non esiste un giocatore che ha tutti 0, deve avere almeno due 8.
I punti di forza sono utilizzati in swos per la ricerca dei giocatori e chissa' forse anche per qualcos'altro...
In swos i file con le squadre erano binari, ma in yoda per rendere il file yst piu' leggibile, si potrebbe modificare in questo modo:
PA SH HE TA BC SP FI
2 1 6* 6* 0 6 3
oppure
PA SH HE TA BC SP FI
2- 1- 6+ 6+ 0- 6- 3-
Comunque l'intervallo dei valori e' meglio che rimanga 0-7 e non 0-9 per amor di semplicità, anche grafica: nell'editor e' ancora facile distiguere tra 8 valori divesi, i 2 valori in piu' renderebbero la scala troppo lunga.
Riguardo alle modifiche dei file yst, siccome parli di modificare l'intervallo ne approfitto per parlare di una cosa...
I valori attualmente vanno da 0 a 15 e come saprai 0=8, 1=9... 7=15
Questo e' il sistema di swos e ha ovviamente una sua ragione: cambia il bit piu' significativo, che (ho dedotto ma ovviamente non ne posso essere certo) indica i parametri piu' importanti del giocatore, ad esempio:
PA SH HE TA BC SP FI
2 1 14 14 0 6 3
vuol dire che anche se il giocatore ha tre parametri pari a 6 (HE, TA e SP) i suoi punti di forza sono due: HE e TA.
In swos ciascun giocatore ha *minimo* due punti di forza, anche se scarsissimo.
Ad esempio nel database di swos non esiste un giocatore che ha tutti 0, deve avere almeno due 8.
I punti di forza sono utilizzati in swos per la ricerca dei giocatori e chissa' forse anche per qualcos'altro...
In swos i file con le squadre erano binari, ma in yoda per rendere il file yst piu' leggibile, si potrebbe modificare in questo modo:
PA SH HE TA BC SP FI
2 1 6* 6* 0 6 3
oppure
PA SH HE TA BC SP FI
2- 1- 6+ 6+ 0- 6- 3-
Comunque l'intervallo dei valori e' meglio che rimanga 0-7 e non 0-9 per amor di semplicità, anche grafica: nell'editor e' ancora facile distiguere tra 8 valori divesi, i 2 valori in piu' renderebbero la scala troppo lunga.