The logical step forward from my previous project, the character renderer in HTML5. It's rendered entirely using the same UIS script used in the game. Here's a video of it in action: http://www.youtube.com/watch?v=_E5vJEao ... e=youtu.be In the previous thread I posted I mentioned: "The only problem with using this as like an online CAS/sim viewer that retrieves avatars from a game server would be getting storing the game files (1.5GB, pretty big for a web app!) locally." And yes, I do have to download, extract and store the entire game locally within the web browser using both chrome's FileSystem API and firefox's IndexedDB. I posted the video because this won't be as easy or convenient to test as the model viewer, but here's the app shell for anyone willing to try it: https://dl.dropboxusercontent.com/u/122 ... index.html To run this you will need: The game's setup .cab files. These are downloaded by the game installer or can be downloaded with Fatbag's GetTSO. The webapp cannot and probably will never be able to download the files from the ftp servers, not because XMLHttpRequest does not support FTP but because it doesn't support Cross Origin requests to servers that don't specifically allow them. A local web server, with the cab files in some directory. You'll need to set the header for all requests to include Access-Control-Allow-Origin "*", you can find out how to do that here: http://enable-cors.org/server.html A lot of hard drive space. 3GB of space is required for the whole process, it reduces to 1.5GB after the files are extracted. Even then it is very hard to delete the files because of lack of browser manufacturer attention to persistent storage features so when you want to get rid of it you'll need to clear cache/something along the lines of "static data" When the game prompts you for an URL enter the url of the folder containing the cabs on your localhost server. The process takes a few minutes (downloading and extracting), I did say it wasn't easy! I'm going to try to recreate the city viewer next, so the next thing to work on is TGA image reading. I might try simantics one day, I'm not sure if JS could handle it though.