in

dotNet Umbria

Il primo User Group in Umbria sul mondo .Net

NHooligans

Sì, va bene, sviluppiamo un software insieme…ma quale?

Ciao a tutti. Riprendo il primo post in cui si è parlato di NHooligans dalla sezione Eventi del Forum per mettere subito qualcosa qui dentro prima che Paolo si arrabbi e chiuda il Blog…

Premetto di nuovo (ed è la terza volta…basta!) che lo scopo del progetto in questione non dovrebbe essere, almeno a mio avviso, quello del software da realizzare in se', quanto piuttosto un'opportunità per sperimentare metodologie, architetture e tecnologie che favoriscano lo sviluppo collaborativo anche all'interno di un gruppo di sviluppatori che non condividono un luogo di lavoro "fisico", bensì uno spazio virtuale (termine che sembra uscito dalla bocca di uno di quegli informatici degli anni 60 che stavano davanti ai calcolatori con il camice) rappresentato da un misto di sistemi informativi quali email, forum, blog, controllo sorgenti, ecc.

In breve, l'idea per il soggetto dello sviluppo è quella di un gioco on-line ispirato al celeberrimo (e antichissimo) "core wars" (la guerra dei nuclei, nella traduzione italiana di "Le Scienze"), ossia di un gioco in cui i concorrenti sono rappresentati da agenti autonomi il cui comportamento è stabilito da programmi realizzati da giocatori "umani" che (indirettamente) concorrono al raggiungimento di un obiettivo. Anche se molti sono i giochi che si sono ispirati a core wars negli anni a venire (p-robots, c-robots e ants per citarne alcuni), il capostipite resta ancora l'unico caso in cui i programmi che si sfidano sono al contempo avatar e software di controllo degli avatar stessi: un'idea a mio parere di rara genialità (anche se, a quanto dice wikipedia, pare che Dewdney, l'autore del gioco, si sia in realtà ispirato ad un altro gioco chiamato Darwin, ideato nei laboratori della Bell negli anni 60, ma a noi che ce frega?).

Ovviamente, essendo qui tutti appassionati di sviluppo .NET (qualcuno anche perché non ha una ragazza), l'idea è quella di realizzare un sistema in cui degli oggetti .NET, compilati ed ospitati in un assembly, comandino degli agenti autonomi che si sfidano in una sorta di "arena" a suon di..."mazzate". Mi spiego meglio: l'ambientazione di riferimento sarebbe quella, sicuramente italiana almeno quanto la pizza ma anche un po'inglese, di due tifoserie avversarie che si gonfiano come zampogne nel tentativo di raggiungere una meta (che nel caso reale manca, ma questo dimostra ancora una volta che l'informatica è un mondo estremamente più concreto di quello reale) rappresentata da una bandiera (della tifoseria avversaria, si intende), da conquistare e, presumibilmente, in seguito bruciare sghignazzando. Proprio per questo non mi dispiacerebbe se il progetto si chiamasse "NHooligans", anche se è un nome un po' lassativo. In alternativa potremmo usare, come fa mamma Microsoft, il nome di qualche frazione locale, tipo "Ramazzano", ma forse è meglio NHooligans...

Lo schema del gioco dovrebbe essere questo: si sfidano due tifoserie, ognuna rappresentata da N agenti autonomi, detti "hooligan" (ironicamente al contempo tifosi e agenti, ah ah), ciascuno dei quali viene "pilotato" da uno di M programmi, con la possibilità di attribuire teoricamente anche un programma differente per cisacun hooligan. Ciascun hooligan è rappresentato nell'arena di gioco da un'area circolare che ne rappresenta, per così dire, l'ingombro. Gli hooligan, amici o nemici, non possono "compenetrarsi", ossia i loro "cerchi" non possono sovrapporsi. Ogni hooligan viene dotato inizialmente di una riserva di energia (ad es. 100 unità), che viene decrementata sia per effetto del muoversi (per più tempo e più forte corre, più si affatica) sia, soprattutto, per effetto delle botte che prende. Inoltre, l'energia residua di un hooligan determina la velocità massima con cui può muoversi e i danni che fa quando picchia un avversario. Ogni qualvolta due hooligan avversari si trovano a distanza minima (la somma dei due raggi, ossia quando si toccano) essi si sottraggono punti energia in ragione dei loro rispettivi stati di salute (uno sano picchia di più di uno già malconcio). Quando l'energia di un hooligan arriva a zero, questi viene ovviamente "rimosso" dall'arena. Se un hooligan si trova a contatto con più avversari, questo subirà un danno maggiore della somma dei danni dei singoli avversari, per effetto di una "sinergia" che spesso manca nei film tipo quelli con Bruce Lee in cui , anche se sono 100 contro 1, i cattivi sfidano il protagonista uno per volta, per onestà. Se un hooligan riesce a raggiungere il punto dell'arena che contiene la bandiera avversaria, la sua squadra vince e totalizza i punti corrispondenti alla somma dei punti energia degli hooligan ancora in gioco.

