1. Các bài toán đã thực hiện
Bài toán | Thực trạng | Tình trạng | Kết quả | Cải thiện | Người thực hiện |
---|---|---|---|---|---|
Base game | Các game được phát triển một cách tự phát, không có quy trình cụ thể, khó khăn cho fixbug và phát triển | Đã giải quyết được cơ bản về quy trình phát triển game với hệ thống FSM và observer design pattern | Game đã có luồng rõ ràng, quá trình phát triển game được rút ngắn, thời gian fixbug nhanh, được đánh giá dễ sử dụng từ dev | - Tự động tạo các class chính - Review base mục đích cải thiện, tối ưu và sử dụng thêm các design pattern hợp lý giúp tăng tính mạch lạc và dễ sử dụng của base | Hùng Bùi |
Data game | Các game khó có thể share giữa các khóa khác nhau do data có thể khác nhau | Đã giải quyết bằng cách sử dụng chung bộ data model cho tất cả các game, bộ data đảm bảo cho việc dễ sử dụng và tổng quát | Các game có thể chạy độc lập với data mock hoặc data test. Các game dễ dàng tách và đóng gói (cùng với base) | Chưa có kế hoạch | Hùng Bùi |
Navigation | Để chuyển giữa các khóa học đang sử dụng bằng cách gọi thẳng tên scene và khó kiểm soát các yêu cầu khởi tạo của khóa học, phức tạp và khó khăn trong quá trình chuyển đổi giữa các khóa | Đã chuyển chung cơ chế chuyển scene do 1 đối tượng quản lý, ở đây sẽ kiểm tra tất cả các điều kiện khởi tạo khóa học cần thiết | Thời gian chuyển các khóa được tối ưu, phát triển khóa mới không lo lắng ảnh hưởng đến khóa cũ, tách biệt data của các khóa khác nhau, không cần thiết sẽ không khởi tạo | Review lại luồng data học và data đồng bộ của khóa Abc và MStory để tách biệt ra với một số case đặc biệt | Hùng Bùi |
Event | Mỗi một event có hệ thống properties khác nhau, mỗi khi có một properties mới sẽ phải viết lại method cho event này | Đã tạo 1 base event với việc chia các properties chung và thiết kế linh hoạt các properties khác nhau để có thể sử dụng chung method cho các event khác nhau | Giảm thời gian phát triển cho chức năng push event | Chưa có kế hoạch | Tiến ND |
AI Speak | Nhiều game sử dụng công nghệ AI Speak nhưng mỗi game sử dụng khác nhau dẫn đến không đồng nhất về luồng và gây khó khăn cho quá trình debug | Đã tạo 1 module chung bao gồm đầy đủ từ xin quyền đến thực thi AI Speak với kịch bản online và offline cụ thể | Dễ dàng trong việc sử dụng module với input và output rõ ràng, giảm thời gian phát triển chức năng liên quan đến AI Speak | Chưa có kế hoạch | Hiếu HS |
Tối ưu dung lượng build | Các assets trong game đang được build cùng game. Khi phát triển thêm tính năng sẽ tăng build size | Sử dụng Addressable nhằm tách các assets của game ra bên ngoài và download về khi cần | Build size đã giảm và ổn định hơn. Khi thêm tính năng mới build size sẽ không tăng nhiều | Chưa có kế hoạch | Hải Ngô |
Support Service | Các phần hỗ trợ trong game đang được phát triển riêng biệt, không có quy chuẩn cụ thể, khó khăn trong việc phát triển và fix bug | Các phần hỗ trợ được quy chuẩn về dạng service, có Service manager để quản lý. Các service được implement qua Interface để dễ dàng nâng cấp, thay thế khi cần | Đã Implement được các services sau: Addressables, Assetbundle, DataSync, Download, EventTracking, Localization, Popup, UserData | Cần đưa các service vào toàn bộ hệ thống thay vì chỉ dùng một phần trong MJ5 | Hải Ngô, Tùng Đỗ |
Thay đổi visual trong game theo event | Khi thay đổi event cần submit lại app. Mỗi khi có event mới tốn thời gian trong việc chỉnh sửa lại app, không tận dụng được event đã làm từ trước | Event được quy chuẩn về dạng Theme và hiển thị theo Config. Dễ dàng thêm Event mới. Các event được điều khiển bằng data và hiển thị khi cần thiết | Đã hoàn thành theme cho chủ đề giáng sinh | Đưa theme ra ngoài và download về khi cần. Bổ sung thêm các theme theo chủ đề khác | Hải Ngô |
Tối ưu share và tải tài nguyên | Game và tài nguyên có thể share cho nhau nhưng vẫn phải tải lại từ package khác nhau với mỗi khóa học | Hệ thống share game, tải tài nguyên chỉ cần 1 lần, các lần sau không cần tải lại | QA Testing cho khóa MJ5 | Cho pack Event Season + MSpeak (có điều kiện từ data) | Hải Ngô (12/12/24) |
2. Các bài toán mong muốn thực hiện
Bài toán | Thực trạng | Mong muốn |
---|---|---|
Data user | Data của tất cả các khóa đang để chung model dù không dùng gây nặng cho user đặc biệt với các user học nhiều khóa, lượng bài học hoàn thành nhiều, hiệu năng giảm | - Tách biệt data của các khóa và phần data tặng thưởng riêng, khi cần data nào sẽ load data đó.<br>- Khi bổ sung khóa mới dễ đồng bộ và fixbug, không ảnh hưởng hiệu năng |
UI Map | Các map khá giống nhau về mặt UI và chức năng nhưng mỗi map vẫn trên 1 base code khác nhau | Gen map tự động theo data setting hoặc kéo thả |
Tặng khóa học | Khi tặng khóa học các điều kiện tặng ở client khá phức tạp, phụ thuộc nhiều bên như client và server | Xây dựng hệ thống tặng khóa dễ thay đổi điều kiện và dễ setup |
Game framework | Mỗi game phải order từ nhiều bên (nội dung > kịch bản > đồ họa > dev) gây mất thời gian phát triển và test thử | Xây dựng framework để bộ phận kịch bản + nội dung tự tạo game mong muốn theo quy tắc nhất định |
Tối ưu quy trình dev game | Các object game lặp lại qua nhiều game nhưng dev vẫn phải code lại hoặc copy | Hệ thống các object chung, tái sử dụng, giảm thời gian dev game |