Abbiamo realizzato un’interfaccia che rende più piacevoli i vari test del prodotto. La console di windows era più cool, ma abbiamo preferito creare un minimo di interfaccia grafica per le presentazioni. Ovviamente questa funzionalità verrà disattivata, una volta che il prodotto sarà terminato, completo e funzionante. Ci sono ancora moltissime cose da sistemare e che ancora non vanno, ma è già un buon inizio…molte volte i nostri progetti si fermano all’idea su carta purtroppo…questo sembra non essere uno di quei progetti fino ad ora. Seguono alcune immagini.
In this post I talk about a project about an anti-piracy technology we are developing. At the moment we are experimenting it and is earlyer to talk about
A questo punto dobbiamo realizzare il server web che riceve la richiesta e trasmette il codice, mentre il controller della licenza, in locale, si prepara a trascriverlo. Parte dell’interfaccia è pronta nella parte bassa del software, ma ancora non funziona. La seconda chiave software arriverà invece tramite mail al cliente.
Questa settimana inizia lo sviluppo di un nuovo strumento anti pirateria, basato su chiave hardware USB esterna e, in alternativa, uno basato su chiave software/hardware. Ovviamente quello basato su chiavetta USB sarà più difficile da forzare, ma avrà un costo maggiore a causa della necessità di essere distribuito tramite posta tradizionale. Entrambi i sistemi necessiteranno di una connessione a internet per l’installazione ed attivazione mentre il loro punto di forza, oltre alla difficoltà di forzatura, sarà il prezzo. Il sistema inoltre prevede una licenza di vendita molto particolare, che dovrebbe tenere lontani gli occhi di cracker ed hacker. Questo sistema sarà impiegato inizialmente nella distribuzione dei software PlaySys, inclusi i videogame per sistemi Windows. Lo sviluppo avverà su sistemi Windows e sarà molto apprezzata la collaborazione di esperti di reverse engineering.
Per tutti quelli che si domandano come funziona lo sviluppo di un videogioco, ho deciso di pubblicare un paper semplicissimo che riguarda la “nascita” di una classe per un npc. Queste cose sono segretissime e sono il vero e proprio cuore di un videogioco, infatti, determinano le possibilità di interazione con un elemento (in questo caso npc). Partiamo sempre da una lista di necessità, cercando di metterci nei panni del personaggio inserito nell’ambiente. Ci chiediamo “cosa potrà fare?”, “come si muoverà?”, “che cosa potrà bloccarlo?” e 1000 altre domande.
Finalmente uno stralcio di paper in lingua italiana, dedicato a tutti quegli sviluppatori imbarazzati di appartenere al fanalino di coda dell’industria videoludica. Ovviamente non è presente il codice, bensì i primi step che affrontiamo quotidianamente…il linguaggio in questa fase è “umano” e non è necessario essere dei cervelloni!
PS: prima che mi vengano fatte osservazioni del tipo “[…]in italia ci sono molte realtà di sviluppo di videogiochi[…]”, cosa successa di recente con una azienda di sviluppo, voglio sottolineare che mi sto riferendo a prodotti destinati a console next-gen. Quì a PlaySys stiamo sviluppando per XBox360 e sistemi Windows Vista, Seven e XP (da DirectX 9.0 in poi). Se mi rispondete che state sviluppando videogame con Flash e fatturate milioni di euro l’anno, ricordate che vi state riferendo ad un mercato differente (dallo sviluppo alla tipologia di entrate).
PLAYSYS NPCclass
l’npc deve avere degli stati che ne derminano l’animazione ed i dialoghi.
L’npc nonna ad esempio può avere lo stato “rilassato” e la sua animazione sarà quella di una passeggiata predefinita, oppure con lo stato “aiuto” sarà ferma e oscillerà il braccio per richiamare l’attenzione. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
L’npc dovrà aver collegato sempre un trigger ed un emettitore sonoro ad area.
L’npc nonna esegue le proprie animazioni in base allo stato, ma quando ci si avvicina le animazioni vengono sostituite da una animazione idle (respiro) e l’npc ruoterà su se stesso per guardare il giocatore. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
L’npc ha un bounding box per le collisioni ed un baloon invisibile.
Entrambi sono di default invisibili, ma quando si comincia la conversazione il baloon diventa visibile e viene applicata una texture uguale al dialogo corrente. I dialoghi saranno alla Zelda, ossia non sarà presente un doppiaggio ma solo dei rumori (sbuffi, sbadigli, ringhi ecc) e parlerà SEMPRE e SOLO l’npc. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Quando si entra nell’area del trigger appare una GUI.
Questa GUI serve per indicare al giocatore di premere il tasto A per iniziare il dialogo. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I controlli si svincolano dal player durante i dialoghi.
Durante un dialogo (entrata trigger + pressione A) i controlli si disabilitano, ad eccezione del tasto A per proseguire e del tasto B per uscire dal dialogo. La camera effettua anche una variazione della focale, in questo modo è più vicina ai personaggi ma non è necessario spostarla (per poi riposizionarla alla fine del dialogo). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Premendo il tasto A durante un dialogo il dialogo prosegue
dialogo_nonna ++ baloon.mostra texture numero (dialogo_nonna); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Premendo il tasto B durante un dialogo si esce ed il dialogo viene riposizionato al numero corretto per un successivo inizio
baloon.mostra texture numero (dialogo_nonna_fine); if dialogo > x dialogo = dialogo_ripristina per prossima volta; end if
Alcuni concept realizzati di recente e riguardanti nuove ambientazioni esterne dell’area di gioco, in questi paesaggi saranno ambientate le animazioni introduttive del gioco.
Some new concept arts, realized by our concept artist Mike (in the last image). Theese concepts illustrates how the area outside the palace is. We’ll probably use some of theese for the cinematics.
Quelle che seguono sono due ambientazioni interne, la prima riguarda l’hangar sotterraneo, raggiungibile tramite l’ascensore di carico principale. L’hangar si estende sotto la serra per cui si verificano allagamenti in alcune celle e la vegetazione riesce a penetrare. La luce è parzialmente artificiale, infatti a questa profondità penetra solo una piccola quantità di luce naturale, grazie ad un complesso sistema di specchi. Il giocatore dovrà attivare questo sistema prima di poter procedere nel gioco. La seconda immagine riguarda un ambiente ostile, luogo di riproduzione di alcuni esseri a 6 zampe. Si tratta di alcuni nemici semi organici che si potranno trovare nelle prime fasi di esplorazione.
The following pictures illustrates two new internal areas. The first is the hangar reachable using the main elevator, near the greenhouse. This place is a wet area illuminated with artificial light and a little bit of natural light, thanks to a mechanical system of mirrors. The player has to activate this system before proceding in this area. The second image is the habitat of some semi-organical enemyes. In the firsts explorations the player will have to combat against theese 6 -legs creatures.
L’essere a 6 zampe presenta un mix di rivestimenti meccanici ed escrescenze carnose, spesso ricoperte da peluria. Il sistema per l’ottenimento di questi filamenti pelosi è simile a quello utilizzato in “Shadow Of The Colossus”.
The 6 legged creature is a mix of mechanical shells and meat pieces, sometime covered by fur. We’ll use the fur system used in “Shadow Of The Colossus”. This creature has a biological brain and not a digital one; this is an important aspect for IA system, in fact the intelligence and patience vary considerably.
– IMPORTANTE – Stiamo sviluppando due differenti sistemi di Intelligenza Artificiale [AI] denominati “PlaySys – biobrain_AI” e “PlaySys_digibrain_AI”. Le differenze sono considerevoli, infatti il primo sistema è soggetto a paura, rimorso, rancore, dolore e principalmente tende a processare molte informazioni per volta, concatenandole e generando risultati spesso differenti tra loro. Il secondo sistema è inerte alle emozioni, valuta sempre il proprio stato strutturale, ed è estremamente devoto e patriottico. Il processo di informazioni avviene molto velocemente, ma vengono elaborate una per volta ed i risultati sono molto simili tra loro.
“La gente ritiene che le macchine sono stupide, noi stiamo lavorando su sistemi di AI che provano il contrario” 😉
– IMPORTANT – The “PlaySys – biobrain_AI” have little patience, feel pain, can be scared, have not so much memory and process lot of informations together always in different way. The “PlaySys – digibrain_AI” is very patient, doesn’t feel pain but thinks always about damage percentage, have a mission and doesn’t feel fear, is always honest and patriotic, process one and only one information at time (but very quickly!) and the results are always the same.
“People says that “machine is stupid”, here at PlaySys we are working on AI system to prove the contrary” 😉
L’ultima immagine, non per questo meno importante…anzi! è la foto del nostro concept artist, Mike Bacchin, la mente e la mano dietro a tutti i concept che avete visto e vedrete in KNOSS Sulla sinistra è visibile il programmatore principale, Andrea Benedetti…sempre all’opera 🙂
Last but not least is the photo of our main concept designer, Mike Bacchin, he’s the hand and the head behind theese concepts. On the left is visible our lead programmer, Andrea Benedetti…he’s always working hard!
Dopo aver messo un post su devmaster.net ho ricevuto il contatto di diverse persone, tra le quali un francese, Cedric Guillemet, che lavorava come sviluppatore per Sony PlayStation2 e con alle spalle un titolo commerciale. Cedric mi propose di provare a sviluppare “The Dreamer” con il suo engine proprietario, basato su DirectX 9.0c, con un sacco di possibilità e soprattutto con un plugin di connessione per 3dsMax.
After posting a message on devmaster.net I received a message from Cedric Guillemet, Sony Playstation2’s developer, with a commercial title as background. Cedric suggested me to develop “The Dreamer” with his proprietary engine, based on DirectX 9.0c, and with lot of features, expecially a plugin for 3dsMax.
Iniziarono i primi test di esportazione ed importazione, le texture, l’alpha test, il render sul retro delle normali, il sorting, i sistemi particellari, i controlli, le animazioni con rig, e le GUI. Incredibile ma vero, tutto funzionava alla perfezione, ogni giorno io e Cedric ci incontravamo in chat e discutevamo su nuove funzionalità da integrare, nuovi strumenti ecc. Imparai per l’occasione un po’ di LUA, un linguaggio assai noto oggigiorno, ma abbastanza sconosciuto a quel tempo (se non sbaglio ha avuto un boom clamoroso in seguito a World of Warcraft). I giorni passavano, ed il progetto diventava sempre più particolareggiato, gli ambienti sempre più dettagliati e ricchi di vita.
We started with some tests, we tryed everything: exporters, importers, textures, alpha test, backface rendering, poligon sorting, particle systems, controls, rigged characters animations, sounds and GUIs. Incredible but true, everything was working really fine, and every day me and Cedric were meeting online (he’s French) to discuss and implement new features and new tools in the engine. For this project I learnt a little piece of LUA, a scripting language really common today, but unknown at the period (I’m not sure about, but I think it become really popular after World of Warcraft).
Cedric mi propose di testare il modulo della rete, così iniziammo a discutere sull’effettivo utilizzo e sviluppo di quello strumento. A questo punto del progetto, parteciparono alcune figure professionali allo sviluppo: Andrea Benedetti e Caterina Ferrante. Andrea, studente di ingegneria informatica presso l’università di Verona, metteva a disposizione del team ogni giorno 2 o 3 ore del suo tempo, ed ovviamente operava come programmatore. Caterina, studentessa di scenografia, presso l’università di Venezia, mi affiancava nella realizzazione di bozzetti per gli oggetti dell’ambiente. Si stava così formando, poco alla volta, il primo team di “The Dreamers”!
Cedric suggested me to test his new network module, so we started discussing the effective usage of that. He is an amazing coder, he planned the entire architecture of the Scene Graph and the Network stuffs. At this point, the project enlarged with 2 new members: Andrea Benedetti and Caterina Ferrante. Andrea joined as programmer and offered us 2 o 3 hours of his daily spare time, while Caterina helped me for concept design. The first team behind “The Dreamer” was born! and we all were working online: Cedric form Nantes (France), me from Milan, Andrea from Verona and Caterina from Venice (Italy)
Iniziai a credere sempre più nel progetto, mentre mi sentivo molto limitato dall’utilizzo di UnrealEngine2…non per la sua potenza (eccezionale ed indiscutibile), ma perchè non possedevo l’engine vero e proprio. Utilizzavo una versione dell’editor presente in UnrealTournament e Unreal2 che mi limitava nella flessibilità e anche da un punto di vista legale impediva la distribuzione del prodotto, se avesse avuto successo. Siccome conoscevo molti altri engine, decisi di ripiegare su di essi. Per prima cosa scartai quelli che non disponevano delle caratteristiche di mio interesse; quelli che avevano poca compatibilità con 3dsMax e che obbligavano ad effettuare innumerevoli conversioni degli assets 3D; quelli troppo costosi o limitativi dalle clausule open source.
The project was cool, and envolved me always more, but I was feeling very limited using UnrealEngine2 (not because of it’s amazing and indiscutible power) but because I didn’t had the source of the engine. I was using the version of the editor of Unreal Tournament and Unreal2 that limited me in flexibility and under certain legal aspects about the game distribution if it shoulded have success. Because I knew lot of other engines I tryed them. First, i decided not to use the ones without interesting features, then the ones with limited compatibility with 3dsMax (you know, lot of passage and 3D formats change), I avoided engine that costs too much and the one too much limitative about open source license.
Provai un engine che era alle prime fasi di sviluppo in quell’anno, si chiamava Kaneva, successivamente divenuto una piattaforma MMOG e dal pessimo supporto, provai un engine italiano, l’S2, molto interessante dal punto di vista grafico, ma macchinoso e limitato, testai a fondo le varie versione di Torque Game Engine, TGE e TGEA e mi accorsi della grande potenza per gli esterni e le difficoltà a gestire ambienti interni (il tutto aggiunto ad un pessimo supporto, mascherato dietro a quella che appare essere una community amichevole). Provai il poco indicato RealmCrafter, idTech3-4, Ogre, Crystal Space e innumerevoli altri… Il risultato era una confusione infinita di limitazioni, vantaggi e svantaggi…capii che se avessi voluto ottenere qualche cosa avrei dovuto seguire 2 strade: la prima era quella di acquistare un Engine commerciale, lo stesso UE2 sarebbe andato bene, ma non disponevo certo dei fondi di una software house. La seconda ipotesi era quella di sviluppare un mio engine proprietario, che avrei potuto anche vendere una volta terminato il progetto.
The first I tryed was a new engine, under first stage of development, it was called Kaneva, but successively became a MMOG platform with a very bad support team. The second was an italian engine called S2, very interesting under graphic aspect, but nothing more, in my opinion. I tested deepely the various versions of Torque Game Engine, TGE and TGEA and it was very powerfull in the exterioirs scene, and completely useless in interiors (and a really bad support, that time there wasn’t a manual or a guide or a wiki, everithing was around a massive forum. Before starting selling, I suggest to write at least a list of classes for users, btw…). I tryed the unindicated RealmCrafter, Blitz3D, DarkBasic, idTech3-4, Ogre, Crystal Space and lot more (loosing lot of time, moneys and patience). The result was a real mess, a mixture of limitations and vantages and in that moment i learned that I had only 2 ways: First was the possibility to buy a commercial engine like UnrealEngine, but I didn’t had so many moneys (or people that trusted in my ideas, I was only the young boy with a videogame dream). The second way was the fact of starting coding the engine from scratch and maybe sell it after finishing the project (eheh maybe in 200 years).
Iniziamo dai primi step della realizzazione di “The Dreamer” Il progetto era nato casualmente, come test di UnrealEngine2. Volevo testare le mie capacità di modder e realizzare uno sparatutto diverso dai soliti. Non volevo mostri, zombie, astronavi, bensì volevo pupazzetti buffi, ambienti cartoon e fondamentalmente, uno stile comico/triste. Iniziai a fare un po’ di concept, era il 2005 e le cose erano assai diverse e non avrei immaginato che il progetto avesse preso uno slancio così forte. Realizzai alcuni modelli in 3dsMax 7 (software che uso dalla versione 2.5) e, tramite il formato .ASE, li importai in UnrealEngine2. Approfondii tutto il discorso del texturing e delle collisioni; avevo già una buona esperienza perchè da diversi anni studiavo le varie tecniche facendo pratica con diversi engine. Sulle mie mensole, sui tavoli e nei cassetti si trovavano migliaia di pagine di tutorial di 3dsMax, UnrealEngine, C++, Python, Problem Solving, Trigonometria, software vari, paper di convegni di ATI, nVidia e Matrox, compressori di texture, video, musica, streaming, networking, IA, DOOMED, Radiant, Valve Source, Torque, engine vari open source prelevati da SourceForge.com…insomma c’era di tutto!
The project was born in the 2005, when I decided to realize a particular mod with UnrealEngine2. I wanted something special, without monsters, spaceships, zombies; I was looking for a specific mood, a mixture of fun and sad sensations. I realized some very simple models with 3dsMax 7 (I was using it since version 2.5) and, exporting as .ASE i imported everything in UnrealEngine2. Things started to take life, I expanded collisions and textures for the scene. I had a deep knowledge because in free time, I studied everything about the game development techniques and did some practice with lot of different engines. Over my shelves, on my tables and all around me there were many tutorials regarding 3dsMax, UnrealEngine, C++, Python, Problem Solving, Trigonometry, various 3D packages, paper of ATI, nVidia e Matrox meetings and researchs, texture comressions systems, streaming, networking, AI, DOOMED, Radiant, Valve Source, Torque, and various open source engines, taken from SourceForge.com or buyed….there was everything there inside!
Iniziai a stendere una bozza della storia, di ciò che il giocatore avrebbe dovuto fare, le meccaniche di gioco ecc..questi dati, mesi dopo, sono stati riuniti in un solido documento di Game Design.
I started writing a story too, what the player had to do, game’s mechanics and so on..theese datas, after some months, were stucked together in a solid Game Design document.
I miei studi passati mi hanno lasciato una evidente impronta tecnica che mi ha aiutato parecchio a gestire il progetto: ero in grado di identificare ciò che volevo mantenendo vivi in mente i limiti tecnici…l’unico svantaggio è che sono un pessimo disegnatore a mano libera 😀
The studies path I walked on in past gave me an evident technical mind, that helped me a lot: I was able to identify what I wanted, keeping in mind the technical limits of that years…the only disadvantage is that I’m a really bad sketcher 😀
Continua lo sviluppo di Knoss, la TechDemo è ora in versione 0.7.7 e proseguono tutte le migliorie e funzionalità.
1-Per pima cosa è stata completamente riscritta la classe del giocatore/player, per garantirne l’efficienza e le funzionalità in tutte le situazioni. Nelle precedenti versioni (pre-Ludic@rena) infatti il giocatore era moddo da diversi script concatenati tra loro. Ora la classe ne garantisce la stabilità e la coerenza di funzionamento. 2-Sono state riprogettate e miglirate tutte le collisioni del primo livello. Non vi sono più punti in cui il personaggio si poteva bloccare. Sono state inoltre aggiunte delle migliorie in grado di incanalare il giocatore nelle porte. E’ stata aggiunta anche la gravità, che permette al giocatore di restare fisso da terra e seguire tutti i percorso (ascensori animati inclusi). 3-Presso Ludic@rena sono stati eseguiti nuovi concept (grazie agli spettatori che si sono fermati ad assistere ai nostri “workshops”!). Sono state progettate nuove aree e diverse creature ostili. In particolare queste verranno realizzate a breve e saranno integrate nel gioco.
4-Novità per quanto riguarda le ottimizzazioni dell’engine e nuovi strumenti per la gestione dell’audio, in particolare l’occlusione di emettitori sonori (nascosti da modelli 3D) e l’effetto riverbero/delay realtime. Gli stessi strumenti trovano uso in The Dreamers e i risultati sono davvero notevoli.
5-Nuova mappatura del controller XBox360, ora perfettamente funzionante e d’impatto, grazie all’uso dei diversi sistemi di vibrazione.