Autore Topic: Creazione di un videogame di Biliardo multipiattaforma  (Letto 18632 volte)

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Creazione di un videogame di Biliardo multipiattaforma
« il: 17 Marzo 2015, 17:15:51 »
Inizio da qui per raccontare e rendere partecipi tutti della mia prima creazione di un videogame multipiattaforma.
L'idea nasce da quella che e' una mia passione da sempre... Il Biliardo.

E mi rifaccio ad un vecchio gioco del biliardo nato per sistemi MS/DOS che mooolto tempo fa' creai con un vecchio amico di Reggio Emilia.

Purtroppo per diversi motivi che ora non sto' a raccontare qui, la realizzazione di quel gioco si fermo' ad una delle prime versione e non fu mai piu' ripreso, quindi ricomincio da zero e rifaccio tutto io, con nuovissime features e nuova fisica per la gestione del gioco stesso, oltre che naturalmente anche l'implementazione di AI nel caso in cui si volesse giocare contro il PC.
Opsss!!! Dimenticavo... anche nuova e piu' accattivante grafica e sonoro.

Mi rendo conto, visto i miei impegni, che il tempo da dedicare alla programmazione del gioco sono ridotti, ma sinceramente non mi frega tanto di questo problema... lo scopo finale e' solo quello di riprendere seriamente a programmare e sopratutto: imparare... imparare e imparare sempre cose nuove. :-)

Cerchero', quando posso, di postare qui tutto quello che faccio durante le mie giornate di lavoro per questo progetto... oddio, non in maniera dettagliata, ma almeno le cose principali, (giusto per sfogarmi un po')... sono gia' abbondantemente stressato di mio, quindi...

Intanto spiego perche' multipiattaforma:
1) perche' se il gioco diventa bello, ho intenzione di venderlo, quindi piu' piattaforme = piu' soldi.
2) perche' sono da sempre un appassionato Amiga e mi piacerebbe poterlo vedere girare anche su questa macchina.
3) perche' per piu' piattaforme, mi costringe ad imparare piu' cose utili al mio bagaglio di cultura personale.
4) perche' se non ci riesco, almeno ho la scusante che avendo pensato troppo in grande tutto e' dipeso dal tempo che mi manca e non per mia poca capacita'... ahahah!!!

Detto questo... passo al dunque.

A presto compariii ;-)
Un giorno risolverò equazioni di grado superiore a cinque.

Offline Amig4be

  • Human Debugger
  • *****
  • Post: 6000
  • Karma: +45/-27
    • Mostra profilo
    • Commodore Computer Blog
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #1 il: 17 Marzo 2015, 17:37:24 »
Fico... Amiga vuol dire che vorresti realizzarlo in 2D con la classica vista dall'alto?

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #2 il: 17 Marzo 2015, 19:24:55 »
Fico... Amiga vuol dire che vorresti realizzarlo in 2D con la classica vista dall'alto?

Assolutamente vista dall'alto, ma il gioco non ho intenzione di realizzarlo in 2d... sara' fatto tutto in 3d.
Per rendere l'idea, immagina un gioco in 3d di biliardo ma con una telecamera fissa sul soffitto che riprende le partite dall'alto.

La scelta del 3d e' obbligatoria perche' vorrei utilizzare le OpenGL per tutta la gestione della fisica, in particolar modo il rotolamento delle biglie sul tavolo dovra' essere perfettamente realistico, cosa che diventa impensabile realizzare con grafica 2d e implementazione di sprite.

Poi le OpenGL permettono di gestire facilmente (se cosi si puo' dire), tutta una serie di altre cose.

Per quanto riguarda l'implementazione del gioco su Amiga... ancora devo decidere. Al momento inizio su PC. Probabilmente usero' QT oppure Code::Blocks entrambi con OpenGL. Se successivamente riesco a passare tutto su Amiga in maniera semplice, allora lo faro' anche per quest'ultimo sistema.
Allanon mi diceva che a breve Hollywood implementera' anche le OpenGL... lo spero fortemente, renderebbe tutto piu' semplice.

Inoltre OpenGL oggi sono un sistema stabile e totalmente multipiattaforma, valide anche su smartphone in versione ridotta, quindi ottimo. :-)
Un giorno risolverò equazioni di grado superiore a cinque.

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #3 il: 17 Marzo 2015, 19:40:26 »
Intanto per chi volesse passare un po' il tempo... allego il vecchio gioco che creai anni fa'.

