PDA

View Full Version : Programmazione videogiochi


Marco9518
03-10-2018, 06:21
Buongiorno, sono nuovo nel forum quindi, per prima cosa, vorrei salutare tutti.

Non sono sicuro di essere nella sezione giusta, ma provo lo stesso.
Qualcuno conosce il linguaggio con il quale vengono scritti giochi come need for speed? A me interessa in particolare la sezione nella quale vengono customizzate le macchine e quindi non il gameplay in se.
C'è per caso qualcuno in grado di riprodurla?

Marco9518
03-10-2018, 13:15
Non so per Need for Speed, ma i giochi vengono spesso programmati in C#/C++ e scriptati con linguaggi tipo Lua.

Di fatto il punto fondamentale nella realizzazione di un gioco non è tanto il linguaggio( alla fine bene o male quasi tutti i linguaggi possono essere utilizzati allo scopo) ma il motore di gioco, le librerie e gli assets utilizzati.

A seconda di quello che vuoi realizzare può essere un progetto più o meno semplice. Credo che in ogni caso come minimo per questo progetto ci vogliano i modelli 3D Delle macchine / componenti con relative texture.

Rimane comunque un progetto abbastanza complicato per un neofita. Il consiglio è di iniziare da qualcosa di più semplice.

No no, non avevo intenzione di provare. Sto lavorando ad un progetto universitario: per una parte di esso è necessario creare un sito web per la vendita di un determinato prodotto e mi serve capire se è possibile realizzarlo prendendo come spunto la sezione di customizzazione di need for speed.
Una volta entrati quindi si sceglierà un determinato modello del prodotto a cui verranno poi apportate le modifiche, esattamente come succede nel gioco, in un ambiente molto dinamico ed intuitivo.

Marco9518
04-10-2018, 06:31
I

Ok. Ma questo in soldoni cosa vuol dire? Ti serve un engine 3D? 2D? Ti basta una semplice UI? A seconda delle specifiche del progetto cambiano ovviamente gli strumenti utilizzati.

Comunque la programmazione desktop e quella web differisce abbastanza. Ergo non si tratta solo di trovare qualcosa che 'a sentimento' ha un risultato graficamente simile a quello voluto.

Non saprei cosa rispondere, ho scritto qui proprio perchè sono abbastanza ignorante in materia!
Se dovessi fare una cosa del genere, come la faresti?
Ovviamente non ti sto chiedendo di dirmi tutto per filo e per segno, ma solo di darmi qualche spunto per cominciare a "studiare" qualcosa di specifico.

lollo9
08-10-2018, 11:13
No no, non avevo intenzione di provare. Sto lavorando ad un progetto universitario: per una parte di esso è necessario creare un sito web per la vendita di un determinato prodotto e mi serve capire se è possibile realizzarlo prendendo come spunto la sezione di customizzazione di need for speed.
Una volta entrati quindi si sceglierà un determinato modello del prodotto a cui verranno poi apportate le modifiche, esattamente come succede nel gioco, in un ambiente molto dinamico ed intuitivo.

faccio un assunto: per "prendere spunto" immagino si stia parlando di UI/UX.

se è così, lo stack tecnologico usato su un prodotto come Need for Speed, tanto per restare fedeli all'esempio, è del tutto irrilevante. lo scenario di un web shop è dfferente e non si scomoda C++ ed un engine 3D per girare dentro una webapp. il desiderata è roba che può essere gestita a frontend via JavaScript tramite framework e librerie apposite, con un backend dietro che validi/recuperi/pulisca i dati da e verso DB e frontend (dico a frontend solo per ragioni di prestazioni, praticità e tool già pronti, nulla vieta di fare tutto a back, specie se si usano CGI o simili)

per il backend, vista la natura universitaria del progetto, io starei su qualcosa semplice da deployare come .NET-Core, ma alla fine si può usare qualunque tecnologia uno preferisca qua, da php a python passando per go, java, scala, nodejs ecc. ognuna con i propri framework.

La difficoltà di implementazione della business logic, in un'ipotesi del genere, starebbe sul frontend. e non è banale per niente. si tratterebbe di recuperare i modelli dallo storage e farli arrivare alla libreria di rendering in un formato a lei gradito.
L'altra criticità sarebbe come ragionare sull'architettura di alto livello dell'intero progetto. Ergo, fare una bella pensata circa cosa usare come persistent storage, servirà un DB (e mi viene da pensare qualcosa di schema-less qui come un NoSQL), uno storage fisico vero e proprio su un filesystem da qualche parte, con tutti i traffici vari async e non bloccanti, sennò addio prestazioni.

ma magari ho capito male cosa si vuol realizzare, perché a me pare un progetto un tantinello eccessivo per l'università. si va da un lato gestionale a tutta una serie di discipline informatiche non poco diverse tra loro.

