\chapter{External packages} Some external packages that are not part of the Java Standard Development Kit were used in this project. \section{StretchIcon} StretchIcon enabled the resize of the Room illustration according to the window's size in the rich Swing GUI, keeping a correct ratio. \section{Guava} Guava, from Google, contains several collections, caching, primitives support, concurrency, annotations and string processing utilities. \section{Lombok} Lombok helped avoiding writing dozens of getters and setters by replacing them with shorter annotations. \section{Intrinsic Map} As Items were already containing there names in a field, HashMap were redundant. IntrinsicMap and the Mappable interface were created to avoid this redundance. \section{Google Web Toolkit} The Google Web Toolkit was used to create the web version of the game. It permitted the compilation of Java sources to Javascript code executable directly inside a web browser, without requiring the Java Virtual Machine. \section{JSON Simple} JSON Simple was used to implement the save and load functionalities by enabling the serialisation of the game datas into JSON Objects. \subsection{rejava.io} As some packages required by JSON Simple were not compatible with GWT, the standard Java StringReader and StringWriter classes were partially rewritten.