Progetto Pre-Revolt 2 "Ball's maze"

In questa zona vengono raccolte le discussioni che riguardano lo sviluppo di nuovi progetti per ARM e per Re-Volt

Moderatore: Michelangelo

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » gio 4 nov 2010, 15:27

Topic dedicato al giochino che io e minibond abbiamo deciso di fare prima di lavorare su revolt 2.

Mini ti ho già fatto vedere quello che avevo fatto finora.

Ho pensato ad un modo per fare i buchi sulla superficie, nelle directx ci dovrebbe essere una funzione che suddivide una mesh in un' array di più mesh; creando la superficie come una mesh rettangolare con un piccolo spessore dovrei riuscire a suddividerla in tantissime parti, dopodichè date le coordinate si creeranno tante palline dove indicato dalle coordinate... se queste palline fanno collisione con delle mesh dell' array, quest' ultime vengono eliminate... una volta verificate tutte le collisioni e cancellate le mesh che erano in collisione con le palline, anche le palline verranno cancellate... dando inizio al livello e posizionando la pallina (quella che deve andare nella buca) alle coordinate indicate.

Farò un po' di prove per vedere se riesco a fare una cosa del genere.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
TheFactor82
Amministratore
Messaggi: 7987
Iscritto il: gio 4 mag 2006, 21:26
Località: Torino
Contatta:

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da TheFactor82 » gio 4 nov 2010, 15:40

Per un beta-testing senza grosse pretese, fatemi sapere! :-)
My Gp's:
10 Settembre 2000: Monza - ITA (F1)
24-25 Aprile 2004: Imola - RSM (F1)
07 Ottobre 2007: Monza - ITA (WTCC)
31 Agosto 2008: Misano - ITA (MOTOGP/250/125)
05-07 Settembre 2008: Spa Francorchamps - BEL (F1)
20-22 Luglio 2012: Hockenheimring - GER (F1)
07 Settembre 2014: Monza - ITA (F1)
14 Aprile 2018: Roma - ITA (FE)

My ARM Card

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » gio 4 nov 2010, 16:27

Ovvio TF, tutto il forum potrà partecipare ai beta testing.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
minibond
Messaggi: 1725
Iscritto il: lun 30 lug 2007, 15:00
Località: Roma

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da minibond » gio 4 nov 2010, 16:29

Linkinf22 ha scritto:Ho pensato ad un modo per fare i buchi sulla superficie, nelle directx ci dovrebbe essere una funzione che suddivide una mesh in un' array di più mesh; creando la superficie come una mesh rettangolare con un piccolo spessore dovrei riuscire a suddividerla in tantissime parti, dopodichè date le coordinate si creeranno tante palline dove indicato dalle coordinate... se queste palline fanno collisione con delle mesh dell' array, quest' ultime vengono eliminate... una volta verificate tutte le collisioni e cancellate le mesh che erano in collisione con le palline, anche le palline verranno cancellate... dando inizio al livello e posizionando la pallina (quella che deve andare nella buca) alle coordinate indicate.
quindi intendi fare qualcosa come il boolean di 3ds max...
A me invece sembra di essere un po' monotono dicendo sempre di star lavorando sulla fisica, quindi direi che magari, oltre a quella, posso cominciare a progettare i tipi di files del gioco (magari ci metto un bel file.maz che contiene il livello, indicando solamente la posizione "sul piano" di alcuni oggetti come i muri, le buche e i punti di partenza e di arrivo) e i codici per scriverli e leggerli.

