TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

Applicazione per softwarehouse dell'industria videoludica #24

Closed alessioserra closed 5 years ago

alessioserra commented 5 years ago

Studente proponente

s233789 Serra Alessio

Titolo della proposta

Applicazione per softwarehouse dell'industria videoludica

Descrizione del problema proposto

Si intende realizzare una applicazione che verifichi l'adeguatezza di un investimento riguardante lo sviluppo(e quindi le relative spese) di un videogioco da pubblicare in una determinata zona del mondo (Europa, America, Asia, Resto del mondo) basandosi su dati relativi a vendite, recensioni e anno di pubblicazione di videogiochi, presenti all'interno del database, appartenenti allo stesso genere o alla stessa saga, lasciando all'utente la libertà di settare le condizioni di analisi che ritiene più opportune.

Descrizione della rilevanza gestionale del problema

L'industria videoludica rappresenta oggi uno dei settori economici in più rapida espansione in grado di competere, per fatturato e per utili, con le tradizionali industrie dell'entertainment e del software. E' quindi fondamentale riuscire ad avere una stima, basata su dati reali e concreti, riguardo la possibile buona riuscita del progetto in questione, visto le ingenti risorse che occorrono nelle fasi di studio, sviluppo e pubblicazione di un videogioco al fine di non sbagliare quello che oggi è ormai davvero un grosso investimento.

Descrizione dei data-set per la valutazione

Il database che sarà utilizzato dall'applicazione si può trovare al seguente link: https://www.kaggle.com/rush4ratio/video-game-sales-with-ratings/ Esso è costituito da circa 17mila videogiochi pubblicati dopo il 1980, in cui ogni videogioco è caratterizzato da 16 colonne in cui possiamo trovare nomi, anno di pubblicazione, dati di vendita sia globali sia per zona, publisher e ratings estratti dal famosissimo sito MetaCritic, in cui sono sia utenti sia testate giornalistiche a determinare le valutazioni. Il formato del file è in CSV e dovrà essere convertito in SQL per essere utilizzato.

Descrizione preliminare degli algoritmi coinvolti

Il principale problema algoritmico che si dovrà affrontare sarà quello di valutare la convenienza relativa alla pubblicazione del videogioco nella zona del mondo selezionata tramite il calcolo di un coefficiente (il quale verrà definito all'interno del progetto) che terrà conto sia delle preferenze inserite dall'utente sia dei dati estratti dal database, ottimizzandone il risultato e fornendo qualche suggerimento. Inoltre il programma implementerà un algoritmo che permetterà di ricercare la miglior combinazione di genere per una determinata zona rispettando i vincoli imposti dall'utente, in modo da riuscire a prendere la decisione migliore in caso di dubbi su diversi possibili progetti. Possibile implementazione di grafi per gestire prequel e sequel, ancora da valutare.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'applicazioni avrà più interfacce grafiche sulle quali sarà possibili gestire tutti i metodi messi a disposizione del programma tramite l'uso di input testuali, box a scelta, bottoni ecc. Il programma risponderà scrivendo i risultati in un'area di testo ed eventualmente con l'aggiunta di immagini. Saranno presenti anche bottoni del tipo RESET per eliminare tutte le preferenze inserite dall'utente e altri bottoni per potersi spostare comodamente da un interfaccia ad un'altra.

fulcorno commented 5 years ago

Non mi è molto chiara la componente algoritmica. L'utente (che immagino che sia la casa di produzione di videogame) definisce un budget, un'area geografica, e delle "preferenze" (quali?). Il programma cosa dovrebbe calcolare? il "genere" del videogame più adatto a quella regione? Ma non è un semplice calcolo di quali generi sono venduti nelle varie regioni? Ti chiederei di spiegare meglio la parte algoritmica.

alessioserra commented 5 years ago

Gli algoritmo coinvolti sono due:

1-Nel primo l'utente (cioè la softwarehouse) seleziona il genere di videogame che vuole produrre, immette l'anno da cui vuole far partire l'analisi e tramite uno slider sceglie quanto peso dare alle vendite e quale peso dare alle valutazioni. L'algoritmo restituisce la zona geografica dove la pubblicazione del videogioco restituisce il coefficiente più alto. (coefficiente valutato tramite una media pesata di vendite e valutazioni);

2-Nel secondo l'utente inserisce il numero di generi che vuole in output, la regione geografica e l'anno da cui far partire l'analisi, ed eventualmente lo stesso slider definito sopra. L'algoritmo restituisce la miglior combinazione di generi relativa a quella zona geografica, calcolati tramite un algoritmo ricorsivo. (Questo è il caso in cui una software house abbia in cantiere più progetti e voglia vedere quale sia il più conveniente storicamente).

fulcorno commented 5 years ago

Nel caso 1- è un semplice calcolo di media pesata, non ci sono algoritmi di ottimizzazione né di simulazione.

Tutta la parte realmente algoritmica si concentra nel caso 2. Dalla descrizione però non capisco quale sia il passaggio di ottimizzazione. Dalla descrizione fornita, una soluzione potrebbe essere calcolare, per ogni genere, e per ogni area geografica, la somma pesata. Poi alla fine si stampano gli N generi che hanno avuto valore maggiore. Si tratterebbe solo di una query di somma, non vedo cosa ci sia da ottimizzare.

Riesci ad approfondire questo punto?

alessioserra commented 5 years ago

Modifico l'algoritmo 2 nel seguente modo:

2- Caso in cui si vogliano pubblicare PIU' progetti, tenendo conto di un BUDGET limite: L'utente inserisce il numero di generi che vuole in output, la regione geografica e l'anno da cui far partire l'analisi e il budget massimo complessivo per lo sviluppo degli N progetti coinvolti. L'algoritmo ricorsivo restituisce la miglior combinazione di generi relativa a quella zona geografica( che può essere formata anche solo da 1 genere) tenendo conto degli input dell'utente e soprattutto del budget massimo disponibile.

fulcorno commented 5 years ago

Quindi per ogni genere è definito un costo? Cioè tutti i giochi dello stesso genere (venduti in una certa area) hanno lo stesso costo per l'azienda? Altrimenti non capisco come fai a stabilire e la combinazione di progetti sta nel budget. Non mi è nemmeno chiaro se l'algoritmo stabilisce N generi, oppure N progetti (uno per genere) oppure un numero qualsiasi di progetti (purché siano di N generi).

alessioserra commented 5 years ago

Per ogni genere sarà definito un costo per unità singola che verrà moltiplicato per le vendite medie in quella certa area, restituendo il costo di quel genere (quindi ovviamente più un genere è famoso più bisogna investire per la buona riuscita del gioco di quel genere). L'algoritmo chiede un numero N che rappresenta la lunghezza della combinazioni di Genere: quindi se l'azienda decide di voler pubblicare 3 nuovi giochi (progetti) in Giappone inserirà 3 e l'algoritmo restituirà la miglior combinazione di genere, per es. Azione-Sportivo-Sportivo, e su questo output l'azienda farà partire un progetto per un gioco di Azione e 2 progetti per giochi di Sport.

fulcorno commented 5 years ago

ok, ho capito. Non so valutare quanto possa essere realistico come strumento di supporto alle decisioni, ma non è questo lo scopo del corso. Per quanto mi riguarda, è approvato.