Provate ad installarlo, sul mio notebook sballa tutti i colori della grafica ma rimane sempre giocabile.

Piu' che altro rimane solo come un passatempo per allenarsi sui tiri, niente di piu'... poi non implementa specialita' di altre nazioni ma solo quelle giocate in Italia.

La grafica la realizzai tutta con un Amiga1200 di base in 640x480 a 16 colori... erano altri tempi. :-)
Un giorno risolverò equazioni di grado superiore a cinque.

Offline Amig4be

  • Human Debugger
  • *****
  • Post: 6000
  • Karma: +45/-27
    • Mostra profilo
    • Commodore Computer Blog
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #4 il: 17 Marzo 2015, 20:06:43 »
ah aspetta forse per amiga intendi gli os ng? Avevo capito Amiga vera.
Ma per la fisica hai intenzione di utilizzare un modello fisico semplificato o proprio i colpi reali quali effetto di un impulso (stecca) su un punto qualsiasi della superficie della sfera? Roba da cui potrebbe uscire fuori la possibilità di fare colpi ad effetto e salti? Se troverò il tempo proverò a fare una piccola simulazione con il BGE (visto che con l'ue4 sono ancora ai concetti iniziali).

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #5 il: 17 Marzo 2015, 20:41:36 »
Per Amiga intendo tutti gli Amiga, sopratutto il classic.
Se verra' introdotto un plugin OpenGL per Hollywood, non ci sara' nessun problema a convertire il gioco anche per Amiga, e siccome Hollywood compila sia per Amiga Classic che NG, tutto sara' OK. Naturalmente le OpenGL implementate su Hollywood dovranno essere uguali alle vere OpenGL, e non limitate oppure peggio ancora demo poco funzionanti e piene di bug.

Per la fisica, invece, e' mia intenzione crearla il piu' verosimile possibile.

In questi giorni sto' studiando precedenti giochi di biliardo realizzati nei modi piu' disparati possibili. Il migliore che abbia mai visto fino ad ora "Cue Club"... bel giochillo, direi!!!
Un giorno risolverò equazioni di grado superiore a cinque.

Offline Amig4be

  • Human Debugger
  • *****
  • Post: 6000
  • Karma: +45/-27
    • Mostra profilo
    • Commodore Computer Blog
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #6 il: 17 Marzo 2015, 20:52:56 »
Ok ;)

Su ps3 mi ero divertito molto con questo
https://youtu.be/5GYAUsLv5B8
I replay sono impressionanti...

Li mi era venuta voglia di farci qualche esperimento.

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #7 il: 17 Marzo 2015, 21:01:16 »
Su Amiga classic non avrai mai OpenGL completo, non sulle macchine lisce per lo meno.
Ma anche le versioni amigaos4 e morphos sono implementazioni ridotte. L'unico ad avere OpenGL completo è AROS credo

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #8 il: 17 Marzo 2015, 21:17:59 »
@schiumacal:

Dato che ho esperienza con le tecnologie che hai menzionato, ti fornisco un po' di informazioni in modo che puoi attuare una scelta ben ponderata:

La scelta del 3d e' obbligatoria perche' vorrei utilizzare le OpenGL per tutta la gestione della fisica,
Gestione della fisica ≠ rendering: ci possono essere giochi con simulazione fisica estremamente dettagliata ma con grafica 2D; OpenGL in questo caso non ti semplifica/complica nulla.

in particolar modo il rotolamento delle biglie sul tavolo dovra' essere perfettamente realistico, cosa che diventa impensabile realizzare con grafica 2d e implementazione di sprite.

Contrariamente a quanto uno potrebbe pensare, la miglior tecnica per disegnare sfere e/o oggetti è proprio usare sprite 2D: questo perchè, in API come OpenGL, il rendering è necessariamente a linee e triangoli, e per fare un cerchio con decente approssimazione è necessario disegnare un poligono con un elevato numero di lati, aggiungendo carico sulla GPU (in realtà, nel tuo caso di dover disegnare una ventina di sfere, il problema è molto ridotto, ma comunque presente).

