Thursday, 27 December 2012

Le mappe dei Grand Theft Auto in digitale








Ricordate le mappe originali dei Grand Theft Auto che si trovavano nelle confezioni dei giochi? Rockstar ha deciso di pubblicare in formato digitale quelle di Grand Thef Auto III, Vice City e San Andreas. La risoluzione di ogni mappa è abbastanza elevata da permettere una stampa di buona qualità.



Aggiornamento: Dopo il rilascio delle mappe in alta definizione della trilogia di GTA per PS2, Rockstar ha deciso di rilasciare anche quelle di Liberty City Stories e Vice City Stories. Potete trovarle in fondo.








Grand Thef Auto III
















Grand Thef Auto: Vice City
















Grand Thef Auto: San Andreas














 Grand Thef Auto: Liberty City Stories















 Grand Thef Auto: Vice City Stories








Tuesday, 18 December 2012

Screencast: Testing and Refactoring Legacy Code

In this screencast I take a small piece of legacy Java code that contains the most common problems found in much larger legacy code bases. The objective is to first write tests to understand what the code does and then refactor it to make it better. The code contains Singletons, static calls and behaviour that does not belong there. It also has some design issues.

As an advice, I always recommend that we should never "touch" the production code as we retrofit tests, that means, we should not change it typing into the production file. However, as normally legacy code is not written with testing in mind, sometimes we need to change the production code in order to write tests for it. I address this scenario explaining how we can do that in a very safe way.

A common question when developers want to make legacy code better is "Where do we start?" I also address that explaining the how the approaches for testing and refactoring legacy code are the opposite from each other.

Besides a few other things, I also cover the use of code coverage tools to help us testing the code, how often we should be committing, how to fix a possible problem with the design in very small steps and how to stay in the green while refactoring our code.

Last but not least, I show how our tests and production code be easily written in a way that it captures the business requirements.

Although it is a bit long, I hope you all enjoy it.



There are two minor things I forgot to do while doing this exercise. Let me know if you spot it. :)

Monday, 17 December 2012

Recensione Utente: Oddworld Abe's Exoddus - (PSone)














Disponibile per: PSone

Data di uscita: novembre 1998

Genere: Platform

Sviluppatore: Oddworld Inhabitants

Produttore: SCEA


















Recensione inviata da: Jacopo Berti | Inserita il: 17/12/2012








Oddworld Abe's Exoddus è un gioco creato dalla Oddworld Inhabitants, seguito di Oddworld : Abe's Oddysee.





Qui Abe si imbatterà in una nuova missione per salvare ancora altri compagni sfruttati dai Glukkon. Tutto comincia con una visione degli spiriti delle ossa, che chiedono ad Abe di chiudere le miniere Necrum per far si che non venga prodotta la bibita Tempesta D'Anime (SoulStorm Brew in inglese). Il nostro eroe inoltre dovrà affrontare di nuovo altre prove nella parte nativa di questo gioco: visiterà le tombe Mudanchee e Mudomo, che in passato appartenevano ai mudokon nativi che, per colpa degli industriali, lasciarono il territorio in cui vivevano. Solo gli Scrab e i Paramiti vegliano ancora in questi templi. Poi dovrà entrare dentro il Deposito Feeco, uno dei piu grandi centri di stazione ferroviaria di Oddworld, da dove prenderà le strade per lo Spaccaossa e la Baracca degli Slig, governate da Glukkon d'accordo fra di loro per impedire ad Abe di entrare nel vero e proprio stabilimento della Tempesta D'anime.



Il gioco è più lungo rispetto al primo capitolo. E' diviso in 2 CD su PlayStation, dove la prima parte è destinata ai territori più "selvaggi" , mentre la seconda presenta la parte piu "industrializzata".





Le differenze importanti che distinguono il secondo capitolo dal primo sono varie: qui i compagni mudokon possono presentare degli stati d'animo in situazioni diverse (arrabbiato, depresso, cieco, malato, schizzato) e dovremo farli tornare normali usando il famoso Gamespeak (parlato) che presenta nuove azioni, come schiaffeggiare. Nel gioco si potrà bere la famosa bibita che stimolerà ad Abe tremende puzzette esplosive. C'e anche la possibilità di possedere piu personaggi oltre al solo slig (Scrab, Paramite, Glukkon, Slig Volante). E infine troveremo piu oggetti, alcuni mai visti prima.



