Back in Action! Mi scuso in anticipo per il pappardellone.
Una nota sul silenzio...S.C.U.R.F. è un mostro. E' un ammasso di codice di cui non c'è da andare fieri. Il motore grafico è vetusto a dir poco, il sistema di gestione dei media è bislacco, il sistema si appoggia su un motore dedicato agli FPS, inoltre è sviluppato integralmente tramite script (mastodontici)... quindi non ci poteva certo aspettare che il progetto funzionasse. Era più una "proof-of-concept", un dimostrazione che poteva essere fatto, piuttosto che altro. Infatti mi sono poi dedicato ad applicazioni più consone al progetto RealityFactory, cioè l'integrazione della fisica (NewtonGameDynamics). Anche in questo caso la difficoltà di programmare con un motore grafico vecchio di molti anni non ha aiutato. Ancora una volta torna una della principali ragioni a favore dell'utilizzo del sistema per la creazione di avventure. La storia sopra la grafica, la capacità di fare intendere più che far vedere...
Ora penso di poter tornare sui miei passi e valutare se continuare l'esperienza SCURF.
Come SCURF "dovrebbe" essere fatto...- Utilizzando Ogre come motore grafico
- Utilizzando Lua come scripting engine
oppure: utilizzando Unity3d come middleware tool.
Insomma ci vorrebbe qualcosa di potente e nuovo, ma SCURF non può essere fatto in questa maniera. Non sono in grado di portare avanti un progetto del genere. Lavoro, impegni, limitate capacità di programmazione lo impediscono. Ho abbastanza saggezza da sapere come andrebbe fatto un lavoro simile ma non abbastanza competenza per farlo.
Quindi S.C.U.R.F. sarà ancora un progetto (S.C.U.)RealityFactory e rimarrà un "mostro". Quello che posso fare è modificare RF, creando una variante su cui "cucire" il sistema. Se non posso renderlo "più bello", posso almeno renderlo "più funzionale". Qui ci sono due possibilità:
1) Creare un programma per inserire i dati. In pratica il sistema rimane così com'è. Semplicemente il programma in questione si occupa di inserire i dati negli script al posto giusto. Sono tutti array quindi non è teoricamente troppo difficile. Ho provato a guardare un po' MFC e CLR per Visual C e mi sono apparsi non impossibili ma richiedono tempo. Dentro l'editor le cose rimarrebbero immutate (e quindi un po' complesse e anti-intuitive)
2) Tenere gli Script per gestire i dati così come sono, in pratica il "cervello" SCURF, ma integrare i dati nell'editor. Quello che ho in mente è questo: si inserisce un oggetto nell'editor (ad esempio, una chiave o una porta o una pala) e si definisce il modello tridimensionale, le condizioni per le azioni (raccogliere, usare, parlare, guardare), le frasi, i suoni, le animazioni. insomma quello che si metteva negli array di dati che stavano negli script finisce in forma leggibile nelle proprietà dell'editor (del tipo ObjectName = stringa, WalktoTheObject = true). Le proprietà sono già definite, si inseriscono solo i valori.
Io propendo per la soluzione 2, perchè so già come programmare le entity dell'editor e perchè pone fine alla separazione tra dati ed editor. Questo dovrebbe ridurre moltissimo la complessità sia degli script, che in pratica servirebbero solo a "gestire" i dati senza ospitarli, che del level design. Ad oggi bisogna aggiungere un oggetto nelle proprietà di inizializzazione, nell'editor e nei dati degli script. Dopo il lavoro di integrazione si inseriscono i dati di un oggetto nell'editor in posto unico e poi lo script farà il resto. Si può ideare qualcosa di simile anche per il tracker cinematico e le altre parti dl sistema. In altre parole non solo non ci sarebbe da scrivere una riga di codice, ma in teoria la maggior parte del lavoro potrebbe essere fatta nell'editor di livello.
Come sviluppare SCURF...Questo è il punto fondamentale. Il progetto era nato senza una precisa direzione. Volevo programmare un'avventura, ma non avevo molte idee, così ho pensato di verificare se fosse possibile creare innanzitutto un gioco simile con RF. Quindi ho iniziato ad elaborare una strategia per automatizzare la maggior parte delle azioni ed è nato l'inventario, il sistema di gestione azioni, il tracker cinematico, e per ultimo il sistema di conversazione. Sono rimasto comunque senza le idee per un'avventura. A quel punto tutto il sistema era efficiente ma troppo complesso. Per maturare aveva bisogno di un progetto guida ed ho cercato aiuto per sviluppare un demo.
- Il sistema era troppo compleso per poter essere usato da qualcuno che non fossi io senza una precisa documentazione.
- se avessi scritto la documentazione non avrei sviluppato il sistema
- senza un demo il sistema non si sarebbe mai evoluto
Qui ci siamo incagliati.
Progetti...Ora io ho un'idea differente e la propongo sperando di trovare degli interessati. Invece di partire dal sistema completo e sperare di trovare gente che voglia sviluppare qualcosa con un sistema che non conosce (su delle specifiche che potrebbero essere chiare solo a me, tra le altre cose), sarebbe bene che qualcun'altro mi aiutasse nel testing. Facciamo un team di esperti di avventure, anche gente non "tecnica" ma volenterosa (Azrael, Eniac, ma anche altri audaci...). In pratica: io sviluppo e nel frattempo, gli altri membri del team fanno dei test mi aiutano a capire:
- quale direzione prendere nello sviluppo (ad esempio: cosa possono fare gli NPC?)
- utilizzo dell'interfaccia (è abbastanza intuitiva?)
- i meccanismi di un'avventura possono essere riprodotti con il sistema? creazione di esempi pratici (prepariamo uno scenario standard con un paio di oggetti e NPC e ricreiamo le tipiche forme di interazione di un'avventura).
- scrittura della documentazione e tutorials (dal setup all'avventura completa)
Ne parliamo assieme, vediamo cosa può essere fatto ed a che costo, io cerco di tradurlo in codice, lo proviamo tutti assieme e lo documentiamo. Così, insieme, passo dopo passo, rendiamo il sistema usabile e documentato. Facciamo una specie di "laboratorio dell'avventura". Poi, se noi oppure qualcun'altro vorrà sviluppare un demo o un'avventura completa, questo è un altro discorso che eventualmente verrà molto più avanti...
Non chiedo aiuto nell'ideazione di uno storyboard per un demo, né per la game art, né per lo sviluppo in se stesso. Chiedo invece aiuto in tutte quelle attività collegate che mi aiuterebbero a concentrarmi solo sullo sviluppo del tool (questa volta per forza creato anche per altri e non solo per me stesso), ovvero testing, design, documentazione. Chi se non gli utenti di questo forum avrebbero la consapevolezza per aiutarmi in un'impresa simile?
Aspetto di registrare le vostre eventuali adesioni, poi eventualmente potremmo far partire un nuovo topic in cui accordarci per il metodo di lavoro. Sto già modificando il sito (ora offline) per permettere una collaborazione efficace. Spero che accorriate numerosi.