Ruffleshop UltraLow – Entwicklerdokumentation

Der UltraLow-Modus ist ein automatischer Leistungsmodus des Ruffleshop-Systems, der Geräte mit extrem schwacher Grafikleistung erkennt und auf eine speziell optimierte Shop-Version umschaltet.
Der gesamte Autostart-Code befindet sich direkt in jeder Startdatei — es gibt keine separate Autostart.js mehr.

 

In den Mustershops im www.rufflestore.com ist die UltraLow-Version bereits bei allen Modellen verbaut worden und zugleich auch in der Firmware downloadbar. Dieser UltraLow-Modus ist also bei einem Kauf in der Classic Edition und Webdesigner Edition bereits enthalten.

 

 

1) Aufbau jeder Startdatei

Jede Startdatei enthält:

• den vollständigen Autostart-Code
• die GPU-Erkennung
• die automatische Weiterleitung (nur in normalen Startdateien)
• die Engine-Einstellungen
• den Kernel-Start

Die UltraLow-Version ist eine Duplikation der normalen Startdatei — aber mit zwei Änderungen:

1. Punkt 3 (Weiterleitung) wird entfernt
2. Ruffle-Qualität wird auf „low“ gesetzt

 

2) Wie erkennt der Ruffleshop ein UltraLow-Gerät?

Beim Laden der Seite führt der Autostart-Code einen Mini-Benchmark aus:

• Canvas-Test
• Renderzeit messen
• GPU-Klasse bestimmen

Wenn die Renderzeit über 0.30 ms liegt, wird das Gerät als:

ultra-low-end

klassifiziert.

 

3) GPU-Klassifizierung

function classifyGPU(avgFrame) {
if (avgFrame < 0.12) return "high-end";
if (avgFrame < 0.20) return "mid-range";
if (avgFrame < 0.30) return "low-end";
return "ultra-low-end";
}

Damit sind vier Leistungsstufen definiert:

• high-end
• mid-range
• low-end
• ultra-low-end

 

4) Wie wird die UltraLow-Version geladen?

In normalen Startdateien steht:

if (mode === "ultra-low-end") {
self.location.href = "ScarlettWebdesignerUltraLow.php";
return;
}

Das bedeutet:

• Der normale Ruffleshop wird nicht gestartet
• Stattdessen wird die UltraLow-Version geladen
• Der Webdesigner muss nichts tun
• Die Qualität des Ruffle-Players wird automatisch auf “low” gesetzt

 

5) Wichtiger Hinweis für Entwickler

In der UltraLow-Startdatei selbst muss Punkt 3 entfernt werden:

// 3) HTML-Version starten (sofort, ohne Kernel)
// Dieser Block wird in der UltraLow-Version GELÖSCHT

Warum?

• Die UltraLow-Version ist bereits die richtige Datei
• Sie darf sich nicht erneut weiterleiten
• Sonst entsteht eine Endlosschleife

 

6) Engine-Optimierung im UltraLow-Modus

Die Engine-Settings für UltraLow:

resolution: 0.60,
shadows: "off",
blur: false,
particles: "none",
shaderPasses: 1,
animations: "minimal"

Diese Einstellungen reduzieren:

• Renderauflösung
• Schattenberechnung
• Shader-Komplexität
• Partikel-Effekte
• Animationslast

Das ist die Engine-Ebene.


7) Rendering-Optimierung im UltraLow-Modus

Zusätzlich wird die Rendering-Qualität auf „low“ gesetzt:

Classic Edition

quality="low"

Webdesigner Edition

quality: "low"

Effekte:

• grobe Schrift
• kantige Linien
• vereinfachte Vektoren
• extrem schnelle Darstellung

Das ist die Rendering-Ebene.

 

8) Der Doppelschlag

UltraLow kombiniert:

• Engine-Low (GPU-Storm-Optimierung)
• Rendering-Low (Flash/Ruffle-Qualität)

Dieser Doppelschlag sorgt dafür, dass selbst sehr alte Android-Geräte den Shop wieder bewältigen können.

 

9) Vollständiger Autostart-Code (direkt in jeder Startdatei)

// ===============================
// RUFFLESHOP AUTO GPU START
// ===============================

(async function RuffleshopAutoStart() {

// 1) Mini-Benchmark
const avgFrame = await ruffleshopMiniBenchmark();

// 2) GPU-Klasse bestimmen
const mode = classifyGPU(avgFrame);

// 3) HTML-Version starten (sofort, ohne Kernel)
if (mode === "ultra-low-end") {
self.location.href = "ScarlettWebdesignerUltraLow.php";
return;
// WICHTIG: Kernel darf NICHT mehr starten
}

// 4) Modus anwenden
applyRuffleshopMode(mode);

// 5) Log für Entwickler
console.log("Ruffleshop GPU-Modus:", mode, "FrameTime:", avgFrame.toFixed(2), "ms");

// 6) Kernel starten
RuffleshopKernel.init();

})();

 

const RuffleshopKernel = {

init() {

const cfg = window.RUFFLESHOP_SETTINGS;

// Auflösung setzen
RuffleshopDisplay.setResolution(cfg.resolution);

// Shader konfigurieren
RuffleshopShaders.setPasses(cfg.shaderPasses);

// Schatten
RuffleshopEffects.setShadows(cfg.shadows);

// Blur
RuffleshopEffects.setBlur(cfg.blur);

// Partikel
RuffleshopParticles.setLevel(cfg.particles);

// Batching
if (cfg.batching) {
RuffleshopGPU.enableBatching();
}

// Animationen
RuffleshopAnimations.setMode(cfg.animations);

// UI laden
RuffleshopUI.init();

// App starten
RuffleshopApp.start();
}
};

 

 

async function ruffleshopMiniBenchmark() {
const frames = [];
const start = performance.now();

while (performance.now() - start < 100) {
const frameStart = performance.now();
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, 50, 50);
frames.push(performance.now() - frameStart);
}

return frames.reduce((a, b) => a + b, 0) / frames.length;
}

function classifyGPU(avgFrame) {
if (avgFrame < 0.12) return "high-end";
if (avgFrame < 0.20) return "mid-range";
if (avgFrame < 0.30) return "low-end";
return "ultra-low-end";
}

function applyRuffleshopMode(mode) {
switch (mode) {
case "high-end":
window.RUFFLESHOP_SETTINGS = {
resolution: 1.0,
shadows: "dynamic",
blur: true,
particles: "high",
shaderPasses: 2
};
break;

case "mid-range":
window.RUFFLESHOP_SETTINGS = {
resolution: 0.85,
shadows: "static",
blur: "reduced",
particles: "medium",
shaderPasses: 1
};
break;

case "low-end":
window.RUFFLESHOP_SETTINGS = {
resolution: 0.70,
shadows: "off",
blur: false,
particles: "low",
shaderPasses: 1,
batching: true
};
break;

case "ultra-low-end":
window.RUFFLESHOP_SETTINGS = {
resolution: 0.60,
shadows: "off",
blur: false,
particles: "none",
shaderPasses: 1,
animations: "minimal"
};
break;
}
}

//=========================================================

Die UltraLow-Version enthält denselben Code — aber ohne Punkt 3. Und mit Quality = "low".

 

10) Fazit

Der UltraLow-Modus ist die technisch sauberste Lösung, um den Ruffleshop auf extrem schwacher Hardware nutzbar zu machen. Durch die Kombination aus Engine-Optimierung und Rendering-Optimierung entsteht ein Modus, der selbst alte Android-Geräte wieder voll funktionsfähig macht.

 

 

Storm-Factory Navigations-Links

Technology GPU-Detection

Technology Storm-HTML-Modul

A4Web Langenthal – Origin of the A4 Storm definition

Rufflestore – GPU App Technology

Ruffleshop Factory – Editorial & Technical Insights

GPU Prestige Apps – Quick Overview

Direct-GPU Expert Profile

SWF – Storm Warp File (Kernel Format)

A4 Storm Factory Ruffle Apps Direct-GPU