# 移植 J2ME 游戏

> Java ME 游戏跑在 176 乘 220 的屏幕上，配数字键盘和几百 KB 的堆内存。移植一款，主要就是重新缩放加重新设计。

- URL: https://www.summerengine.com/zh/port-a-j2me-game
- Keyword: 移植 J2ME 游戏
- Related: https://www.summerengine.com/zh/porting

移植 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 把它重建成一个归你所有的项目，并导出桌面版本发布到 Steam 和 itch.io。

## 把你的内容从 JAR 里取出来

JAR 就是一个 ZIP 归档。解开你自己的文件，PNG 精灵、瓦片地图、关卡数据，以及任何 MIDI 或 WAV 音频，通常都明明白白地摆在里面。编译好的类可以反编译出来阅读原本的逻辑，对你自己写的或有明确许可的游戏这么做是正当的。也留着 JAD 文件，因为它记录了 MIDlet 的名称、版本，以及游戏面向的设备配置。那能告诉你原本的屏幕尺寸和 API 假设。

## 屏幕尺寸是最大的变化

176 乘 220 的竖屏画布，只有现代屏幕的一小块。早点在两条路里做选择。保留原始分辨率，用整数缩放和最近邻过滤把它放大，这能让美术分毫不差，代价是加黑边。或者用重新制作的美术按更高分辨率重建，这更适合商业化的重新发行。无论哪条路，都要让像素网格诚实，因为这些精灵是一个像素一个像素画出来的，任何柔化都会毁掉它们。

## 键盘输入变成触摸或手柄

原作用数字键移动，用 5 触发动作，用两个软键操作菜单。现代目标一样都没有。在移动端，把方向集合映射到滑动或一小片触摸布局上，并让动词数量保持很少，这很容易，因为这类游戏很少超过三个动作。在桌面上，映射到键盘和手柄。把软键菜单栏重建成正常界面，而不是照搬两键的老规矩。

## 默认极小硬件的逻辑

Java ME 的游戏循环按帧计数，帧率又低又不稳，常常是每秒 15 到 20 帧，还配着手写的 sleep 调用。把它转换成时间增量，让游戏在 60 帧及以上表现一致。为了避开缓慢浮点而使用的定点数学，可以改成普通浮点数。Record Store 持久化变成普通存档文件。厂商专有的音频或振动 API，换成引擎的标准功能。

## 一款老 Java 手机游戏如今能去哪里

最明显的目标是移动端，在那里游戏终于有富余的内存，以及一块远超它当年预期的彩色屏幕。iOS 和 Android 版本需要对应平台的工具链和签名，还要针对触控输入做一轮适配。用 GDScript 重建的游戏还可以作为网页版本发布到 Summer Games。如果补上更多内容、选项和手柄支持，Steam 也行得通。很多 J2ME 时代的游戏是被硬件饿着的好设计，而移植修的正是这一点。

## FAQ

### 我能在现代手机上跑 J2ME 游戏吗？

只能通过 J2ME Loader 或 FreeJ2ME 这类模拟器。今天的手机都不带 Java ME 运行时。要做成可分发的产品，就重建这款游戏，而不是模拟它。

### 我能从自己的 JAR 里提取美术和代码吗？

能。JAR 是 ZIP 归档，所以精灵和音频可以直接解出来，类文件也能反编译以还原逻辑。只对你自己制作或有明确许可的游戏这么做。

### 原本那么小的分辨率要怎么处理？

要么保留原生分辨率，用整数缩放和最近邻过滤放大；要么按更高分辨率重新制作美术。不要对一个像素一个像素画出来的精灵套柔化滤镜。

### Java 代码能迁移吗？

不能作为可运行代码迁移。MIDP 和 CLDC 的类在 Java ME 之外不存在。逻辑要用 GDScript 或 C++ 重写，并把反编译出的源码当作原本行为的精确规格说明。

### 那个年代的老手机游戏归谁所有？

往往归委托制作的发行商或运营商，而不是做它的工作室。Java ME 游戏经常是外包作品，分发权握在别处。规划商业发行之前先确认权利。

### J2ME 移植在商业上值得做吗？

补上内容和现代便利之后可以。这类游戏当年短是被迫的。扩展设计、加上存档和选项，再发到 Steam 和移动端，对一款背后确有受众的作品来说是现实的路。

[开始重建](https://www.summerengine.com/zh/download)

---

## Machine-readable resources

- Site index for agents: https://www.summerengine.com/llms.txt
- Full inlined content: https://www.summerengine.com/llms-full.txt
- Porting catalog: https://www.summerengine.com/llms-porting.txt
- Structured catalog: https://www.summerengine.com/agent-catalog.json
- Sitemap: https://www.summerengine.com/sitemap.xml
- Developer resources: https://www.summerengine.com/docs
- Summer API (assets from any agent or code; public per-call model prices): https://docs.summerengine.com/api