La tecnica preferita per ovviare a questo problema (e usata anche in motori AAA) è quella degli impostors, che effettivamente sono degli sprite 2D che (come dice il nome) "ingannano" l'osservatore facendo sembrare di avere un modello 3D estremamente dettagliato, ma in realtà è solo un'immagine bidimensionale disegnata con pochissimi poligoni.

Puoi farti un'idea di questa tecnica QUI e QUI, però in sostanza l'idea è che tu disegnerai solamente un quadrato sullo schermo (per ogni palla del biliardo), e nel fragment shader farai in modo da non disegnare tutti i pixel che distano R pixel dal centro del quadrato; questo effettivamente disegnerà un cerchio di raggio R pixel. Per tutti i pixel che passano il test, puoi quindi colorarli con il colore appropriato per la palla, disegnare luci/riflessi, e aggiungere la texture per disegnare il numero della palla.


Inoltre OpenGL oggi sono un sistema stabile e totalmente multipiattaforma, valide anche su smartphone in versione ridotta, quindi ottimo. :-)

Questo (purtroppo), è quasi completamente falso.
Prima di tutto, prendiamo il caso di desktop vs. smartphone: i primi usano OpenGL liscia (versioni da 1.0 a 4.5 attualmente), mentre nel campo mobile c'è praticamente solo disponibile OpenGL ES (Embedded Systems, versioni da 1.0 a 3.1 attualmente).
OpenGL e OpenGL ES (che per comodità chiamerò GL e ES), sono praticamente due API diverse, nonostante abbiano lo stesso nome e per la maggior parte delle funzioni usino gli stessi termini e le stesse chiamate a funzione. Tipicamente, quindi, un programma scritto in GL non necessariamente funzionerà in ES e viceversa; se non erro, solo programmi scritti in GL 4.0+ e ES 3.0+ sono parzialmente compatibili con la rispettiva opposta API.
Oltretutto (sempre sul discorso di mantenere la compatibilità), dovresti usare GL in modalità "Core" invece che "Compatibility": queste due modalità sono state introdotte in GL 3.0, e servono per disattivare l'utilizzo delle funzioni deprecate di GL 1.0-2.0 (Core) oppure mantenerle (Compatibility). ES non è compatibile con le funzioni di GL 1.0-2.0, quindi per assicurarti di poter in futuro portare la tua applicazione a ES, dovresti usare almeno GL 3.0+ Core (oppure sviluppare direttamente in ES 3.0+, ma dubito che i driver per le GPU desktop forniscano supporto a tale API).

Secondo, anche il fatto che sia "stabile" è falso: a causa della storica mancanza di una batteria di test per verificare la corretta implementazione, ogni implementazione di ogni produttore (Nvidia, AMD, Intel, ARM, Imagination etc) è un pelo diversa dalle altre e ha delle peculiarità tutte sue che talvolta costringono i programmatori a girare intorno a questi problemi caso-per-caso.
Questa seconda parte per te non è così grave, sopratutto perchè hai bisogno di usare solo le funzioni più comunemente usate, e quindi è difficile che troverai strani problemi particolari a una determinata piattaforma. In qualsiasi caso, se vuoi assicurarti che il tuo programma funzioni correttamente su vari dispositivi, l'unica soluzione è procurarsi i dispositivi e testare.


TL;DR, se vuoi usare OpenGL e poter portare il tuo software sul maggior numero di piattaforme con il minor sforzo, segui queste indicazioni generali:
  • Usa SDL 2.0: OpenGL è un'API che indica funzioni per disegnare, ma non ha nessun modo per fare tutte quelle operazioni di inizializzazione e gestione come aprire una finestra, impostare la risoluzione, prendere gli eventi da mouse e tastiera etc; queste cose sono tutte dipendenti dalla piattaforma. SDL è una libreria che si preoccupa di gestire tutti questi dettagli, e ti fornisce anche qualche funzione aggiuntiva come la gestione dell'audio. (Questa libreria è principalmente per C e C++, anche se ci sono tantissimi wrapper per altri linguaggi, ma visto che intendevi usare Qt, immagino siano quelli i linguaggi su cui punti. Per Holliwood non so.)
  • Usa OpenGL 3.0+ "Core": lascia perdere OpenGL 1.0-2.0 e tutte le relative guide e tutorial, quelle funzioni (benchè semplici da usare in quanto necessitano di meno setup per funzionare) sono deprecate e ti daranno problemi se in futuro vorrai portare l'applicazione su dispositivi ES. L'unico problema che potresti avere è proprio per Amiga NG: è molto probabile che, se mai arriverà OpenGL su tale piattaforma, sarà OpenGL 1.0-2.0; l'unico mio consiglio è di progettare il tuo programma in modo che tutto il rendering sia completamente separato dalla fisica e dal gameplay (mettendo il rendering in un suo oggetto ad esempio), così potrai eventualmente scrivere un motore di rendering 2D per i sistemi limitati che non supportano OpenGL.
  • Considera di rimanere in 2D: a meno che non vuoi fare una telecamera che si muove nello spazio per avere varie visuali o effetti speciali, usare OpenGL (normale o ES che sia) è come sparare a una mosca con un cannone: SDL 2.0 liscio ti permette già da solo di fare tantissime cose, e dietro le quinte, se vede che la piattaforma supporta l'accelerazione hardware, la userà senza che tu debba fare nulla.