21-5-73
08-10-2018, 14:17
Io non sono un informatico, percui se dico boiate abbiate pietà, ma credo che lui voglia una cosa tipo un configuratore. Dice infatti nel secondo post "Una volta entrati quindi si sceglierà un determinato modello del prodotto a cui verranno poi apportate le modifiche" e questo mi fa pensare a una roba tipo questo (https://www.haloguitars.com/store/custom-guitars.html), scegli la chitarra che vuoi e poi ci applichi le modifiche desiderate vedendo in real time come vengono. La sezione modifiche di Need for speed funziona esattamente allo stesso modo.

pabloski
08-10-2018, 15:03
Io non sono un informatico, percui se dico boiate abbiate pietà, ma credo che lui voglia una cosa tipo un configuratore. Dice infatti nel secondo post "Una volta entrati quindi si sceglierà un determinato modello del prodotto a cui verranno poi apportate le modifiche" e questo mi fa pensare a una roba tipo questo (https://www.haloguitars.com/store/custom-guitars.html), scegli la chitarra che vuoi e poi ci applichi le modifiche desiderate vedendo in real time come vengono. La sezione modifiche di Need for speed funziona esattamente allo stesso modo.

Dico solo che una cosa del genere, sviluppata per un autosalone, ha fruttato 40.000 euro in saccoccia. Ok era un'app mobile, ma cambia molto poco. Il livello di complessità è abbastanza elevato.

Ha fatto bene a tirar fuori i videogames, perchè la parte dove si sceglie il modello e lo si customizza richiede un engine 3D discretamente sofisticato.

Per fortuna tali engine esistono già, ma bisogna imparare ad usarli e richiede comunque un bel pò di tempo.

Marco9518
22-11-2018, 06:11
Dico solo che una cosa del genere, sviluppata per un autosalone, ha fruttato 40.000 euro in saccoccia. Ok era un'app mobile, ma cambia molto poco. Il livello di complessità è abbastanza elevato.

Ha fatto bene a tirar fuori i videogames, perchè la parte dove si sceglie il modello e lo si customizza richiede un engine 3D discretamente sofisticato.

Per fortuna tali engine esistono già, ma bisogna imparare ad usarli e richiede comunque un bel pò di tempo.

Perdonami la domanda, ma quando dici "la parte dove si sceglie il modello e lo si customizza richiede un engine 3D discretamente sofisticato" significa che esistono già "motori" di questo tipo e che è possibile magari comprarli ed implementarli il prodotto che serve a me?

pabloski
22-11-2018, 09:14
Perdonami la domanda, ma quando dici "la parte dove si sceglie il modello e lo si customizza richiede un engine 3D discretamente sofisticato" significa che esistono già "motori" di questo tipo e che è possibile magari comprarli ed implementarli il prodotto che serve a me?

certo che esistono motori 3D gia' pronti all'uso

del resto un motore del genere ha una complessita' mostruosa e a meno di essere Ideo Kojima, a poc'altra gente verrebbe in mente di scriversene uno da zero per il proprio gioco

il bello e' che questi motori offrono molto di piu' della semplice computer graphics

il fatto che si tratti di un'applicazione mobile non cambia di una virgola la situazione, dato che essendoci di mezzo la grafica 3D, di fatto e' un gioco, senza le interazioni con l'utente, ma le fondamenta sono quelle

Marco9518
22-11-2018, 10:39
certo che esistono motori 3D gia' pronti all'uso

del resto un motore del genere ha una complessita' mostruosa e a meno di essere Ideo Kojima, a poc'altra gente verrebbe in mente di scriversene uno da zero per il proprio gioco

il bello e' che questi motori offrono molto di piu' della semplice computer graphics

il fatto che si tratti di un'applicazione mobile non cambia di una virgola la situazione, dato che essendoci di mezzo la grafica 3D, di fatto e' un gioco, senza le interazioni con l'utente, ma le fondamenta sono quelle

Lungo la discussione ho specificato che ho necessità di riportare l'ambiente di customizzazione del gioco in un ambiente web.
Quindi io devo, in poche parole:
accedere al sito
selezionare il prodotto da configurare
configurare lo stesso nella maniera in cui lo si fa con il gioco.

Mi hai detto che i motori esistono già, ma mi viene spontaneo pensare che quelli utilizzati per un videogioco siano diversi da quelli che si userebbero per il mio scopo.
Io ho fatto un po di ricerche, ma senza successo.
Sapresti consigliarmi da dove partire per trovarne uno che faccia al caso mio?

pabloski
22-11-2018, 10:46
Mi hai detto che i motori esistono già, ma mi viene spontaneo pensare che quelli utilizzati per un videogioco siano diversi da quelli che si userebbero per il mio scopo.


E perche' mai? Tu devi poter visualizzare dei modelli 3D, modificandoli ed interagendo con essi. Un game engine e' lo strumento piu' logico. Il fatto di dover realizzare una webapp nemmeno ti cambia niente, visto che i maggiori game engine moderni esportano in Webgl.

Riguardo i nomi, penso a Unity, Ogre, Godot, Unreal, ecc...

Oppure se vuoi qualcosa che non sia un mega-engine per fare giochi tripla A, puoi optare per Haxor, basato su Haxe e le API flash.

Marco9518
22-11-2018, 11:04
E perche' mai? Tu devi poter visualizzare dei modelli 3D, modificandoli ed interagendo con essi. Un game engine e' lo strumento piu' logico. Il fatto di dover realizzare una webapp nemmeno ti cambia niente, visto che i maggiori game engine moderni esportano in Webgl.

Riguardo i nomi, penso a Unity, Ogre, Godot, Unreal, ecc...

Oppure se vuoi qualcosa che non sia un mega-engine per fare giochi tripla A, puoi optare per Haxor, basato su Haxe e le API flash.

Capito, ti ringrazio molto per l'aiuto!