Một nền tảng mô phỏng và học giải Rubik tương tác, hiệu năng cao. Được xây dựng với Next.js 16.2.2 (App Router) và React Three Fiber, ứng dụng này mang lại trải nghiệm tốt cho những người chơi Rubik ở mọi cấp độ.
- Rubik: Thao tác xoay khối Rubik 3D mượt mà và chân thực bằng chuột hoặc cảm ứng.
- Điều khiển bằng cử chỉ: Xoay các mặt một cách trực quan bằng cách kéo trực tiếp các ô nhỏ (cubies).
- Lịch sử di chuyển: Theo dõi các bước xoay của bạn với nhật ký lịch sử chi tiết.
- Hệ thống hàng đợi (Queue): Xử lý hàng đợi lệnh, giới hạn thao tác giúp web đỡ giật lag.
- Hướng dẫn từng bước: Các bài học toàn diện cho người mới bắt đầu.
- Theo dõi tiến độ: Thanh tiến trình trực quan giúp bạn nắm bắt lộ trình học tập.
- Hình ảnh minh họa: Các sơ đồ chất lượng cao và trình xem 3D cho các bước giải.
- Logic độ chính xác cao: Sử dụng
Date.now()để đo thời gian chính xác đến từng miligiây. - Tối ưu cho di động: Vùng kích hoạt chạm lớn ở trung tâm, được thiết kế riêng cho việc tập luyện speedcubing chuyên nghiệp.
- Lưu trữ lịch sử: Tự động lưu lịch sử các lần giải vào
localStorage. - Thống kê phiên chơi: Theo dõi hiệu suất của bạn theo thời gian.
- Tinh chỉnh R3F: Tối ưu hóa để đạt 60FPS ổn định bằng cách sử dụng
AdaptiveDprvàAdaptiveEvents. - Tiết kiệm GPU: Giới hạn độ phân giải bóng đổ (shadow) và bỏ qua khung hình cho các thiết bị cấu hình thấp.
- Không SSR cho 3D: Các thành phần 3D được tải động để đảm bảo tốc độ tải trang ban đầu nhanh nhất.
- Framework:Next.js 16.2.2 (App Router, React 19)
- Đồ họa 3D:Three.js & React Three Fiber
- Styling:Tailwind CSS 4
- Animation:Framer Motion
- Icons:Lucide React
- Components:Radix UI & Swiper
- Node.js 20 trở lên
- npm / yarn / pnpm
Clone repository:
git clone https://github.com/VuLeCoder/rubik-guide.git cd rubik-guideCài đặt các gói phụ thuộc:
npm install
Chạy server:
npm run dev
Mở http://localhost:3000 trên trình duyệt của bạn.
app/
├── components/ │ ├── simulator/ # Logic & component cho khối Rubik 3D
│ ├── learn/ # Hướng dẫn các bước giải
│ ├── about-me/ # Phần giới thiệu bản thân
│ └── Timer.tsx # Logic & giao diện bộ bấm giờ
├── globals.css # Styles toàn cục & Tailwind
├── layout.tsx # Layout gốc
└── page.tsx # Điểm vào chính với điều hướng Tab
public/ # Tài nguyên tĩnh (hình ảnh, icon)
Các hằng số quan trọng cho trình mô phỏng và hiệu suất có thể được tìm thấy trong app/components/simulator/constants.ts:
DRAG_SENSITIVITY: Điều chỉnh độ nhạy khi kéo các ô Rubik.LAYER_THRESHOLD: Độ nhạy để xác định lớp nào sẽ xoay.RUBIK_CONFIG.SCENE.SHADOW_FRAMES: Kiểm soát tần suất cập nhật bóng đổ để tối ưu hiệu suất.
Các bước giải và công thức nằm trong app/components/learn/constants.ts
Các thông tin cho tab About Me có thể được thay đổi trong app/components/about-me/constants.ts