Git Product home page Git Product logo

jjak0b / mandm Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 50.55 MB

Accessible gaming, authoring and evaluation platform for graphic adventure games. Progetto a.a 2019/2020 del corso Tecnologie Web.

Home Page: https://jjak0b.github.io/MandM/

License: MIT License

JavaScript 98.83% CSS 0.57% HTML 0.60%
a11y accessibility authoring editor evaluation evaluator gamification gamification-platform gaming i18n internationalization player scene story vue vuejs2

mandm's People

Contributors

acsor avatar calispo avatar iacop avatar jjak0b avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

mandm's Issues

Attività player e relativo metodo di interfacciamento su editor

Poichè l'autore potrà creare delle missioni con al loro interno attività che potrebbero portare ad attività diverse in base al tipo di scelta fatto o altro, stavo pensando che potrebbe essere utile strutturare le attività sotto forma di flowchart, quindi attività condizionali, e sequenziali ed eventualmente altre tipo un "goto" su un altro nodo ( per anche simulare l'iterazione ), o l'iterazione, stessa ma per non renderlo troppo complicato (non dobbiamo necessariamente renderlo turing completo), potrebbero bastare anche solo i primi 2 o 3 tipi .

[ActivityTreeWidget] Drag and drop

@iacop In riferimento a 269bbbf
Il drag and drop non ritorna il focus sull'albero o sul nodo selezionato dell'albero ( meglio quest'ultimo)
Inoltre mancano gli attributi

  • aria-haspopup=true su tutti i nodi dell'albero;
  • aria-grabbed=true sul nodo preso (grabbed) e false in tutti gli altri
  • aria-dropeffect=<effetto> sul nodo selezionato di destinazione

[Player] Metodo di assets caching

Considerato che i contenuti dell'ambiente Player devono essere mostrati/eseguiti anche in modalità offline (o almeno dove possibile), è necessario che il player scarichi tutti gli assets dinamicamente scaricabili prima dell'avvio effettivo della storia.
Attualmente vi sono alcuni metodi
Quello che prenderei in considerazione, dato il peso significativo degli assets è

  • Uso di blob indicizzati in IndexDB combinati a CacheStorage, come nell' esempio

[ActivityTree/jstree] Accessibilità

Secondo la specifica WAI-ARIA

If the complete set of available nodes is not present in the DOM due to dynamic loading as the user moves focus in or scrolls the tree, each node has aria-level, aria-setsize, and aria-posinset specified.

aria-setsize e aria-posinset non sono specificati sul nodo di jstree

[Editor] possibile bug per le traduzioni durante cambiamento della storia selezionata

Nell'editor c'è la funzione changeSelector così definta:

changeSelectedStory( name ) {
   let story = this.localStories.find(function( story ) {
   	return story.name === name;
   });
   if (story) {
   	this.cache.story = story;
   	let self = this;
   	let getlocale;
   	Object.keys( this.cache.story.dependencies.locales ).forEach( locale => {
   		getlocale = self.$i18n.getLocaleMessage( locale );
   		getlocale.assets = {};
   		self.$i18n.setLocaleMessage( locale, getlocale );
   		self.$i18n.mergeLocaleMessage( locale, this.cache.story.dependencies.locales[locale] );
   	});
   }
},

@iacop Credo che la riga this.cache.story = story; dovrebbe stare alla fine e this.cache.story.dependencies.locales[locale] dovrebbe essere story.dependencies.locales[locale], perchè così semplicemente mi sembra di capire che rimetti e togli le stesse traduzioni nella stessa storia

[Editor/ActivityTree] Quando i nomi delle attività sono rinominate, il nome è aggiornato solamente temporaneamente sul nodo corrente

Quando i nomi delle attività sono rinominate nell'activityEditor, il nome è aggiornato sia il sul nodo nell'albero e anche sul noteInfo.
Però se dopo aver salvato la missione/storia, si ricarica la storia, il nodo della corrispondente attività ha il nome precedente, ma in NoteInfo è rimasto salvato.
Sicuramente da questo commit c'è 0969248 ma probabilmente c'è anche da molto prima.

SPA vs. MPA

Considerato che l'aspettativa sul framework client-side da utilizzare è Vue, un particolare molto importante su cui decidere è se adottare a lato client un'architettura SPA (Single Page Application) o MPA (Multiple Page Application); Vue si presta molto bene all'approccio SPA, rimanendo comunque compatibile per quello MPA.

Non ho ancora preso decisione formale, ma per il momento tendo verso l'approccio SPA. Voi che decidete? Vantaggi della scelta SPA

  • L'ambiente di utilizzo atteso dell'applicativo è un museo, dove la connettività (WiFi o rete mobile) potrebbe essere limitata. Una SPA limita il quantitativo di informazioni da scambiare tra client e server, riducendolo prevalentemente a messaggi JSON/XML
  • La sensazione di utilizzo di una SPA da parte dell'utente è molto simile a quella che si ha nell'interfacciamento con app native, cosa molto gradita

Struttura ad albero del progetto

Propongo di utilizzare la seguente struttura ad albero, per organizzarci durante il progetto

  1. Ogni modulo o applicazione è implementato in una cartella separata.
  2. Dentro ogni modulo, se può essere accessibile all'esterno sarà presente una cartella public e configurata opportunamente come statica su express, per rendere disponibili le risorse in tale locazione.
    a. Nota: Questo non vale però per i moduli o librerie importate esternamente, si deciderà in base al loro utilizzo
  3. Nella cartella shared saranno aggiunti eventuali librerie di utility o condivise per vari motivi dalle varie applicazioni/moduli
  • player
    • public
  • editor
    • public
  • evaluator
    • public
  • shared
    • public
  • liberie/moduli
    Non avendo esperienze con node ed express non so se questo "layout" può rivelarsi comodo in futuro, però in altri ambiti mi è sembrato comodo.

Interfaccia utente

Penso sia tempo di prendere qualche decisione sul look-and-feel generale dell'applicazione. Trattandosi di un applicativo dalla forte componente mobile, punterei per qualcosa di analogo a quanto mostrato nella schermata

example

In altri termini

  • Pannello laterale sinistro, accessibile dal tasto in alto a sinistra
  • Banner centrale/menu bar in alto al centro e a comparsa, con eventuali tasti ad accesso rapido
  • Varie ed eventuali da decidere in fase di prototipizzazione

Non sono molto ferrato in ambito di UX, quindi perdonate se non ho saputo esprimermi con il lessico appropriato. Quello che propongo è un abbozzo temporaneo, al quale eventualmente aggiungere o togliere cose. Siete d'accordo, avete proposte da fare? Va inoltre decisa la libreria/toolkit grafico con cui realizzare la parte grafica; ignorante come sono di queste cose, al momento l'unica scelta di cui dispongo è Bootstrap.

Il testo di questo issue è soggetto ad editing e riflette la decisione comune dei partecipanti.

[Editor] Migliorare intuitività (e accessibilità) delle aree che cambiano in base alla lingua selezionata

Serve evidenziare in qualche modo all'utente quelle aree di I18nInputWidget che sono "dinamiche", in base alla lingua scelta.
Sicuramente una descrizione "tutorial" nella homepage dell'editor può aiutare, però pensavo anche ad un modo tramite decorazione CSS o con Bootstrap, e in aria tramite delle label o specifici attributi per segnalare che quel campo è dipendente dalla lingua e quindi "localizzato"

[Editor] Metodo di Inserimento file multimediali su server e relative conseguenze implementative

@iacop @Calispo Chiedo un attimo la vostra attenzione per discutere su questo problema.
Considerato che tramite UserWidgetEditorMediaPlayer, è possibile creare un widget multimediale contenente immagini, video, audio, didascalie/sottotitoli; Si deve rendere possibile il loro caricamento sul server.
Da qui in avanti. considero "risorsa" un qualsiasi file multimedia che ho elencato.
Ho pensato che ci potrebbero essere 2 approcci, 1 uno dei quali potremmo prendere in considerazione.

  1. Approccio condiviso: le risorse sono condivise, cioè ogni risorsa può essere ri-utilizzata in altre storie tramite un path condiviso (es: assets/videos/nyancat.mp4).

    • Pro:
      1. Potenzialmente non esisterebbero duplicati
      2. In fase di duplicazione della storia non ci sarebbero conflitti di link, perchè verrebbe copiato un link condiviso di ogni risorsa nelle storie
    • Contro:
      1. Cosa facciamo nel caso la risorsa sia eliminata ed è utilizzata in varie storie ?
      2. Richiede implementazione di un "Assets manager" nel editor
  2. Approccio "standalone": ogni storia è indipendente dalle altre, quindi ogni risorsa è presente nel path della storia, o comunque è logicamente dipendete dall storia (es: stories/xxxxx/videos/nyancat.mp4)

    • Pro:
      1. "facile implementazione" ma in realtà avremo a che fare con i contro
    • Contro:
      1. In fase di duplicazione serve stare attenti ai link delle risorse utilizzate ... Cosa facciamo in fase di duplicazione ? duplicare l'intera cartella lato server ? potrebbe occupare molto spazio e anche inutilmente

Mentre lo scrivevo, direi che conviene l'approccio 1 condiviso, però mi servono idee per sistemare contro "a"
Se avete altri approcci scrivetelo qui nei commenti

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.