Pré-requisitos
Para criar um jogo com a Oficina, recomendo que você tenha conhecimentos básicos de C/C++, e alguma noção a respeito de programação orientada a objetos e gerenciamento manual de memória nestas linguagens. Caso vá se aventurar com scripting, recomendo conhecimentos nas linguagens Scheme (um dialeto de Lisp; mais especificamente a implementação GNU Guile) e Lua (amplamente usada na indústria de jogos como uma linguagem de script rápida, fácil e simples); você terá a opção de escolher qual linguagem usar mais à frente, nos capítulos sobre Scripting. Porém, recomendo a linguagem Scheme por uma gama de razões, e também por crer que uma linguagem mais voltada para um paradigma declarativo ou funcional possa melhorar a forma como você programa. Além disso, apesar da aparência intimidadora dos dialetos de Lisp, são linguagens que, ao escrever seu código, ou quando se tem experiência na linguagem, tornam-se muito mais sucintas e fáceis de acompanhar um raciocínio. Pretendo exemplificar mais à frente.
Na verdade, o design da Oficina foi feito de forma a possibilitar que o programador não precise de conhecimentos tão profundos nestes conceitos; a maior parte das operações são generalizadas a partir das especificações das classes, e guardadas em um único namespace. Além disso, a maioria -- se não todas -- as estruturas possuem um prefixo "of", para ajudar na compartimentalização do seu código e do código da engine. Mesmo o código da Oficina2 é totalmente NÃO-retrocompatível com a Oficina 1.3 por uma série de razões, incluindo o uso abusivo de ponteiros de memória na versão anterior. Oficina2 segue a filosofia de que fazer uma boa gerência de recursos no seu jogo é algo essencial e estimula boas práticas de programação em geral, mas soma, ao conceito da versão 1.3, a ideia de que não é preciso dificultar o código do seu programa para fazer esta tarefa de forma eficiente.