A proposito di fisica, invece (credo che sia meglio farne un topic a parte, ma per ora lo scrivo qui), sono arrivato finalmente a progettare le figure geometriche tridimensionali, ma ho alcuni problemi a creare una classe che le definisca univocamente.
Mi spiego meglio:
Ad esempio, l'equazione implicita di una retta è Ax + By + C = 0, ma questa è uguale anche ad kAx + kBy + kC) = 0 (dove k è un qualsiasi numero diverso da zero), di conseguenza non è univoca e c'è uno spreco di memoria; allora al suo posto uso quella esplicita, cioè y = Mx + Q (dove M = -A/C e Q = -B/C), che richiede meno memoria (memorizzazione solo di M e di Q anzichè di A, B e C) ed è univoca.
Allo stesso modo devo trovare una definizione univoca di una figura geometrica solida tramite i triangoli o i quadrilateri che la compongono, ma senza definire un punto più di una volta (cosa che, se inserisco solo un array di triangoli o di quadrilateri, non avviene, poichè se le due figure hanno un punto in comune, quel punto viene ripetuto più volte)... :-?

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » gio 4 nov 2010, 16:36

Mini sinceramente sono un po' confuso riguardo a quello che stai facendo per la fisica, innanzitutto... pensi che quello che stai facendo possa avere una sorta di "relazione" con le directx?
Nel senso, come fai a far muovere una mesh dal framework?

Magari sono io che non ho capito bene quello che hai intenzione di fare, comunque questo non è il topic adatto per parlare di questa cosa.

Inoltre per quanto riguarda i file, io pensavo di fare tutto all' interno del codice, nel senso creare una classe level che richiede come parametri le liste delle coordinate, e fare un list di level nella classe principale del gioco, aggiungendoci a mano i level e dandogli le varie coordinate a mano. Mentre facendolo con i file allora bisogna creare un editor, questo rende meno noioso il lavoro di creazione di un livello ma richiede maggior lavoro a livello di programmazione.

Comunque non sarebbe neanche male con l' editor, potrebbe essere un buon "allenamento" per quando dovremo fare gli editor per revolt.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
minibond
Messaggi: 1725
Iscritto il: lun 30 lug 2007, 15:00
Località: Roma

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da minibond » gio 4 nov 2010, 16:51

Linkinf22 ha scritto:Inoltre per quanto riguarda i file, io pensavo di fare tutto all' interno del codice, nel senso creare una classe level che richiede come parametri le liste delle coordinate, e fare un list di level nella classe principale del gioco, aggiungendoci a mano i level e dandogli le varie coordinate a mano. Mentre facendolo con i file allora bisogna creare un editor, questo rende meno noioso il lavoro di creazione di un livello ma richiede maggior lavoro a livello di programmazione.

Comunque non sarebbe neanche male con l' editor, potrebbe essere un buon "allenamento" per quando dovremo fare gli editor per revolt.
In effetti io volevo aggiungere gli editor :D

Comunque si possono "inserire le coordinate a mano" anche tramite l'utilizzo di files (in teoria, se si ha un editor esadecimale, si può modificare qualsiasi tipo di file esistente, anche un BMP o addirittura un EXE, basta conoscerne la struttura), e inoltre dà la possibilità di aggiungere livelli, scaricarli da internet o crearli, e di appesantire di meno il file eseguibile.

Per l'altra cosa, dovrei aprire un topic a parte, ma per il momento quello lo volevo scrivere... poi magari se riesco a trovare le soluzioni da solo bene, altrimenti creo il topic apposta

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » gio 4 nov 2010, 18:01

