Вопрос тянет на сугубо философский и бесконечный
Ковыряние клиента
Без этого Вы эмулятор даже не начнете
- Понимание принципов работы отладчика
- OllyDbg
- IDA
- Assembler
- Crypto (самые разнообразные системы криптозащиты, начиная от XOR-преобразований, заканчивая RSA и другими методами шифрования)
- Знание принципов работы известных упаковщиков и протекторов (в основном это, конечно же, Themida, но не исключены и другие). Хотя зачастую досаточно наличия умения и инструментария для их снятия.
Архитектура серверной части
Далее все заивсит от того, на каком языке Вы планируете писать, какую мощность и скорость работы (а следовательно, и объем аудитории на сервере) хотите получить.
- Отличное знание целевого языка программирования (именно отличное, т.к. Вы, все же, собираетесь писать с нуля, а не дописывать "квестики")
- Хорошее знание и понимание принципов работы СУБД
- Некоторый опыт в построении высоконагруженных серверных систем (понимание того, что можно, а главное - нужно, заставить работать быстрее и другие нюансы)
- Относительно данных: знание одного из известных скриптовых языков (скорее с динамической типизацией по типу Python, JavaScript, LUA и т.п.), умение прикручивать их к ядру; HTML, XML, и даже Shell/AWK.
- Можно еще прилепить сюда Web-часть. Тогда еще и знание какого-нибудь популярного Web-ориентированного языка типа PHP.
Вообще, даже людям с большим опытом (5 и более лет) программирования сложно конструировать подобные системы. Обычно это лучше получается у команды опытных спецов.