Lorne Lanning e Sherry McKenna specificano che Abe's Exoddus non fa parte della Quintologia annunciata. Lo considerano solo come un episodio bonus,  infatti si parla dell' "esodo" di Abe (exoddus) e non di odissea (oddysee). Nonostante tutto, il gioco ricevette molte critiche positive da parte dei fans che giocarono al primo capitolo, definendolo "piu difficile, piu lungo ma sempre in stile oddworld". Viene ancora considerato oggi il miglior Oddworld mai creato fino ad ora.



Anche qui ovviamente il finale sarà buono o cattivo a seconda della scelta di gioco che abbiamo deciso.










  • Grafica : 8 - Abe's Exoddus presenta una notevole quantità di particolari ben definiti e vasti paesaggi in 2D che ci possono far immaginare come sia Oddworld. E come se non bastasse i filmati rappresentati in 3D sono piu numerosi.



  • Longevità : 9 - Il gioco è molto piu lungo, diviso in due parti (cd 1 e cd 2 ). Un aspetto che si presenta positivo e non noioso.



  • Sonoro : 8 - Rispetto al primo, qui le musiche sono piu numerose, cosi come i suoni. Ben fatte e rispettano lo stile del luogo.



  • Giocabilità : 8 - Piu difficile del primo, essendo anche piu lungo come detto prima, con l'aggiunta di nuove azioni.



  • Trama : 8 - Molto piu intrigante e intrecciata, dove si scoprono particolari fondamentali per capire il motivo di questa missione.
























Sequel bellissimo , da non farsi scappare , chi ha giocato al primo è obbligato a provare il secondo !


















    DISCLAIMER: Questo articolo è stato scritto da un utente di PlayStation Generation e non dalla nostra Redazione. Le opinioni qui espresse appartengo esclusivamente a questo utente.




    Main menu







    Wednesday, 12 December 2012

    Recensione Utente: Oddworld Abe's Oddysee - (PSone)












    Disponibile per: PSone

    Data di uscita: settembre 1997

    Genere: Platform

    Sviluppatore: Oddworld Inhabitants

    Produttore: SCEA


















    Recensione inviata da: Jacopo Berti | Inserita il: 12/12/2012






    Oddworld Abe's Oddyse e è un gioco creato dalla Oddworld Inhabitants, fondata nel 1994 dai veterani della computer grafica Lorne Lanning e Sherry McKenna.





    Il gioco parla di Abe, impiegato ai mattatoi ernia, il piu grande impianto della macellazione di carne di animali di Oddworld. Qui Abe scopre un segreto che non doveva essere svelato: dato che sono a corto di animali, i capi Glukkon decidono di macellare tutti gli impiegati per creare il nuovo snack che produrrà molti profitti. Perciò Abe scappa dal mattatoio e passa da lavoratore a ricercato.





    Il suo compito è salvare tutti i suoi colleghi mudokon che si trovano li dentro e chiudere il mattatoio per sempre. Però per farlo, il nostro protagonista dalla pelle blu dovrà affrontare varie imprese al di fuori del mondo industriale. Affronterà i vari percorsi di Scrabania, il deserto degli scrab e di Paramonia e l'umida regione dei paramiti. Tutti animali che erano destinati al macello e che si pensassero fossero estinti. Altri nemici che dovrà affrontare spesso sono gli Slig, guardie del corpo dei Glukkon, che uccidono anche chi cerca di scappare. Essi comandano gli Slog, cani feroci che possono essere comandati solo dai loro padroni.





    Abe riuscirà solo a vincere se tu avrai fatto la scelta di gioco giusta. Se no, ti aspetterà un crudele finale.





    Particolarità del gioco è il GameSpeak (parlato). Con questa opzione di gioco, Abe sarà in grado di comunicare con gli altri per riuscirli a salvare. E' la prima volta che un videogioco possiede una caratteristica del genere.





    Il gioco, spiega Lorne Lanning, ha a che fare con un legame fra industria e natura. Vuole imitare la situazione che esiste nel nostro mondo, dove i piu grandi multinazionalisti sfruttano noi lavoratori, certe volte anche in condizioni estreme. Il team di sviluppo Oddworld Inhabitants (OWI) narra cosi le imprese di Abe, una specie di impiegato che prende azione di rivoluzione contro i boss della carne. Per questo tema, essi hanno ricevuto nel tempo molti ringraziamenti e oscar. La serie di Oddworld inoltre, è definita come la "quintologia di Oddworld". Al momento, alcuni giochi verrano prodotti i prossimi anni, per riuscire a raggiungere 5 giochi in totale promessi nel passato. 









    • Grafica : 8 - Il gioco è stato prodotto in 2,5 D , con filmati in 3D. Per i tempi , un gioco del genere su ps1 non era niente male . La grafica presenta inoltre notevoli particolari nelle ambientazioni , molto curate.



    • Longevità : 7 - Specialmente se è la prima volta , un pò di tempo ci vuole, perchè non è un gioco facile : le trappole e gli ostacoli non fanno che rallentare il proseguimento , il chè è veramente coinvolgente.





    • Sonoro : 7 - I suoni e le musiche sono ben fatte, in modo da farci sentire dentro l'ambiente di gioco. Inoltre , le musiche di sottofondo si abbinano perfettamente con le ambientazioni. 



    • Giocabilità : 8 - Le azioni che si possono fare sono diverse e se si sbaglia , si può provare una vera frustrazione. e' uno dei punti di forza di questo gioco, che spinge il giocatore a tentare di nuovo in modo divertente. Possono anche accadere cose inaspettate , ciò divide la monotonia presente.



    • Trama : 7 - Particolare importante è che non si sconfiggerà nessun boss. esatto. tutto si basa su quel che hai fatto , ciò rende anche la storia diversa dalle altre, sempre comunque interessante.

























    Un gioco diverso dagli altri, pietra miliare della prima Playstation, da non perdere!


















      DISCLAIMER: Questo articolo è stato scritto da un utente di PlayStation Generation e non dalla nostra Redazione. Le opinioni qui espresse appartengo esclusivamente a questo utente.




      Main menu







      Monday, 10 December 2012

      The Wrong Notion of Time

      No one wakes up in the morning and say "Today I'm gonna screw up. Today I'm gonna piss my boss and all my team mates off writing the worst code I could possibly write". Well, there are always exceptions but normally no one does that. If that is the case, how come Agile projects are now failing? How come do we still have the same old problems?

      A Technical Debt Story

      Some time ago I was in this project and one of the developers chose to work on a brand new feature. For the implementation of this new feature, we did not need to touch any of our existing code, besides very few things just to wire the new feature into the application. After a day or so, I offered to pair with him. Naturally, since I had just joined him, I asked him to give me an overview of what the feature was about. He promptly explained it to me and I asked him to show me where he was so we could continue. After he finished showing the code to me I made a few observations since it was not clear to me that his code was reflecting what needed to be done - according to his previous explanation. Basically, the language the he used to explain me the business feature was not in sync with the language that he had used in the code and I could also see some code that was not really necessary for the implementation of that feature. I also noticed that there were no tests. When I asked him about that he said _It is working now and I may need that extra code in the future. Let's add this refactoring you are proposing and the unit test to the technical debt backlog. I need to finish this feature. How crazy is that? That was a brand new feature. We should be reducing technical debt as we went along instead of adding more of it. However, this developer somehow felt that it was OK to do that. At the end of the day we had a technical debt backlog, didn't we? That was supposedly an Agile team with experienced developers but somehow, in their minds, it was OK to have this behaviour. Perhaps one day someone would look at the technical debt and do something about. Possibly. Maybe. Quite unlikely. Nah, will never gonna happen.
       
      But we want to do the right thing

      But we all want to do the right thing. We do not do these things on purpose. However, over the time, I realised that we developers have a wrong notion of time. We think we need to rush all the time to deliver the tasks we committed to. Pressure will always be part of a software developer life and when there is pressure, we end up cutting corners. We do not do that because we are sloppy. We normally do that because we feel that we need to go faster. We feel that we are doing a good job, proving the business the features they want as fast as we can. The problem is that not always we understand the implications of our own decisions.
       
      A busy team with no spare time

      I joined this team in a very large organisation. There were loads of pressure and the developers were working really hard. First, it took me days to get my machine set up. The project was a nightmare to configure in our IDEs. We were using Java and I was trying to get my Eclipse to import the project. The project had more than 70 maven projects and modules, with loads of circular dependencies. After a few days, I had my local environment set. The project was using a heavyweight JEE Container, loads of queues and had to integrate with many other internal systems. When pairing with one of the guys (pairing was not common there but I asked them if could pair with them) I noticed that he was playing messages in a queue and looking at logs. I asked him what he was doing and he said that it was not possible to run the system locally so he had to add loads of logs to the code, package, deploy the application in the UAT environment, play XML messages into one of the inbound queues, look at the logs in the console and try to figure out what the application was doing. Apparently he had made a change and the expected message was not arriving in the expected outbound queue. So, after almost twenty minutes of changing the XML message and replaying it into the inbound queue, he had an idea of what the problem could be. So he went back to his local machine, changed a few lines of code, added more logs, changed a few existing ones to print out more information and started building the application again. At this point I asked if he would not write tests for the change and if he had tests for the rest of the application. He then told me that the task he was working on was important so he had to finish it quickly and did not have time to write tests. Then he deployed the new version of the application in UAT again (note that no one else could use the UAT environment while he was doing his tests), played an XML message into the inbound queue and started looking at the logs again. That went on for another two days until the problem was fixed. It turned out that there were some minor logical bugs in the code, things that a unit test would have caught immediately.
       
      We don't have time but apparently someone else does

      Imagine the situation above. Imagine an application with a few hundred thousand lines. Now imagine a team of seven developers. Now imagine ten of those teams in five different countries working on the same application. Yes, that was the case. There were some system tests (black box tests) but they used to take four hours to run and quite often they were broken so no one really paid attention to them. Can you imagine the amount of time wasted per developer per task or story. Let's not forget the QA team because apparently testers have all the time in the world. They had to manually test the entire system for every single change in the system. Every new feature added to the system was, of course, making the system bigger causing the system tests to be even slower and QA cycles even longer. Debug time was also getting bigger since each developer was adding more code that all the others would need to debug to understand how things work. Now thing about all the time wasted here, every day, every week, every month. This is all because we developers do not have time.

      Dedicated Quality Assurance teams are an anti-pattern. Testers should find nothing, zero, nada. Every time a tester finds a bug, we developers should feel bad about it. Every bug found in production is an indication of something that we have not done. Some bugs are related to bad requirements but even then we should have done something about that. Maybe we should have helped our BAs or product owners to clarify them. By no means I am saying that we should not have testers. They can be extremely valuable to explore our applications in unexpected ways that just a human could do. They should not waste their time executing test plans that could be automated by the development team.

      Business want the features as soon as possible and we feel that it is our obligation to satisfy them - and it is. However, business people look at the system as a whole and so should we. They look at everything and not just the story we are working on. It is our job to remove (automate) all the repetitive work. I still remember, back in the 90ies, when debugging skills was a big criteria in technical interviews. Those days are gone. Although it is important to have debugging skills, we should be unpleasantly surprised whenever we need to resort to it and when it occurs, we need to immediately address that, writing tests and refactoring our code so we never need to do that again. 

      Using time wisely

      Our clients and/or employers are interested in software that satisfy their needs, that works as specified and is easy to change whenever they change their minds. It is our job to provide that to them. The way we go about satisfying their expectations, normally, it is up to us. Although they may mention things like automated testing and Agile methodologies, what they really want is a good value for their money when it comes to the investment that they are making in a software project. We need to use our (their) time wisely, automating whatever we can - being tests or deployment procedures - instead of thinking that we may not have time to do it. We can always quantify how much time we are spending in repetitive tasks and even get to the extend of showing them how much time is being spent over a period of time in those activities. Before implementing any new feature or task, we should spend some time preparing our system to accept the changes in a nice way, so we can just _slide that in_ with no friction, and making sure that whatever we write can be easily tested and deployed. When estimating our work, we should always take this into account as **part of the time** that will take us to do it instead of having the false impression that we will be going faster if we treat them as a separate task since, chances are, they may never get done and the whole time will be slowed down because of that. The less time we waste manually testing (or waiting for a long automated test suite to run), debugging, dealing with a huge amount of technical debt, trying to get your IDE to work nicely with your fucked up project structure, or fighting to deploy the application, the more time we have to look after the quality of our application and make our clients happy.  

      Note: The teams I mentioned above after a lot of hard work, commitment, support from management and a significant amount of investment (time and money) managed to turn things around and are now among the best teams in the organisation. Some of the teams managed to replace (re-write) an unreliable in-house test suite that used to take over three hours to run with a far more reliable one that takes around 20 minutes. One of the teams is very close to achieve a "one-button" deployment and has an extensive test suite with tests ranging from unit to system (black box) that run in minutes and with code coverage close to 100%.

      Recensione Utente: Alundra - (PSone)












      Disponibile per: PSone

      Data di uscita: 05 giugno 1998

      Genere: Azione/Avventura

      Sviluppatore: Matrix Software

      Produttore: Working Designs

      Pubblicazione: Psygnosis
















      Recensione inviata da: Raffaele Merola | Inserita il: 10/12/2012







      In questo gioco, uscito nel lontano 1998 su PSx con la successiva fama di "Zelda Sony" per le sue meccaniche simili al colossal Nintendo, vestiamo i panni di Alundra, un giovane ragazzo con la capacità di entrare nei sogni delle persone, mentre il soggetto interessato dorme. I sogni lo guidano ad Inoa, piccolo villaggio costiero, abitato da un pugno di gente socievole ed accogliente ma al contempo tormentata da strani incubi che hanno il potere di uccidere. In seguito scopriremo che i sogni sono inviati da un demone oscuro, Melzas e il nostro compito e' di ucciderlo. 



      Sotto il lato grafico il gioco è molto bello con una grafica in 2D molto retrò, anche il sonoro non è male e la trama, anche se lineare, è abbastanza avvincente.









      • Grafica 7: Può sembrare antiquariata e "pesante" come grafica, ma lo stile 2D fa sempre il suo figurone, soprattutto su action-rpg come questo. 

      • Sonoro 7,5: Nulla di speciale, ma alcune Ost sono sublimi e caratterizzano bene il gioco

      • Giocabilità 8: E' il punto di forza di questo gioco per i nostalgici che amavano i vecchi zelda dell'era Snes.

      • Longevità 5: Il gioco è abbastanza corto e non ci sono Quest secondarie.

      • Trama 6: Il solito paladino della giustizia che dovrà sconfiggere il demone di turno, roba già sentita insomma, ma il fatto che la trama si incentri sui sogni fa guadagnare punti a questo gioco.





















      Non ha niente di speciale questo titolo, ma manco niente che non vada...Una vera chicca per i nostalgici dell'era SNES!













        DISCLAIMER: Questo articolo è stato scritto da un utente di PlayStation Generation e non dalla nostra Redazione. Le opinioni qui espresse appartengo esclusivamente a questo utente.




        Main menu







        Saturday, 8 December 2012

        Recensione Utente: Test Drive 4 - (PSone)



















        Disponibile per: PSone

        Data di uscita: novembre 1997

        Genere: Gioco di guida

        Sviluppatore: Pitbull Syndicate

        Produttore: Accolade


















        Recensione inviata da: Francesco Poggiolini | Inserita il: 09/12/2012





        Dopo il grande successo del precedente “Test Drive III: The duel” su Ms-DOS nel 1990 e dopo anni e anni di silenzio (1997) la software house inglese Pitbull Syndicate e la Accolade si sono date da fare per creare anche questo nuovo capitolo. Test Drive 4 è stato rilasciato su Sony Playstation e PC nel 1997.







        Gameplay:


        Le modalità in Test Drive 4 non sono poche, il gioco include: gara singola, campionato, challenge ed è anche possibile fare un “Drag race”.





        Veicoli:


        Il parco macchine non è molto vasto ma sono presenti sia auto sportive moderne che auto antiche degli anni ’70, 14 veicoli di cui 4 da sbloccare.





        Tracciati:


        In Test Drive 4 sono disponibili 6 tracciati:


        • Keswick, Inghilterra

        • San Francisco, USA

        • Bern, Switzerland

        • Munich, Germany

        • Kyoto, Japan

        • Washington D.C., USA








        E' inoltre possibile sbloccare grazie ai campionati la possibilità di gareggiare i tracciati in senso opposto oltre che con diverse condizioni atmosferiche. Presente anche la possibilità di partite cooperative via link fino a 2 giocatori dalla vostra console insieme ad un’altra console.











        • Grafica: 7 - Niente di speciale anche se le texture sono abbastanza curate, sia quelle dell’ ambiente che quelle dei veicoli.





        • Giocabilità: 5 - Molto spettacolare quando si va ad alta velocità e si è inseguiti dalla polizia, se solo la guida non fosse così mediocre…





        • Longevità: 7 - Non molto longevo, ma offre divertimento con le modalità presenti nel gioco.




















        Nulla di speciale, un gioco che non è ne carne e ne pesce, la grafica può risultare buona, ma la giocabilità è molto macchinosa ed è complicato mantenere il controllo del volante, gioco consigliato solo agli amanti del genere.










        PRO 


        • Modalità varie e divertenti.

        • Traffico ed inseguimenti assicurati.






        CONTRO




        • Parco auto non molto vasto.

        • Presenti solo 6 tracciati.

        • Guida macchinosa e complicata.












          DISCLAIMER: Questo articolo è stato scritto da un utente di PlayStation Generation e non dalla nostra Redazione. Le opinioni qui espresse appartengo esclusivamente a questo utente.




          Main menu