非游戏方面:
1 熟练掌握Java语言语义语法和J2ME
2 写命令行工具,要精通J2SE的部分API,尤其是IO操作方面,或精通C++的相关内容,或Python等
3 写编辑器,要能熟练掌握 Swing, MFC, VB, Delphi...等其中之一
5 能熟练使用操作系统批处理命令,进行项目编译等 或 掌握ant
6 数据结构和算法,至少能分析问题找出合适的结构和算法,然后翻书。这方面多研究研究好。
7 熟练使用CVS或VSS进行版本控制

一般的2D游戏方面:
1 熟悉游戏编程的各种基本思想和方法,如帧驱动控制,状态机,内存速度优化,碰撞算法,寻路算法,2D贴图优化,资源管理,按键处理,声音处理等等。这方面的东西太多,每个方面都可以好好研究一下。
2 针对各种游戏的处理方法和专用算法,如游戏GUI,各种游戏中的人工智能。这方面的内容也很多很多,而且每个方面也都可以好好研究。(ps:这部分正是程序员好好发挥的地方)
3 需要用什么就学什么。比如要做脚本引擎,去学学编译原理。
4 游戏的感觉。这个很特殊,得多玩游戏,多思考。多玩不是拿到一个游戏把它打穿,得边玩边想是怎么实现的。不断的观察好的游戏,有什么好的做法。
5 。。。。。。

手机游戏特殊的方面:
1 各种手机的各种bug (呵呵,做过的都知道)
2 减容,提速,压内存的方法
3 尽量高效率移植的方法
4 尽量高效率测试的方法

3D游戏方面:
1 精通3D游戏编程的所有基本概念和方法,这是基础
2 用J2ME实现就选一个API吧,M3G或Micro3D
3 要能灵活运用,如果你能白手写个软件引擎就不用说了。否则至少可以将底层API封装成易用的类吧。至少需要实现的是室内引擎,室外引擎,角色动画。这里面就复杂了。。。

网络游戏:
1 得理解网络协议,搞清你的游戏使用的是哪一层
2 J2ME中联网部分的内容
3 网络游戏中需要的同步啊,传递消息啊什么的等等等
4 服务器端:这个我不懂,不过知道得保证1台服务器有2W人同时在线不挂,还得防外挂什么的,难啊。。。