« Ultima modifica: 17 Marzo 2015, 23:11:24 da Z80Fan »

Offline devil78

  • ASM Lover
  • *****
  • Post: 417
  • Karma: +7/-2
  • Le chiavi per il futuro risiedono nel passato...
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #9 il: 17 Marzo 2015, 22:18:42 »
Meraviglioso.... se cerchi musiche  hai un malato che le crea anche mod s3m it. Batti un colpo  se serve.
Il creatore ha dato poco spazio all'intelligenza per far posto alla stupidità!!!

Offline lucommodore

  • Human Debugger
  • *****
  • Post: 6176
  • Karma: +48/-9
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #10 il: 18 Marzo 2015, 01:20:20 »
Uh figata! Finalmente qualcuno che si cimenta in un gioco per Amiga! ;D
Solo chi è folle sfida le sue molle!
http://www.questolibro.it/retro-garage << Scambio/Vendo RetroGame

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #11 il: 18 Marzo 2015, 10:18:47 »
@ amig4be
Ho visto i video di Pool Nation, ho scaricato una demo dopo lo provo sul PC. Effettivamante dai video sembra bello, solo che non e' proprio quello il genere di game che vorrei realizzare, lo trovo troppo scenografico (come molti vecchi giochi di biliardo). Quello che ho intenzione di fare io avra' anche una sorta di storia... del tipo: Tu parti straccione, con pochi spiccioli e girando per il mondo ti alleni e sfidi avversari di ogni genere, scommeti denaro e guadagni oppure perdi denaro secondo le partite. Una volta che hai raggranellato un bel gruzzoletto, hai la possibilita' di iscriverti alla superfinalissima del megatorneone mondiale di biliardo che proclamera' un solo vincitore per tutti, e qui finisce il gioco... a dire il vero ho un'ideuzza in mente che spero di riuscire ad implementare... ma questo preferisco deciderla dopo. :-)

@TheKaneB
Grazie amico, gia' pensavo al fatto che Amiga non implementasse le OpenGL nella loro totalita'... attualmente le MiniGL sembra siano le uniche valide per Amiga sia NG che Classic, devo studiarle un po', ma resta il fatto che Allanon ha detto che a breve sara' implementato un plugin OpenGL per Hollywood, bisogna capire in che senso. Hollywood e' nato su Amiga ma se lo guardi bene e' un linguaggio che seppur poco conosciuto permette di fare diverse cosette interessanti su altre piattaforme. Rimango in attesa...

@Z80Fan
Immensamente grazie per i tuoi suggerimenti... non pensavo fossi esperto in materia, ma mi sarai sicuramente d'aiuto se avro' bisogno di consigli :-) Intanto posso dirti che dopo varie ricerche e letture opto per le OpenGL sopratutto per imparare bene una materia in cui attualmente ho lacune, diciamo che sono andato a simpatia personale, non ho altre motivazioni per cui ho scelto OpenGL.
Poi ho fatto una googloata e ho trovato in giro un tipo... per essere piu' precisi, un compare ingegnere informatico che c'ha sviluppato una tesi di laurea sull'uso intensivo delle OpenGL e loro implementazione sia su un gioco di biliardo che sulla gestione della fisica di un'automobile in corsa.
Ti diro'... mi sta dando diversi suggerimenti interessanti in merito.
L'unico problema sara' proprio quello di fare la scelta giusta sul tipo di libreria da utilizzare, cioe' se le OpenGL oppure le ES, valide soprattutto per sistemi mobile... devo ancora vedere cosa mi permettono di fare le ES per decidere... comunque grazie nuovamente ;-)

