
移植 J2ME 游戏,意思是把一个你拥有的 Java ME MIDlet 重建到今天仍然存在的硬件上。Java ME 运行时已经从消费设备上消失,所以原来的 JAR 只能在 J2ME Loader 或 FreeJ2ME 这类模拟器里运行。
这些游戏是在如今已不适用的约束下做出来的。屏幕常见是 128 乘 128 或 176 乘 220。堆内存往往不到一兆。整款游戏以几百 KB 的 JAR 发布,旁边配一个 JAD 描述文件。输入是带软键的数字键盘。代码面向 MIDP 2.0 和 CLDC 1.1,音频和 3D 的可选 API 则因机型而异。
这些约束每一条都会变成移植里的一个设计决定。像素美术又小又精确,用整数缩放放大非常漂亮。代码小到一天就能读完。游戏循环默认是固定的低帧率。Summer Engine 把它重建成一个归你所有的项目,并导出到桌面、移动、网页和主机。
把你的内容从 JAR 里取出来
JAR 就是一个 ZIP 归档。解开你自己的文件,PNG 精灵、瓦片地图、关卡数据,以及任何 MIDI 或 WAV 音频,通常都明明白白地摆在里面。编译好的类可以反编译出来阅读原本的逻辑,对你自己写的或有明确许可的游戏这么做是正当的。也留着 JAD 文件,因为它记录了 MIDlet 的名称、版本,以及游戏面向的设备配置。那能告诉你原本的屏幕尺寸和 API 假设。
屏幕尺寸是最大的变化
176 乘 220 的竖屏画布,只有现代屏幕的一小块。早点在两条路里做选择。保留原始分辨率,用整数缩放和最近邻过滤把它放大,这能让美术分毫不差,代价是加黑边。或者用重新制作的美术按更高分辨率重建,这更适合商业化的重新发行。无论哪条路,都要让像素网格诚实,因为这些精灵是一个像素一个像素画出来的,任何柔化都会毁掉它们。
键盘输入变成触摸或手柄
原作用数字键移动,用 5 触发动作,用两个软键操作菜单。现代目标一样都没有。在移动端,把方向集合映射到滑动或一小片触摸布局上,并让动词数量保持很少,这很容易,因为这类游戏很少超过三个动作。在桌面上,映射到键盘和手柄。把软键菜单栏重建成正常界面,而不是照搬两键的老规矩。
默认极小硬件的逻辑
Java ME 的游戏循环按帧计数,帧率又低又不稳,常常是每秒 15 到 20 帧,还配着手写的 sleep 调用。把它转换成时间增量,让游戏在 60 帧及以上表现一致。为了避开缓慢浮点而使用的定点数学,可以改成普通浮点数。Record Store 持久化变成普通存档文件。厂商专有的音频或振动 API,换成引擎的标准功能。
一款老 Java 手机游戏如今能去哪里
最明显的目标是移动端,在那里游戏终于有富余的内存,以及一块远超它当年预期的彩色屏幕。网页也很合适,因为这类游戏体积很小、在浏览器里瞬间加载,而那里唯一被排除的语言是 C#,所以 GDScript 或 C++ 就能覆盖。如果补上更多内容、选项和手柄支持,Steam 也行得通。很多 J2ME 时代的游戏是被硬件饿着的好设计,而移植修的正是这一点。
常见问题
我能在现代手机上跑 J2ME 游戏吗?
只能通过 J2ME Loader 或 FreeJ2ME 这类模拟器。今天的手机都不带 Java ME 运行时。要做成可分发的产品,就重建这款游戏,而不是模拟它。
我能从自己的 JAR 里提取美术和代码吗?
能。JAR 是 ZIP 归档,所以精灵和音频可以直接解出来,类文件也能反编译以还原逻辑。只对你自己制作或有明确许可的游戏这么做。
原本那么小的分辨率要怎么处理?
要么保留原生分辨率,用整数缩放和最近邻过滤放大;要么按更高分辨率重新制作美术。不要对一个像素一个像素画出来的精灵套柔化滤镜。
Java 代码能迁移吗?
不能作为可运行代码迁移。MIDP 和 CLDC 的类在 Java ME 之外不存在。逻辑要用 GDScript 或 C++ 重写,并把反编译出的源码当作原本行为的精确规格说明。
那个年代的老手机游戏归谁所有?
往往归委托制作的发行商或运营商,而不是做它的工作室。Java ME 游戏经常是外包作品,分发权握在别处。规划商业发行之前先确认权利。
J2ME 移植在商业上值得做吗?
补上内容和现代便利之后可以。这类游戏当年短是被迫的。扩展设计、加上存档和选项,再发到移动和网页,对一款背后确有受众的作品来说是现实的路。
继续探索
用 Summer Engine 创作的更多方式
AI 游戏制作器
用语言描述就能制作完整 2D 和 3D 游戏的中心。
打开Make a game from a picture and the idea it holds
Bring a picture and Summer Engine builds a game inspired by its look and concept: scenes, gameplay, and matching art in one project you own.
打开Port a 3DS game by rebuilding it, not converting it
Porting a 3DS game means rebuilding a game you own as a new project that runs on platforms that still sell games. There is no file converter for this.
打开Port a Nintendo DS game to platforms that still sell games
A Nintendo DS port is a rebuild of a game you own. The stylus design is the asset worth keeping, because touch is native on every phone.
打开Port a Wii game and decide what happens to motion control
Porting a Wii game means rebuilding a title you own for hardware without a Wii Remote. The pointer and the motion gestures need a new input design.
打开Port a Wii U game off the smallest console audience
Porting a Wii U game means rebuilding a title you own for platforms with a single screen. The GamePad layer is the part that has to be redesigned.
打开Port a PSP game and give it a second analog stick
Porting a PSP game means rebuilding a title you own. The camera design is the biggest change, because the PSP had one analog nub and no right stick.
打开Port a PS Vita game before the platform disappears entirely
Porting a PS Vita game means rebuilding a title you own. The rear touch pad is the one input with no modern equivalent.
打开Port a GameCube game from 480p to a modern project
Porting a GameCube game means rebuilding a title you own. The analog triggers and fixed camera design are the parts that need deliberate decisions.
打开平台游戏模板
从现成的项目开始,描述你想要的改动即可。
浏览浏览所有游戏模板
从现成的项目开始,描述你想要的改动即可。
浏览