Anche se seguiranno altri dettagli nei prossimi post, una prima idea che vorrei proporre è quella di utilizzare nei programmi di controllo degli hooligan delle "primitive" complesse del tipo "segui quell'holigan", oppure "voi 4 rimanete vicini", oppure "evita quell'ostacolo", oppure "vigila in questa zona", oppure (e più spesso) "scappa". Per far questo potremmo utilizzare il framework NSteer, sviluppato da Jonathan de Halleux a partire dal lavoro originale di Craig W. Reynolds della Sony, che per primo ha ideato e sviluppato gli algoritmi "comportamentali" di cui sopra, senz'altro motivato dalla partecipazione a diversi progetti di sviluppo per software playstation.

Se ne avete voglia, potete intanto dare un'occhiata al progetto NSteer (dalla solution togliete il progetto di test e lanciate il demo winform per farvi un'idea) e, perché no, anche alla pubblicazione originale (del 1999) di Craig W. Reynolds e ai relativi demo animati.

Only published comments... Jun 11 2008, 07:47 AM by maiorfi
Filed under:

About maiorfi

Sopravvivo dal 1971. Pigio per la prima volta i tasti di gomma del Sinclair Spectrum nel 1982, grazie all'acquisto presso la famosa G.B.C. di Temperini in Via Pellas da parte di mio padre. Entro in possesso di un Commodore Amiga 1000 in una anno che ricordo a fatica tra il 1986 e il 1987. Inizia il quegli anni la sperimentazione della frustrazione per la difficoltà di utilizzo delle API C per lo sviluppo di applicazioni integrate nel sistema operativo "Workbench" (ispirato al sistema Macintosh), un po' dovuta anche agli unici 2 compilatori presenti sul mercato: Aztec e Lattice, amichevoli come il software per la perforazione delle schede. La frustrazione veniva lenita parzialmente solo dalle ore trascorse giocando a KickOff di Dino Dini. Finalmente nei primi anni 90 approdo al mondo dei PC, con un 386sx assemblato della Olidata. In quegli anni il Turbo Pascal prima e il Turbo C dopo riescono a far sembrare lo sviluppo un esperienza tutto sommato divertente. Nel 1993 installo per la prima volta una copia (ovviamente abusiva) di Windows 3.1, con la quale inizio a sperimentare, grazie anche alla strepitosa libreria OWL di Borland integrata in "Borland C++" (primo ambiente object-oriented degno di questo nome), lo sviluppo di applicazioni desktop (anche se a quei tempi l'espressione "desktop" era sconosciuta e superflua, visto che tutte le applicazioni windows avevano di fatto un'interfaccia utente). Negli anni a seguire il mio interesse si focalizza su Visual C++, MFC, COM, ATL e su tutto quanto oramai inizia ad orbitare intorno alla piattaforma di sviluppo Microsoft "unmanaged", tanto che nel 1996 impronto la mia tesi di laurea, svolta con e per la società Eles di Todi, interamente su COM/OLE/ActiveX, ed in particolare sulle architetture per l'integrazione binaria dei componenti software. Credo che la tesi abbia effettivamente totalizzato 2 lettori, me e il mio revisore compresi. Dopo la laurea ed un anno di militare speso smanettando in Clipper presso il Nucleo Elaborazione Dati del Distretto Militare di Perugia (allora gestito dal famoso Colonnello Ansalone e dal famigerato Maresciallo Venditto), vengo assunto dalla (oramai defunta) Sinfor s.r.l. come lead (and only) developer. Ricordo tanti piccoli progetti Visual C++/MFC e VB6, qualcuno fatto male e qualcuno fatto peggio, ma complessivamente utili al loro scopo: far sì che io riuscissi a millantare un'esperienza ed una capacità che non avevo, contribuendo a farmi guadagnare uno stipendio che non meritavo. Nel 1999 lascio la Sinfor (anticipando il termine dei 2 anni del contratto di formazione!) per fondare la Innovactive Engineering s.r.l. insieme ai miei 3 soci (a dire il vero uno dei 3 soci è cambiato qualche tempo dopo, ma a chi importa?). Stentiamo un po' ad affrontare il seppur ricchissimo ed apertissimo mercato umbro ma riusciamo alla fine a consegnare il nostro primo prodotto: un gestionale per l'amministrazione di una società che opera nel campo assicurativo/assistenziale. Non è un successo né in termini economici né in termini di soddisfazione professionale (ad eccezione di quanto concerne la realizzazione del più lento e inaffidabile ORMapper della storia) ma da qualcosa bisognava pure cominciare. Negli anni intorno al 2001-2002 ci spostiamo all'interno della sede di Carsoli del Sole24Ore, coinvolti in qualità di consulenti per lo sviluppo con ASP/COM+/VB6/VC++. E' il periodo delle "vacche grasse" (dovuto alla famosa bolla speculativa della new economy), purtroppo mai più ripresentatosi negli anni successivi. Rientrati stabilmente a Perugia, dal 2003 in poi iniziamo un'attività più propriamente "aziendale" e cresciamo fino a raggiungere quota 7, grazie alla acquisizione delle nostre tre colonne portanti: Fabrizio, Valerio e Gianluca.
dotNet Umbria 2007-2008
Powered by Community Server (Commercial Edition), by Telligent Systems