define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
Ad ogni modo non capisco quale utilità abbia, ai fini della vostra ricerca verso una nuova consapevolezza videoludica, sapere come ragionano alla Ubisoft: non è una cosa che potete cambiare. Ed eventualmente, queste informazioni non cambieranno di una virgola il fatto che Crysis ve lo comprerete lo stesso (o peggio, la scheda video per giocarci).
Personalmente credo che la consapevolezza passi attraverso molte cose. Per capire meglio la pittura approfondire le conoscenze sull’uso del mezzo pittorico che ne facevano gli artisti aiuta a capirne meglio le opere, tanto per fare un esempio.
Non cambierà il fatto che si preferisca Van Gogh a Gauguin? Beh, ma quello è tutt’altro discorso.
Quel che dico è: se ti dai un tempo per fare qualcosa e in quel tempo non ce la fai, la responsabilità di non avercela fatta rimane nell’ambito di chi sta creando quella cosa. Non si può scaricarla su chi compra ciò che tu hai fatto e per il quale vieni pagato. Se tu cmq vieni pagato uguale ma ci metti di più dovrebbe essere un problema tuo o dell’azienda. Poi la responsabilità andrà ricercata o nel programmatore o nel progettista, o in una delle altre componenti dello sviluppo.
Per come l’hai messa giù sembra che sia considerato accettabile (e ho visto che spesso per i videogiochi è così) che un prodotto esca alla data di scadenza prefissata nello stato in cui è. Con questo concetto per assurdo uno potrebbe impacchettare un pdf con il documento di design e dire a chi acquista che il gioco poi arriverà.
Il supporto ad un prodotto dovrebbe essere risolvere problematiche irrisolte e NON conosciute e difficilmente rilevabili dai test e aggiungere qualcosa di nuovo, NON aggiungere qualcosa che doveva già esserci.
Mi dici che auspico un mondo ideale e forse è vero, ma se l’alternativa è farsi andare bene un mondo che così non va e che si è accettato anche se sbagliato mi tengo il mio punto di vista. Un lavoro richiede troppo tempo, ci vogliono più persone. Si ricevono troppe richieste e si ha poco tempo ma va fatto tutto? Beh probabilmente i mezzi sono sottodimensionati rispetto a ciò che viene chiesto e l’unica conseguenza è fare il lavoro male. Oggi semplicemente funziona perchè si ammette lo sfruttamento del lavoratore, ovvero si pretende che venga fatto di più nello stesso tempo, è qui l’errore.
L’alternativa è prendere qualcosa di già fatto e aggiungerci qualcosa, ma le licenze costano. Sarà per quello che chi sviluppa per esempio un motore grafico ci impiega di più e forse rientra nei costi al titolo successivo in sviluppo e non al primo, oppure concedendo le licenze.
L’esempio degli architetti te lo volevo citare io, appunto per esempi di gente che ha progettato partendo da tutti gli assunti appresi studiando per poi scazzare arrivati a contatto con la realtà. Perchè è quello che succede anche nell’informatica, spesso si perde questo contatto e si riempie tutto di layer di fregnacce non sempre necessari (e non auspico il “programmatore astuto” come diceva uno dei miei prof). Certe cose vanno imparate con ordine.
Detto questo non vedo perchè chi fa un software non ci debba mettere la stessa attenzione di un architetto (quello che non scazza però). Non si può accettare a priori che qualcosa, anche di importante, non andrà come deve. Quello si spera debba essere sempre un imprevisto.
Riguardo all’ordine nella programmazione non ho nulla da obiettare. Mi sta bene che ci sia disordine nel contempo in cui si prende dimestichezza con il mezzo perchè penso che sia cmq qualcosa che non puoi studiare ma va appreso con l’esperienza. Infatti ci sono più linee di pensiero riguardo all’ordine e a come il codice va scritto. Quindi l’ordine serve per i motivi citati e non penso che questo debba per forza ledere la creatività. Tant’è che ogni tanto si sente parlare di riscrittura del codice di una certa parte, probabilmente perchè dopo tentativi, aggiunte ed esperienza l’ordine tende ad oscillare ma si può “riordinare” con ciò che si ha imparato. Ovviamente ad averne il tempo.
A parte tutto questo discorso sulla prammazione o sulla sua etica o quello che è, in un videogioco rientrano anche altre figure che curano prettamente il lato creativo (non che il programmatore ne sia escluso a priori, non si può dividere le persone a scomparti). E anche loro sbagliano e anche per quello che loro creano che vanno fatti dei test. Un design sbagliato porta a risultati sbagliati a prescindere da come verranno realizzati. Ed in molti giochi è questo il problema.
]]>C’era la leggenda che nel codice di FIFA ci fossero delle parti delle versioni per Sega Megadrive e che ogni anno cercassero di toglierle, ma ogni volta si andava incontro a dei crash casuali ed irriproducibili in maniera certa 😀
Questa leggenda, purtroppo, pare avere un fondo di verità 😀
Il videogioco, però, non può allontanarsi in alcun modo dallo sviluppo standard, perchè allontanarsi non significa essere originali e fori dagli schemi (e cool :D).
Significa introdurre delle problematiche che di certo, successivamente, si rivolteranno contro l’intero sistema, causando piano piano in trend negativo in cui si dice “vabbè se lui l’ha fatto lo faccio pure io”.
Tutto questo fino a che si raggiunge il parossismo: un sistema inutilmente complesso, che porta a cose tipo “per aggiungere un bottone nella UI sevono 3 giorni uomo” o “per capire chi fa quell’effetto ci ho messo tre giorni e l’ho trovato nell’input” 😀
La creatività non è nemica delle regole nel caso della programmazione. Posso capire che lo sia in un campo artistico, come la musica e la pittura. Per la musica lo capisco in maniera più profonda, giacchè suono.
Ma la programmazione in sè, se dobbiamo per forza dire che è un’arte, allora è un’arte la cui bellezza è direttamente proporzionale al suo ordine, perchè nel momento in cui si fa del disordine, ne pagano le coseguenze tutti i programmatori in azienda 😀
Te lo dico con congnizione, fidati 😀
]]>è un discorso cioé che va al di là del “sul mio pc scatta”, perché oltre all’ottimizzazione, con questo approccio “aziendale”, se vogliamo chiamarlo così, alla programmazione dei vg, si perde un (bel) po’ in creatività, o meglio in libertà creativa…
Te lo può dire qualsiasi artista: puoi essere un genio, ma il genio non basta; se non studi e migliori la tecnica nella tua arte andrai meno lontano di chi genio non è ma ci si mette d’impegno. Lo dicono tutti gli insegnanti: PRIMA impara la teoria e la tecnica, POI dai sfogo alla tua creatività.
Michelangelo ha messo il suo estro nell’affrescare la Cappella Sistina, ma NON nel preparare i pigmenti e la base: queste cose andavano fatte nel modo MENO creativo, e più conosciuto e sicuro possibile; sennò hai fatto un bellissimo dipinto, e dopo un anno casca a terra perché hai preso strane iniziative.
Se hai del codice fatto bene puoi riutilizzarlo quanto vuoi, e concentrare i tuoi sforzi sulle “cose in più” che auspichi; se scrivi il codice “creativamente”, i tuoi sforzi finiranno inghiottiti da un debug infinito (e MIK0 non sarà contento).
]]>Rileggendo questo articolo mi sono accorto che ho dato per scontate molte cose, dando l’idea che io dica sempre e solo il vero. In realtà quella che leggi è la mia opinione sulla faccenda, tutto qui: la mia opinione da programmatore con un po’ di anni d’esperienza.
L’idea di aver ragione deriva dal fatto che molto spesso parlo di cose difficilmente attaccabili, molto ovvie per i programmatori ma meno ovvie per i profani.
Diciamo che quando parlo di “High Cohesion Low Coupling”, i programmatori ed i progettisti sanno di che parlo e potrei non dire altro.
Questo concetto non banale però non può essere chiaro in assoluto, quindi lo spiego non trattandolo come una possibilità per programmare, ma come una proprietà che se c’è, allora il programma è ben fatto. Se manca, allora è brutto 😀
C’è poco da fare, ci sono molti libri che spiegano questi concetti (sono i libri dei pattern di design), però non posso metterlo giù come un concetto che “potrebbe essere vero, chi lo sa, per me sì” perchè farei un grave errore nel tentativo di divulgare.
In futuro io continuerò a scrivere articoli per Arsludica (fintanto che i miei colleghi sopporteranno i miei improperi :D) e ti chiedo di essere sempre critico: la tua critica mi ha aiutato a capire come migliorare i miei prossimi articoli. Cercherò di essere meno perentorio, di spiegare con più attenzione e usare solo i termini spiegati nell’articolo, per non dare l’idea di voler parlare di qualcosa “che solo gli esperti possono capire e gli altri si attacchino e ci credano”.
]]>E perché non “sono un programmatore alle prime armi e non vedo perché non stia bene programmare un gioco come un .cpp unico che contiene codice, librerie, dati, e pure mia nonna”.
Federico, per me quanto ha scritto Monopoli stavolta è un semplice rinfresco di ciò che so già per quel che riguarda la programmazione, ma trovo interessante leggere esempi applicati al mondo dei videogiochi, che come sviluppatore non frequento. Mi duole (vabbe’, non è vero) che a te non interessi questo articolo, ma se tanto mi dà tanto dovrai (e, se te lo permetterai, potrai) fare sempre di più uso del Diritto Inalienabile del Lettore di Non Leggere, perché qui su Ars Ludica ci piacerebbe che i videogiochi fossero trattati da più punti di vista possibile (e questa dev’essere la seconda volta che lo scrivo).
Non è però un prodotto finito perchè se un bug non è conosciuto mi può star bene, ma se si sa che esiste vuol dire che non è stato fatto qualcosa prima per prevenirlo, insomma il tempo necessario a realizzare il prodotto è più di quello che si è impiegato.
Ed escono prodotti con Major Bug.
MIK0, per “prevenire” i bug l’unica cosa è lo sviluppo test-driven – cioè PRIMA crei i test che il tuo codice dovrà soddisfare, poi sviluppi il codice. Questo riduce il tempo di debug, ma allunga il tempo necessario ad avere qualcosa di funzionante, ed è scarsamente praticabile per software che superino una certa complessità (in genere lo si applica per applicazioni veramente critiche… il software che muove un braccio meccanico che fruga nelle interiora di un tizio lo è, un videogioco no).
Quello che auspichi è ovviamente il bel mondo ideale in cui tutti hanno tutto il tempo e le risorse necessarie per lavorare bene… questo mondo ideale non esiste. Perché dovrebbe esistere nell’informatica, quando ci sono architetti, ingegneri, medici, che fanno stronzate clamorose in qualcosa che al contrario di un software NON è PATCHABILE?
Un “minor bug” non è necessariamente “minor” come complessità di risoluzione… è solo “minor” come impatto. In alcuni miei programmi, magari dopo mesi che sono in produzione, mi capita di accorgermi di un potenziale bug che non tiene conto di un caso particolare (e se si tratta di programmazione con segnali, thread, eventi, semafori tanti auguri – ho visto bug risolti dopo mesi) e che causa un disservizio trascurabile; magari però per risolvere quel bug mi dovrei sbattere per due giorni perché il programma deve affrontare un problema di un ordine superiore a quello che ha affrontato fino a quel momento, per non parlare del fatto che tutto va (andrebbe…) TESTATO di nuovo da capo, mentre quegli stessi giorni magari farei meglio a impiegarli per finire un lavoro che eviterà all’azienda di finire sotto processo; perché sarebbe bello stare a grattarsi una volta finito un lavoro, ma STRANAMENTE non capita quasi mai (anzi mi capitano i giorni in cui passo il tempo solo a ricevere cose da fare).
]]>A me va bene che ci sia qualche articolo “più tecnico” se così si può dire, giusto per spezzare un po’. Il sito è scritto per lo più da umanisti o giù di li e da come l’esperienza mi insegna, di quel che un umanista dice (e della sua intrinseca artefatta complicatezza) devi buttare il 90% ma quel 10% che rimane lo può dire solo lui ed è un bene che ci sia perchè integra quello che c’è già. Da quel 10% si tirano fuori un sacco di cose interessanti.
]]>Quindi…
…a me piace lo stile grafico, i controlli, la storia, le trovate, ed i controlli di Psychonauts. Che me ne faccio di questo articolo?
…sono uno sviluppatore indie, voglio fare un piccolo gioco indipendente. Che me ne faccio di questo articolo?
…sono un videogiocatore accanito ma “attento”. Cerco di capire quali prodotti siano più conformi al mio gusto. Che me ne faccio di questo articolo?
…sono un giocatore saltuario, solitamente ripugnato dalla bassezza dei temi dei videogiochi (ammazza ammazza ammazza), che cerca qualcosa di nuovo. Che me ne faccio di questo articolo?
e così via…
molto meglio discutere di finali, di profeti inutili, di confini incerti, etc.. ma ‘sto strazio periodico, invece, finirà mai?
]]>Detto questo, non ci si può fare niente: le date vanno rispettate, quindi un gioco con bug minor non è per niente strano. Un bug MINOR non è un crash, eh, un crash è un bug CRASH che sta sopra il MAJOR.
MINOR significa che non compromette la giocabilità, non è crashante e non è molto visibile
Non è però un prodotto finito perchè se un bug non è conosciuto mi può star bene, ma se si sa che esiste vuol dire che non è stato fatto qualcosa prima per prevenirlo, insomma il tempo necessario a realizzare il prodotto è più di quello che si è impiegato.
Ed escono prodotti con Major Bug.
Il resto purtroppo non lo capisco: è ovvio che quando abbassi la resa estetica in un gioco, allora scenda la qualità ed il gioco assomigli ad un gioco vecchio
Non è ovvio invece. Se abbassi la resa grafica non è necessariamente vero che l’impatto visivo debba risentirne in maniera così evidente, o meglio si vedrà meno definito o con meno dettagli, ma da li a vedersi male dovrebbe passarne. Nella frase che citi mi riferivo al fatto che spesso prodotti nuovi a pieni dettagli si vedono bene, togliendo qualcosa si vedono PEGGIO di prodotti vecchi.
“Ammetterai però che non è molto corretto verso chi comprerà il tuo prodotto, farlo uscire non come è stato concepito, ma con problemi noti o con qualcosa in meno.”
Il gioco esce nello stato migliore possibile, non è che si rilascia un gioco con i bug mentre noi abbiamo la versione buona
Beh, il gioco esce e vende, chi ci ha lavorato prende lo stipendio, ma chi l’ha comprato prende un prodotto non finito, sia che siano problemi minori che problemi maggiori. Si suppone che fino a che i problemi non sono risolti ci si lavori.
Se poi i tempi sono stretti è un problema di chi i tempi li calcola e alla peggio di chi ci ha lavorato male (di norma è la prima penso).
Già assumere di non risolvere qualche problema è cmq ammettere che si preferisce lasciare un lavoro incompiuto ma avere i vantaggi di un ritorno come se fosse tale.
Detto questo, non ci si può fare niente: le date vanno rispettate, quindi un gioco con bug minor non è per niente strano. Un bug MINOR non è un crash, eh, un crash è un bug CRASH che sta sopra il MAJOR.
MINOR significa che non compromette la giocabilità, non è crashante e non è molto visibile.
Il resto purtroppo non lo capisco: è ovvio che quando abbassi la resa estetica in un gioco, allora scenda la qualità ed il gioco assomigli ad un gioco vecchio 😀
Anche questa frase:
“Ammetterai però che non è molto corretto verso chi comprerà il tuo prodotto, farlo uscire non come è stato concepito, ma con problemi noti o con qualcosa in meno.”
Il gioco esce nello stato migliore possibile, non è che si rilascia un gioco con i bug mentre noi abbiamo la versione buona 😀
E’ molto difficile che i bug scappino: i bug in genere vengono sempre scoperti. Poi bisogna dargli una classificazione e decidere se vanno fixati. In genere si cerca di fixare tutti i bug crash, block e major. I minor ed i glitch si fixano solo se c’è tempo ed in genere non c’è mai tempo.
Discorsi come “Ma non potevano sistemare tutto e farlo uscire dopo?” non hanno senso, se pensiamo al discorso commerciale: i giochi devono uscire in precisi momenti dell’anno, considerando le concorrenze e le feste.
Ammetterai però che non è molto corretto verso chi comprerà il tuo prodotto, farlo uscire non come è stato concepito, ma con problemi noti o con qualcosa in meno.
E conosco molti casi (potrei citare il solito HGL) dove questo rasenta molto la truffa a fronte delle comunicazioni sbandierate prima e tuttora dagli sviluppatori.
Che poi il bug ci scappi sempre mi sta bene, che ce lo fai scappare no.
Inoltre come è stato detto, magari il motore di Crysis muove effettivamente bene quello che viene mostrato a video però se a me la resa video non soddisfa forse qualcosa non va. Mi spiego. Molti titoli odierni a pieno dettaglio si vedono bene, ma spesso togliendo qualcosa si vedono peggio di giochi di anni prima semplicemente perchè non si è tenuta da conto la scalabilità e l’effetto visivo complessivo man mano che le richieste hardware scendono. Magari non sarà un difetto di programmazione ma di sicuro di progettazione.
]]>Il problema è che sembra proprio non esserci un controllo possibile (o adeguatamente esposto, come dici tu possiamo basarci su quello che vediamo ed intuiamo) per intervenire sul livello qualitativo delle informazioni visualizzate (e questo un po’ impatta anche sul design data-driven, visto che parliamo di modelli dati estremamente dinamici e manipolabili).
Farcry, secondo me permetteva un controllo più fine su questi aspetti, utilizzando e calibrando l’intensità dei soliti trucchi del mestiere di cui tu hai già profusamente parlato in un precedente articolo, uniti forse ad una pipeline di rendering più aperta ai fallback tecnologici.
Magari è stata solo mancanza di tempo o di budget, però è chiaro che rispetto ad un Unreal o ad un Quake qualsiasi, si può intervenire molto meno su quel frangente. Forse è stata anche la scelta un po’ prematura di un motore DX10-based ad aver costretto a fare scelte molto meno scalabili riguardo le estensioni hardware.
]]>tanto per aggiungere benzina al flame…..è un dovere morale!!!
]]>Ovvero se imposto due giochi per darmi sempre 30 frame al secondo la grafica di Crysis è migliore…poi magari magari lo stile dei livelli ci piace di più in un altro gioco, ma a livello di qualità visiva mi sembra non ce ne sia per nessuno….
]]>Il vero problema di Crysis è stata la promozione che l’ha venduto come il gioco che necessita di un pc da almeno 2000€ per essere dignitoso da vedere. Questo comporterebbe una seria discussione sul fatto che qualunque filmato io vedo di MGS4 E’ il gioco, mentre qualunque filmato io vedo di un titolo pc è una configurazione al massimo, quindi non è e non sarà mai quello che vedrò giocando su un pc da 600€
Poi Crysis è diventato il capro espiatorio delle richieste hardware esagerate, indipendentemente dai sui meriti.
Sul codice commentato ricordo poi di aver avuto in passato una discussione con uno dei programmatori di Lionhead, il quale sosteneva che secondo lui ogni forma di documentazione/commento fosse solo una perdita di tempo, e che dunque tale pratica fosse per lui assolutamente negativa… da bocciare totalmente. Un punto di vista certamente interessante che però considero poco realistico perché per quanto il codice può essere ben scritto e “leggibile”, quando si parla di programmazione di qualcosa che sia un pelo più complesso del Notepad di Windows tenere traccia del proprio operato diventa non solo consigliato, ma una necessità qualora ci dovesse essere un passaggio di consegne… o anche solo per mantenere il know-how acquisito con un po’ di ordine.
A riguardo invece della valutazione dell’operato di Crytek e sulla buona programmazione di Crysis, non posso che dirmi semplicemente concorde con quanto sopra riportato.
]]>Programmato bene. Progettato (o ideato) male.
]]>Poi: quando un gioco esce, è molto difficile che sia Bug Free. E’ facile che abbia una serie di bug minor. In genere si cerca di chiudere tutti i bug dal major in su per l’uscita. I bug sono sempre noti: bisogna vedere se c’è il tempo di risolverli o no.
Discorsi come “Ma non potevano sistemare tutto e farlo uscire dopo?” non hanno senso, se pensiamo al discorso commerciale: i giochi devono uscire in precisi momenti dell’anno, considerando le concorrenze e le feste.
]]>Per il resto io in genere vedo nei giochi considerati “mal realizzati” alcuni problemi fondamentali che possono inficiare anche la qualità programmativa: uscita prematura, scelte sbagliate a livello di design. Un controllo qualità dovrebbe impedire l’uscita di un prodotto non pronto, con ancora una lista di bug conosciuti o modifiche da fare. Inoltre per come la vedo io, alcuni giochi (non so Crysis) richiede troppo per quello che viene mostrato a video. Ora questa affermazione va spiegata: non so se effettivamente richiede tot calcoli o no, ma mi riferisco a quello che viene reso a video e percepito dall’utente. Se va lento ed è brutto da vedere (e sei nei requisiti), qualcosa non va senza guardare il lato tecnico. Se sei costretto ad abbassare i dettagli, vorresti che ci fosse qualche compromesso, qualcosa che cmq ammalgami ciò che vedi senza dargli quell’effetto di mozzato o addirittura eliminare effetti che creano l’ambientazione e possono inficiare il gameplay. Penso ad esempio a Hellgate London che se tocchi qualcosa, nelle zone buie non c’è praticamente illuminazione… avrò risparmiato ma li non gioco (sembra che mi accanisco sempre su HGL, però è il primo esempio che mi è uscito e cmq non si può dare mai addosso abbastanza a quel gioco, che soffre dei difetti che ho elencato).
Inoltre i difetti nei giochi in genere li vedo dal punto di vista concettuale e di design, dove effettivamente vengono fatte delle scelte che possono essere anche implementate giuste ma portare a mille problemi o abusi proprio per l’idea iniziale.