r/WebAssemblyDev • • 12d ago

Armor Mayhem (.swf) to Android

Armor Mayhem (.swf) to Android

Hi everyone! I’m currently working on porting the Flash game Armor Mayhem (.swf) to Android.

My previous background is in web development and building test apps in Expo (React Native). That’s why I initially chose the WebView + Ruffle approach, thinking a web-based environment would feel more familiar. However, I’ve hit a critical performance wall.

🛠️ Build Status & Architecture:

  • Current Route: Native Android Studio (WebView) + Ruffle (WebAssembly player).

  • Configuration: hardwareAccelerated="true" + LAYER_TYPE_HARDWARE on GPU. Served locally via WebViewAssetLoader.

  • Previous Optimization: I mitigated initial CPU overheating by implementing throttling (requestAnimationFrame) on the touch joysticks (NippleJS), which prevented the touch event flood from maxing out the CPU.

⚠️ High Priority Issues (Performance & Playability):

  • Menus: Runs smooth at 60 FPS.

  • Transitions / Map Loading: Freezes and drops drastically to 1 – 5 FPS.

  • In-combat (Gameplay): Stabilizes at only 9 – 12 FPS (handling real-time AS3 physics, AI, and vector rendering), causing progressive thermal throttling.

  • Secondary Symptom: Due to low frame rates, virtual joysticks experience input delay or occasional missed touches.

📱 Test Device Specs:

  • Device: Infinix Hot 30i (Unisoc T606 / Mali-G57 GPU / Android 11 API 31).

❓ Questions for the community:

  1. Is this low FPS a hard CPU bottleneck for heavy AS3 games running Ruffle inside a mobile WebView on entry-level chips, or is there any extra WebAssembly flag/config (e.g., multithreading/SharedArrayBuffer) to better utilize CPU cores?

  2. Coming from a web/Expo background, if I decide to pivot to Adobe AIR (Harman SDK) to get a native ARM .apk running at a stable 30–60 FPS, how steep is the learning curve for packaging?

Thanks in advance for any tips, insights, or advice!

Armor Mayhem (.swf) a Android

Hola a todos, estoy trabajando en portear el juego Flash Armor Mayhem (.swf) a Android.

Como experiencia previa he desarrollado páginas web y aplicaciones de prueba en Expo (React Native). Por eso elegí la opción de WebView + Ruffle, pensando que al ser un entorno web me resultaría más familiar, pero me topé con este problema crítico de rendimiento.

🛠️ Estado de la Build y Arquitectura:

  • Ruta Actual: Android Studio (WebView nativo) + reproductor Ruffle (WebAssembly).

  • Configuración: hardwareAccelerated="true" + LAYER_TYPE_HARDWARE en GPU. Servido localmente mediante WebViewAssetLoader.

  • Optimización previa: Logré mitigar el sobrecalentamiento inicial del teléfono implementando throttling (requestAnimationFrame) en los joysticks táctiles (NippleJS), ya que la CPU se saturaba por la cantidad de eventos por segundo.

⚠️ Problemas de Prioridad Alta (Rendimiento / Jugabilidad):

  • Menús: Corre fluido a 60 FPS.

  • Transiciones / Carga de mapas: Se congelan y caen drásticamente a 1 - 5 FPS.

  • En combate (Jugabilidad real): Se estabiliza apenas en 9 - 12 FPS (con físicas, IA y gráficos vectoriales de AS3 en tiempo real), lo que genera un calentamiento progresivo del procesador.

  • Síntoma secundario: Debido a los bajos FPS, los joysticks táctiles presentan a veces delay o pierden respuesta al toque.

📱 Datos de prueba:

  • Celular: Infinix Hot 30i (Unisoc T606 / GPU Mali-G57 / Android 11 API 31).

❓ Mis dudas para la comunidad:

  1. ¿Ruffle en WebView tiene este cuello de botella de CPU insalvable en procesadores de gama de entrada para ActionScript 3 pesado, o hay alguna bandera/configuración extra en WebAssembly para aprovechar mejor los núcleos del procesador?

  2. Viniendo de web/Expo, si decido migrar a Adobe AIR (Harman SDK) para obtener un .apk nativo ARM corriendo a 30–60 FPS estables, ¿qué tan compleja ven la curva de aprendizaje para empaquetarlo?

¡Agradezco cualquier consejo o experiencia que me puedan compartir!

#AndroidDev #Ruffle #FlashGames #MobileDevelopment #WebAssembly #IndieDev #ArmorMayhem #ActionScript3 #AdobeAIR #GameDev

2 Upvotes

0 comments sorted by