@devil78
Assolutamente importate la musica ed il sonoro per il mio gioco. Per il momento sto' raccogliendo tutto quello che trovo in giro sugli effetti, tipo: risate di scherno, applausi, fischi, sottofondi di persone che parlano... ecc. ecc.
Per essere sincero, di un paio di cosa avrei bisogno: un pubblico che faccia il cenno di silenzio, il classico "shhhh!!!" con il dito indice vicino le labbra, il piu' similare possibile al reale, e il classico schiocco delle dita, magari anche in coro... infatti e' consuetudine durante una partita di biliardo, che se il giocatore effettua un bel tiro, il pubblico schiocca le dita come per dire "bel tiro", senza fare un eccessivo rumore oppure peggio ancora fare commenti che disturberebbero ancora di piu' i giocatori.

@lucommodore
Mi auguro di riuscire a svilupparlo anche per Amiga, ma come ho gia' detto in precedenza, tutto sta' nell'implementazione di OpenGL.

Ps.
Compari, grazie a tutti... mi state dando molto coraggio, non immaginavo.
Che la forza sia sempre con tutti noi :-)
Un giorno risolverò equazioni di grado superiore a cinque.

Offline schiumacal

  • Tech Guru
  • *****
  • Post: 130
  • Karma: +1/-0
    • Mostra profilo
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #12 il: 18 Marzo 2015, 10:31:26 »
Dimenticavo...

rispondo ad una domanda fattami in precedenza...

Si, il gioco lo realizzero' in C++ e OpenGL. Il C++ e' un linguaggio che conosco abbastanza bene e che adoro. Il mio prof. d'informatica all'Uni mi ha dato lo spunto per impararlo e questo ho fatto. In tre mesi gli ho fatto un esame coi fiocchi... sono stato l'unico del mio corso di laurea a sviluppargli da zero il gioco della battaglia navale tutto in grafica, studiandomi anche l'algoritmo Montecarlo che poi non sono riuscito ad implementare... vabbe!!! Questa e' un'altra storia.

Ad Hollywood + OpenGL ci penso solo ed esclusivamente dopo... se decidero' di sviluppare il gioco anche per Amiga. Ragazzi, mi dispiace, ma per quanto sia cresciuto su questa macchina... purtroppo non mi ha portato molta fortuna, fin da quando negli anni '90 realizzai il mio primo software commerciale sullo sviluppo di sistemi Totocalcio per Amiga, ci guadagnai qualcosina... poi dopo pochi mesi la Commodore fallisce... e con questo cade tutto il castello che mi stavo costruendo per il mio futuro.
Ero riuscito ad arrivare ad un editore di Milano che mi pagava per i miei lavori su Amiga... ma il sogno e' durato troppo poco... ne sono rimasto abbastanza scottato. :-(

Ora mi metto al lavoro... :-)
Un giorno risolverò equazioni di grado superiore a cinque.

Offline Amig4be

  • Human Debugger
  • *****
  • Post: 6000
  • Karma: +45/-27
    • Mostra profilo
    • Commodore Computer Blog
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #13 il: 18 Marzo 2015, 11:48:42 »
il trailer di pool nation è appositamente scenografico, te l'ho segnalato per farti un'idea del motore fisico implementato che non è una simulazione perfetta, ma credo sia un buon compromesso... a quel punto l'IA dovrebbe essere solo una risoluzione delle equazioni che prevedono le varie soluzioni con palla in buca, ma probabilmente esistono motori approssimati che semplificano il calcolo visto che una ps3 gestisce tranquillamente tutte le palle in gioco. Qui ci vuole TheKaneb per farsi un'idea. 

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Creazione di un videogame di Biliardo multipiattaforma
« Risposta #14 il: 18 Marzo 2015, 13:08:31 »
"Noi" (la ditta in cui lavoravo) gestivamo senza troppe rogne 2 mila rigid bodies contemporaneamente su una PS3, e non avevamo nemmeno sfruttato le SPU! (quindi la parte potente della PS3 era praticamente buttata nel cesso).
Con sole 20 biglie da simulare, puoi farli fare tranquillamente la simulazione subatomica del pelo del culo della mosca :D

Tags: