After studying game development and C++ academically for two years, I was lucky enough to carry out my work placement at SN Systems (Sony Computer Entertainment Europe). My year at SN Systems was divided between three core areas, the Debugger, Compiler and Tuner teams.
On the Debugger team I was mainly responsible for developing a generic branching test suite (written in C#) to thoroughly test the branching capabilities of the SN Systems Debugger. The system I designed allowed members of the Debugger team to write hardware agnostic branching tests (written in XML) which were translated by my application into target specific branching instructions (PPC/MIPS/Other), and finally injected and executed on the target hardware at runtime. The results generated by the tests were integrated into the CruiseControl.NET build system.
On the Compiler team I began the interesting challenge of porting Motorstorm Arctic Edge between the GCC and SNC C++ compilers. After this I began working directly on the SNC Compiler source code, rewriting the internal trace/logging system. This involved writing my own lightweight XML library and re-factoring the existing internal logging system to write more structured hierarchical logging data. I also developed a complementary GUI tool which read in the new log data, allowing for searching, tree traversal, node highlighting, name demangling and also produced visual graphs which could be exported to Jpeg/PNG. I was also tasked with ensuring the GUI application ran smoothly on a popular linux distribution.
The most rewarding project I worked on involved the SN Systems Tuner application. I first redesigned a small section of the frame capture GUI to make syscalls and thread switches more visible which involved a lot of prototyping and discussion. I then moved on to write a bottleneck detection module in C++ which analysed PS3 target capture data and integrated warning icons/tooltips into the frame capture data, allowing the user to pinpoint the exact location of any potential problems. The work I carried out went on to be fully integrated into the latest version of SN Systems Tuner, currently available on DevNet.
The year spent working at SN Systems undoubtedly pushed my understanding of both hardware and software development and advanced my C++ and assembly language skills greatly. I was asked to conduct regular presentations and live demonstrations of my work throughout the year which also helped boost my confidence and communication skills. Towards the end of my placement I was offered a full-time position at SN Systems which I declined in order to return to my studies.