ตัวจำลองเครื่องเล่นแฟลช ruffle บน iOS
ทำงานระหว่างดำเนินการ
ดู Ruffle.rs สำหรับการแนะนำทั่วไป
ตัวเลือกการออกแบบ
คนปกติอาจห่อสนิมใน extern "C" fn บางส่วนแล้วใช้ Swiftui หรืออย่างน้อยวัตถุประสงค์ -C สำหรับเปลือก UI ฉันอาจจะแนะนำว่าสำหรับกรณีการใช้งานส่วนใหญ่
ฉันกำลังพัฒนา objc2 และฉันต้องการปรับปรุงการเชื่อมต่อผู้ใช้ของสิ่งนั้นดังนั้นฉันจึงตัดสินใจที่จะเป็น unortodox เล็กน้อยและทำทุกอย่างในสนิม
การทดสอบ
เรียกใช้ Core Player บน Mac Catalyst ด้วย:
cargo bundle --target=aarch64-apple-ios-macabi --bin run_swf && ./target/aarch64-apple-ios-macabi/debug/bundle/ios/Ruffle.app/run_swf
UI
คล้ายกับ https://getutm.app/ เราควรมี:
- ไลบรารีของ "ติดตั้ง" SWFs/Bundles/ลิงก์ที่บันทึกไว้สามารถแก้ไขได้
- เมื่อเลือก SWF แถบการนำทางที่ด้านบนจะแสดงตัวเลือกต่าง ๆ
- เปิดคีย์บอร์ด (อาจจะ?)
- เมนูบริบท "เล่นย้อนกลับไปข้างหน้ากลับ ฯลฯ "?
- อนุญาตให้เปลี่ยนระหว่างสเกล
- ปุ่มย้อนกลับเพื่อกลับไปที่ห้องสมุด
- "เพิ่ม" และ "แก้ไข" เป็นสองกระแสที่แตกต่างกันและควรแสดง UIs ที่แตกต่างกันสองแบบ
- "เพิ่ม" ไม่จำเป็นต้องแสดงการตั้งค่าพิเศษทั้งหมด มันเป็นเพียงการรับไฟล์ ผู้ใช้สามารถแก้ไขได้ในภายหลัง
การตั้งค่ารายการไลบรารี
การตั้งค่าจะถูกจัดเก็บต่อชุดมัด
-
PlayerOptions- https://github.com/ruffle-rs/ruffle/blob/master/frontend-utils/src/bundle/readme.md#player
- อินพุต:
- กำหนดได้
- ปัดสำหรับปุ่มลูกศร?
- https://openemu.org/ มันค่อนข้างดีเทียบเท่ากับ iOS หรือไม่?
- ชื่อที่กำหนดเอง?
- ภาพที่กำหนดเอง?
ไอเดียการจัดเก็บ
เป้าหมาย:
- เก็บมัดนัวเนีย
- จัดเก็บการตั้งค่าผู้ใช้
- จัดเก็บข้อมูล SWF เองอาจเก็บไว้ (ที่เก็บคีย์-ค่า)
- ซิงค์กับ iCloud
- ย้อนกลับและส่งต่อเข้ากันได้กับแอพ Ruffle เวอร์ชันใหม่
- ยึดถือสำหรับการรวมกันของ Ruffle
ดังนั้นเราต้องการสนับสนุนการเปิดตัวหลายโหมด:
- นำเข้ามัดอย่างถาวร
- เปิดมัดนัวเนียโดยไม่นำเข้า
- จะเกิดอะไรขึ้นเมื่อชุดมัดได้ย้ายสัมพันธ์กับการตั้งค่าผู้ใช้?
การรวมกลุ่มเมื่อนำเข้าจะไม่ได้รับการบรรจุจาก Zip เปลี่ยนชื่อเป็น bundle.ruf และย้ายไปที่ library/$random_uuid/ เพื่อไม่ขัดแย้งกับชุดอื่น ๆ ที่มีชื่อเดียวกัน SWF ที่นำเข้าจะถูกแปลงเป็นมัด ruffle ที่มี name = "file_stem", url = "file:///file_stem.swf" ไฟล์จะถูกเก็บไว้ในดิสก์ในไดเรกทอรีของแอปพลิเคชัน การตั้งค่าผู้ใช้จะถูกเก็บไว้ใน settings.toml ถัดจาก bundle.ruf ข้อมูลแอปพลิเคชันใน app_data/
กฎสำหรับการซิงค์คือ "ชัยชนะใหม่ล่าสุด" สิ่งนี้ น่า จะดีหากผู้ใช้ได้แก้ไขการตั้งค่าของพวกเขาในอุปกรณ์ที่แตกต่างกันสองเครื่อง แต่อาจต้องใช้ตรรกะที่แตกต่างกันสำหรับข้อมูลแอปพลิเคชัน
โปรดทราบว่าเรา สามารถ ใช้แบบจำลองข้อมูลหลักได้ แต่นั่นเป็นเรื่องยากและจะไม่ช่วยเราจริงๆเมื่อการตั้งค่าของเราส่วนใหญ่กำหนดโดยชุดนัวเนีย
คำศัพท์
เราเรียกว่า SWF อะไร? "เกม"? "ภาพยนตร์"? "swf"? "แฟลชแอนิเมชั่น"?
วางแผน
- รับ ui ruffle ทำงานใน
UIView - เชื่อมโยงวิธีเริ่มต้นโดยใช้ SWF บนอุปกรณ์ท้องถิ่น
สิ่งที่ต้องทำ
- ตั้งค่า
idleTimerDisabled ในเวลาที่เหมาะสม - ใช้สีขาวสำหรับป้ายกำกับสีส้มสำหรับปุ่ม
- เพิ่มปุ่มการตั้งค่าในรายการไลบรารี
ทางเลือก
- ใช้
public.app-category.games โดยเจตนาเพื่อให้ได้ประสิทธิภาพที่ดีขึ้น ("โหมดเกม" บน MacOS)- นี่ไม่จำเป็นต้องเป็นตัวเลือกที่ถูกต้องสำหรับ ruffle แต่มันใกล้เคียงที่สุด
- มันไม่สมเหตุสมผลที่จะมีการตั้งค่ารูทเหมือนในเวอร์ชันเดสก์ท็อป
- ไม่มีแถบแท็บไม่ต้องการจริงๆเพราะโดยทั่วไปเราต้องการให้ UI ของ SWF เติมเต็มหน้าจอส่วนใหญ่
- แม้ว่าเราจะตัดสินใจเพิ่มวิธีง่ายๆในการดาวน์โหลดจากแหล่ง "ที่เชื่อถือได้" เราสามารถเพิ่มแท็บบาร์สำหรับสิ่งนั้นได้
- แถบการนำทางมีประโยชน์แม้ว่า
- เพื่อแสดงการตั้งค่าบางอย่างสำหรับ SWF ปัจจุบัน
- กลับไปที่ห้องสมุด
- ซ่อนเมื่อเข้าสู่หน้าจอเต็มรูปแบบ?