Prima di andare a fare i compiti di matematica e di ripassare storia :yawn: :lazy: :-(
aggiorno un po' su cosa ho fatto in queste due orette (veramente un' ora l' ho passata sul forum distraendomi ogni 5 minuti XD):
Ho cominciato con il creare una mesh rettangolare della superficie, trovandogli una posizione un po' adatta, aggiornarla e rotearla.
Dopodichè ho fatto dei vari test per suddividere la mesh in un' array di più mesh (per ora ho impostato 1000) e dopo vari tentativi sono riuscito a disegnare le mesh dell' array facendole roteare nel modo giusto.
Ho creato la classe Level, che contiene una classe ScatolaBase ed una classe Superficie, le aggiorna e compie il rendering; Prendendo come parametri le informazioni necessarie alle due classi.
Nella classe principale ho sostituito le variabili scatolaBase e superficie con una classe level.
Ho cominciato a fare una sola mesh a forma di sfera per fare dei test per i buchi della superficie.

Magari continuo dopo cena.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » sab 6 nov 2010, 14:15

Ieri ho avuto da studiare e poi ho provato NFS Shift e non sono riuscito a staccarmente per un po'
Oggi probabilmente vado a tagliare i capelli quindi questo pomeriggio non credo farò molto... mentre questa sera credo che qualcosina farò.
Domani credo che andrò a casa di un amico, perciò credo che anche domani non potrò dedicare molto tempo al giochino, considerando che dovrò pure studiare.

Mini non ho capito se delle strutture dei files te ne occupi tu o no.

Io direi che nei file dei livelli ci dovrebbero essere principalmente: la posizione iniziale della pallina, le posizioni delle buche e la posizione della buca meta.

EDIT: Cacchio ora c'è il problema delle collisioni.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
minibond
Messaggi: 1725
Iscritto il: lun 30 lug 2007, 15:00
Località: Roma

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da minibond » dom 7 nov 2010, 12:16

Linkinf22 ha scritto:Mini non ho capito se delle strutture dei files te ne occupi tu o no.

Io direi che nei file dei livelli ci dovrebbero essere principalmente: la posizione iniziale della pallina, le posizioni delle buche e la posizione della buca meta.
E la posizione dei muri...

Comunque, sì, me ne occupo io
Linkinf22 ha scritto:EDIT: Cacchio ora c'è il problema delle collisioni.
Questo dovrebbe essere abbastanza semplice (le collisioni sono solo con una sfera contro dei parallelepipedi e un piano bucato).

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » dom 7 nov 2010, 13:04

Ma il problema è capire quando una mesh si scontra con un' altra mesh.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » lun 8 nov 2010, 22:10

Ho lavorato sul modo per fare i buchi, ma senza un buon risultato.

Avevo creato la mesh unica, l' ho splittata in un' array, dall' array l' ho passato ad una list di mesh per facilitare il tutto, ho creato una classe CollisioSphere che riceve in ingresso due parametri: il raggio ed il centro. Nella classe CollisionSphere ho messo un metodo ("Interseca") bool che prende come parametro un' altra CollisionSphere, con un' if ho verificato se le due CollisionSphere si intersecano, se si restituisce true, altrimenti no.

Per verificare se si intersecano ho sottratto la posizione dei due centri per ricavarne la distanza ed ho verificato se è minore della somma dei raggi.

Ho ricavato centro e raggio con il metodo Geometry.ComputeBoundingSphere.
Dopodichè con un ciclo for ho creato una CollisionSphere per ogni mesh della list, ed ho verificato se si intersecavano con una CollisionSphere che ho messo a caso, centro a caso e raggio 1, nel caso si intersecassero la mesh della list in questione veniene rimossa dalla list, ma quando ho compilato: Tutta la superficie era sparita!
Ho fatto varie prove mettendo raggio 0.1 e distante di almeno 100 nell' asse Y ma la superfice viene cancellata interamente comunque, non riesco a capire cosa ci sia di sbagliato :rissa:
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » mar 16 nov 2010, 15:56

Woooo, sono riuscito a fare i buchi, anche se escono quadrati... questo è dovuto al fatto che ho usato tante mesh quadrate per fare la superficie, poi in base alle coordinate elimina le mesh che rientrano in quella coordinata, perciò i buchi sono quadrati.

Per te mini cambia qualcosa? Io lascerei anche così.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
minibond
Messaggi: 1725
Iscritto il: lun 30 lug 2007, 15:00
Località: Roma

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da minibond » mar 16 nov 2010, 16:42

Per il momento credo che possa andar bene! Poi più avanti possiamo cercare di farli diventare rotondi... :lol2:

Quindi adesso ti serve il motore fisico?

Non è completo (se vedi il topic, vedrai cosa sto facendo), ma se vuoi inizio ad inserire nella cartella condivisa il progetto.

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da Linkinf22 » mar 16 nov 2010, 20:34

OK, comincia a metterlo nella cartella condivisa il progetto (non so se lo hai già fatto, sto scrivendo con il portatile di mio fratello).

Almeno comincio a farmi un' idea di quello che stai facendo, ancora sono molto confuso.

Comunque della fisica preferirei ce ne occupassimo insieme, così mettiamo le tue conoscenze della fisica e della programmazione insieme alle mie conoscenze di programmazione e delle directx... Almeno sono più sicuro che esca qualcosa di più integrabile alle directx, tipo metodi che restituiscono direttamente una matrix con magari il nuovo spostamento della mesh ecc.

Piuttosto preferisco che ti occupi della struttura dei file per i livelli, mi serve una libreria, o magari mi passi il codice evitando di aggiungerci librerie, che permetta di caricare e salvare i file.

Mi servirebbe un "loader" che carichi le coordinate delle buche e me le restituisca sotto forma di list di vector3, stessa cosa per i muri, anche se ancora non me ne sono occupato dei muri, ma penso che sia la prossima cosa che farò (mi sembra decisamente più semplice che occuparmi subito della pallina).
Inoltre mi servirebbe che con le coordinate dei muri mi metti anche lunghezza e larghezza, magari sotto forma di float (non ricordo se è possibile fare l' unsigned float, che avrebbe più senso).
Inoltre ovviamente il loader deve restituire un vector3 della posizione iniziale della pallina ed un vector3 con la posizione della buca meta.

Ti ho dato un po' di indicazioni su come vorrei che fosse il "loader", fammi sapere se te ne occupi tu.
Per la fisica quando riesco a dare un' occhiata al lavoro che hai fatto ti faccio sapere.

EDIT: Dimenticavo, ball' s maze utilizza un sacco di CPU siccome deve gestire le molte mesh della superficie.
Ho fatto un test con un livello con la scatola larga 40, quindi la superficie è composta da 1600 mesh, e mi utilizzava il 20% della CPU.
Penso che comunque nei livelli, completato il gioco, ci saranno meno mesh da gestire, siccome con le buche parte delle mesh vengono eliminate. Considerando che poi si dovrà occupare anche della pallina staremo comunque sul 20-25% della CPU, a gioco completato.
Comunque credo che eliminerò il ciclo do-while e lo sostituirò con un ciclo for, penso che riduca il carico di lavoro della CPU.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
minibond
Messaggi: 1725
Iscritto il: lun 30 lug 2007, 15:00
Località: Roma

Re: Progetto Pre-Revolt 2 "Ball's maze"

Messaggio da minibond » mar 16 nov 2010, 21:31

Un momento... per Vector3 intendi un punto di coordinate X, Y, Z?
Perchè se è così, credo che o dovrò utilizzare il mio punto (che si chiama Point3), ma poi ti dovrei passare TUTTO QUANTO, oppure dovrò mettere dei commenti dove tu inserirai il codice specifico per il caricamento e il salvataggio nelle variabili.

P.S.: non so se l'ho scritto nel topic della fisica, ma io sto ricreando tutta la geometria bidimensionale e tridimensionale a partire da zero (cioè con punti, rette, piani, vettori, ...), che poi userò nella classe della fisica attraverso classi per Velocità, Accelerazione, Forza (ho capito più o meno come ricreare una specie di attrito con l'aria), collisioni, ecc.

P.P.S.: e se provassi ad inserire le buche in modo bidimensionale (pitturandole anziché bucarle) e creare il piano di base con un unica mesh? Così possiamo anche solo rilevare la posizione della sfera rispetto al piano e se entra nella buca, verrà si verificherà una collisione particolare e si spreca meno CPU.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti