Cubiq
engineering.mdการพัฒนา

การพัฒนา

ภายใน Cubiq

ทุกการหมุนลูกบาศก์อาศัยระบบที่พัฒนาขึ้นเอง ได้แก่ แบบจำลองทางคณิตศาสตร์ เอนจิน 3D และตัวแก้ที่คำนึงถึงเป้าหมายของบทเรียน แอป Android เขียนด้วย Kotlin และ Jetpack Compose

ภาพรวมโครงการ ณ เวลาหนึ่ง

บรรทัดซอร์สและทรัพยากรข้อความ
740 244
โมดูลของแอป
39
บรรทัดจริงของ Kotlin นอกส่วนทดสอบ
136 019
รูปแบบภาษา
42
รายการประกาศทดสอบtest* / androidTest* · @Test
1 624

stack.kt

ชุดเทคโนโลยี Android สมัยใหม่

ภาพรวมโครงการ ณ เวลาหนึ่ง
Kotlin2.4.21
Compose BOM2026.09.00
Material 31.5.0-beta01
Adaptive1.3.0
Navigation 31.2.0
AGP9.4.1
KSP2.3.12
Gradle9.7.0
  • Kotlin
  • Jetpack Compose
  • Material 3
  • Adaptive
  • Navigation 3

Jetpack Compose และ Material 3 กำหนดองค์ประกอบและธีมของอินเทอร์เฟซ Adaptive จัดวางตามขนาดหน้าต่าง ส่วน Navigation 3 จัดการการนำทางและกู้คืนหน้าจอ สถานะส่งผ่าน Coroutines และ Flow โดย Hilt เชื่อมโมดูลของแอป

architecture.kt

ชั้นของแอปที่เป็นอิสระต่อกัน

app01Hilt / DI
feature07Compose / ViewModel
  • onboarding
  • learning
  • lesson
  • practice
  • progress
  • settings
  • events
domain07contracts / use cases
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
data09repositories / storage
  • content
  • storage
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
core14UI kit / cube / solver
  • common
  • model
  • designsystem
  • uikit
  • navigation
  • analytics
  • crashlytics
  • ads
  • billing
  • push
  • hardware
  • cube
  • scrambleimage
  • solver
baselineprofile01startup / frame timing

feature → domain ← data

modulesΣ 39
  • app1
  • baselineprofile1
  • core14
  • data9
  • domain7
  • feature7
Kotlin · physical LOCΣ 136 019
feature
82 86360.9%
core
21 16715.6%
data
14 34110.5%
app
9 5147.0%
domain
6 7595.0%
buildSrc
9610.7%
baselineprofile
4140.3%

อินเทอร์เฟซ สัญญาของโดเมน และข้อมูลแยกเป็นโมดูล โดย Hilt เชื่อมส่วนที่นำไปใช้ Compose รับสถานะที่เปลี่ยนแปลงไม่ได้และเหตุการณ์ที่ชัดเจน Room เก็บประวัติและความคืบหน้าการเรียน DataStore เก็บการตั้งค่า และ Navigation 3 กู้คืนสแต็กของแต่ละส่วน

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX ตามคำแนะนำของ Android

Cubiq ใช้แนวทางที่ Google เน้นใน Apps Experience Program ได้แก่ Compose การจัดวางแบบปรับตามพื้นที่ และ edge-to-edge

ตามขนาดหน้าต่าง
บนหน้าจอกว้าง ทฤษฎีและการฝึกแสดงข้างกัน บนหน้าจอขนาดกะทัดรัด เนื้อหาและการนำทางปรับตามพื้นที่ที่มี โดยขนาดหน้าต่างเป็นตัวกำหนดการจัดวาง
การนำทางแบบเนทีฟ
Edge-to-edge คำนึงถึงแถบระบบและแป้นพิมพ์ Navigation 3 เก็บสแต็กของแต่ละส่วนและรองรับ Predictive Back พร้อมแสดงตัวอย่างการเปลี่ยนกลับ
การอ่านและการเข้าถึง
ธีมสว่างและมืด การปรับขนาดข้อความ และป้ายกำกับเชิงความหมายในการนำทาง ช่วยให้ใช้แอปด้วย TalkBack และแป้นพิมพ์ได้ เมื่อใช้ตัวอักษรใหญ่ ชื่อส่วนต่าง ๆ ยังคงพร้อมให้โปรแกรมอ่านหน้าจออ่าน
คำแนะนำของ Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

เรขาคณิตที่สอดคล้องกับคณิตศาสตร์

moving cubies
26
facelets
54
meshes
8
triangles
2 964

เชดเดอร์ GLSL คำนวณวัสดุ PBR ความหยาบ และแสงจากสภาพแวดล้อม แบบจำลองและแอนิเมชันทำงานสอดคล้องกัน การย้อนหนึ่งขั้นใช้การหมุนตรงข้าม ส่วนกล้องคำนึงถึงพื้นที่ว่างระหว่างแผง

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

สถานะลูกบาศก์ / เล่นสูตร

สัญกรณ์ที่มีชนิดแปลงเป็นการหมุนและสถานะลูกบาศก์ที่สอดคล้องกัน คิว renderer แสดงแอนิเมชันการหมุนชั้นโดยรักษาอัตลักษณ์ของชิ้นส่วนและ facelet สูตรเล่นเป็นลำดับการหมุนจริง พร้อมเล่น หยุดชั่วคราว และปรับจังหวะ

  1. Notation
  2. Cube state
  3. Move queue
  4. OpenGL ES 3.0

เดินหน้าหนึ่งขั้นแสดงแอนิเมชันการหมุนใหม่ ย้อนหนึ่งขั้นใช้การหมุนตรงข้าม การข้ามไปยังตำแหน่งกู้คืนฉากตั้งต้นและลำดับเป้าหมาย การยกเลิกหยุดส่งการหมุนถัดไป แต่การหมุนที่เริ่มแล้วจะจบ วงจรชีวิต EGL จัดการ pause/release หากไม่มี GL ยังเรียนต่อได้โดยไม่ใช้ 3D

solver.kt

คำตอบตามเป้าหมายของบทเรียน

  • BFS
  • Beam search
  • F2L

ตัวแก้ที่พัฒนาขึ้นเองสร้างคำตอบจากสูตรและการหมุนเสริมของบทเรียนปัจจุบัน SolverRequest ประกอบด้วยสถานะลูกบาศก์ ชิ้นส่วนเป้าหมาย เป้าหมายที่ล็อก สูตรที่อนุญาต กรณี และทิศทาง ตัววางแผนรักษาลำดับเป้าหมายการเรียนและปกป้องชิ้นส่วนที่จัดเรียงแล้ว

การวางแผนแต่ละช่วงใช้ BFS ที่มีขอบเขต การค้นหาแบบบีม และการจำแนกกรณี F2L การตรวจสอบดูองค์ประกอบชิ้นส่วน การพลิก การบิด และพาริตีของการเรียงสับเปลี่ยน นโยบายค้นหาจำกัดความลึกและความกว้างบีม การเปลี่ยนบทเรียนยกเลิกการค้นหาและป้องกันผลลัพธ์ล้าสมัย

ผลลัพธ์คือ PracticePlan ประกอบด้วยขั้นตอน การอ้างอิงสูตร ไทม์ไลน์การแสดง และไทม์ไลน์การทำงาน คำอธิบายรักษาทิศทางสำหรับการเรียน ส่วนเอนจินรับลำดับการทำงานครบถ้วน ผลลัพธ์: plan / solved / invalid input / no constrained path

  1. สถานะลูกบาศก์
  2. ตรวจสอบแบบจำลอง
  3. แผนการเรียนรู้
  4. ฝึกแบบ 3D

content.md

เนื้อหาผ่านกระบวนการบิลด์

ทฤษฎีเก็บในเอกสาร Markdown 756 ฉบับ และการฝึกกำหนดในสถานการณ์ที่แปลเป็นภาษาต่าง ๆ 336 รายการ Gradle ตรวจสอบโครงสร้างการแปลและการอ้างอิงภาพประกอบที่สร้างเอง 316 ภาพ กราฟิกเตรียมด้วย Blender/Cycles ส่วนเอนจิน Android ใช้เรขาคณิตเชิงขั้นตอนแยกต่างหาก

workflow.md

เอกสารเป็นโค้ด / กระบวนการทำงานของเอเจนต์

AGENTS.md
48
README.md
16

รีโพซิทอรีจัดไว้สำหรับการพัฒนาด้วยเอเจนต์ ลำดับชั้น AGENTS.md กำหนดความรับผิดชอบ ข้อจำกัดสถาปัตยกรรม และจุดตรวจสอบ README.md อธิบายสัญญาของโมดูล ส่วน KDoc อธิบาย API และเงื่อนไขคงสภาพ

สัญญาด้านสถาปัตยกรรม การออกแบบ และภาษาได้รับการควบคุมเวอร์ชันร่วมกับโค้ด PLAN.md บันทึกขอบเขตและการส่งต่องาน เมื่อสัญญาเปลี่ยน เอกสารของผู้รับผิดชอบจะปรับตาม การตรวจสอบและสร้างผลลัพธ์ใช้ Gradle ส่วน CI บิลด์ทั้งสองรุ่นสำหรับร้านแอป

physical text linesΣ 740 244
Resources / localization
399 56854.0%
Kotlin · non-test
136 01918.4%
Lesson Markdown
132 64217.9%
Kotlin · JVM tests
46 6456.3%
Kotlin · Android tests
13 6361.8%
Build tooling / web
8 9851.2%
Documentation
2 7490.4%
คุณภาพและวิธีนับ

การทดสอบครอบคลุมสถานะลูกบาศก์ที่เป็นไปไม่ได้ การรักษาชั้นที่จัดเรียงแล้ว แผนการเรียนรู้ การยกเลิกคำขอล้าสมัย การกู้คืนเซสชัน และการนำเข้าข้อมูล CI บิลด์ทั้งสองรุ่นสำหรับร้านแอป การตรวจสอบรุ่นเผยแพร่รวม R8, APK/AAB, เช็กซัม และการจัดแนวไลบรารี native สำหรับเพจขนาด 16 KB

ปริมาณ Kotlin นับบรรทัดจริง รวมความคิดเห็น บรรทัดว่าง buildSrc และโค้ดเบนช์มาร์ก แต่ไม่รวมไดเรกทอรีทดสอบ จำนวนการทดสอบหมายถึงรายการประกาศทดสอบ JVM 1 343 รายการ และ Android 281 รายการ ไม่ใช่จำนวนครั้งที่รัน เอกสารรวมข้อความสำรอง การมีสถานการณ์ไม่ได้หมายความว่าทุกบทเรียนมีการฝึก

baselineprofile · @Test
3

ข้อความทั้งหมดนับบรรทัดจริงในไฟล์ UTF-8 ที่ติดตาม ได้แก่ ซอร์ส การทดสอบ ทรัพยากร XML/JSON เนื้อหา Markdown การแปลภาษา เอกสาร เครื่องมือ build และซอร์สเว็บ รวมความคิดเห็น บรรทัดว่าง และสำเนาของแต่ละภาษา ไม่รวมสื่อ ผลลัพธ์ที่สร้างอัตโนมัติหรือจาก build โค้ดจากภายนอก การตั้งค่าบริการ และ PLAN.md ชั่วคราว นี่คือปริมาณข้อมูลข้อความขาเข้าของโครงการ ไม่ใช่ LOC ที่ทำงานได้

ทำความรู้จัก Cubiq