1. Setup hoạt động mới (Tiểu học)


1.1. Tạo thư mục cho bài mới

  1. Vào thư mục Assets > Resources > Prefabs.
  2. Ctrl + ⇧ + N → Tạo 1 thư mục mới cho bài chuẩn bị làm. Đặt tên theo quy tắc đặt tên bài. Đây là thư mục chứa prefab hoàn thiện.
  3. Vào thư mục Assets > Timelines > LỚP 1 – LỚP 5 tuỳ theo bài đang làm là bài khối nào
  4. Ctrl + ⇧ + N → tạo 1 thư mục mới cho bài chuẩn bị làm. Đặt tên theo quy tắc đặt tên bài (L1_01, L3_06, L5_20…). Đây là thư mục chứa các Timeline của bài.
  5. Vào thư mục Assets > Assets Library > Templates, copy Timeline vào thư mục Timeline của bài vừa tạo. Đổi tên Timeline theo quy tắc MaBai_SoHoatDong (VD: L1_01_01)

1.2. Tạo prefab cho hoạt động mới

  1. Vào thư mục Assets > Assets Library > Templates
  2. Kéo Actvity_Prefab vào Hierarchy
  1. Chuột phải vào Acitivity Prefab, chọn Prefab > Unpack Completely
  2. Đổi tên Activity_Prefab và Timeline theo quy tắc MaBai_SoHoatDong

1.3. Đưa assets từ Project vào Hierarchy

  1. Kéo các assets sau vào Hierarchy:
    • Nhân vật: Đưa vào Canvas, kéo file xuống dưới Characters 
    • Background: Đưa vào Canvas, kéo file xuống dưới Backgrounds 
    • Props: Đưa vào Canvas, kéo file xuống dưới Props 
  2. Note: Đảm bảo các assets kéo vào canvas đều chỉnh Positon X, Y về 0, Scale 100
  1. Chuột phải vào các assets vừa kéo vào, chọn Prefab > Unpack Completely.

1.4. Setup timeline

  1. Chọn Timeline, trong –Inspector– kéo Timeline Hoạt động vừa tạo vào mục Playable
  2. Đổi tên Timeline thành tên bài

1.5. Đưa assets từ Hierarchy vào Timeline

  1. Chọn Timeline, ấn vào biểu tượng ổ khóa ở góc trên bên phải của cửa sổ timeline để khóa timeline.
  2. Kéo các assets sau từ Hierarchy vào Timeline:
    • Camera:
      • Kéo Main Camera vào timeline, tạo Activation Track. Sau đó xoá phần activation đi.
      • Kéo Cinemachine vào timeline, tạo Cinemachine Track.
      • Tạo Animation Track cho Fullscreen_Camera hoặc Zoom Cam nếu cần di chuyển camera.
    • Background: Kéo vào timeline tạo Activation Track. Nếu cảnh này chỉ có duy nhất 1 background xuất hiện từ đầu đến cuối thì không cần tạo track.
    • Nhân vật: Kéo vào timeline, tạo các track sau cho mỗi nhân vật nếu cần. Mỗi lần chỉ tạo được 1 loại track nên cần kéo nhiều lần.
      • Activation Track: với nhân vật có xuất hiện. Nếu nhân vật xuất hiện từ đầu đến cuối, không lúc nào biến mất thì không cần tạo Activation track.
      • Salsa control track: kéo Lipsync_Normal/Lipsync_Sad trong Root với nhân vật có lipsync
      • Animation track: với nhân vật có chuyển động. Có thể cần tạo 2 animation track.
        • 1 track cho object được gắn Animator component (VD: Kem_L3_DP)
        • 1 track cho prefab của nhân vật đó, để chỉnh position, rotation & scale của nhân vật (VD: NV_Kem_L3_DP) Lưu ý: Mở khoá –Timeline– trước khi sửa timeline khác.
  3. Lưu prefab cho hoạt động mới
  1. Đảm bảo hoạt động đã activate trước khi kéo thành Prefab
  2. Kéo hoạt động trên Hierarchy vào thư mục Prefab đã tạo từ Bước 1.1.2 trong Project

2. Hoàn thiện hoạt động sau khi làm

Sau khi hoàn thành timeline hoạt động, đã chốt được độ dài chuẩn của các hoạt động.


2.1. Làm tròn số giây của timeline

  1. Click vào timeline của hoạt động
  1. Check các điểm dừng theo mô tả chi tiết của từng hoạt động.
  2. Co kéo timeline 1 chút để làm tròn số giây của timeline tại thời điểm dừng
  3. Làm tròn số giây cuối timeline

2.2. Điền dữ liệu

  1. Vào Assets > Data

Mã bài học và tên bài học đã được điền sẵn.

  1. Thêm STT và tên các hoạt động. Vd:
    • 1. Làm quen với bạn mới
    • 3. Game – Sắp xếp đồ dùng
  2. Điền thời gian cho các hoạt động. Ví dụ hoạt động 72 giây thì điền 72.
  3. Thêm điểm dừng tự động (time pause) nếu có. Vd: hoạt động có 2 điểm dừng vào 18s và 47s thì bổ sung 2 time pause. Cái trên điền 18, cái dưới điền 47

2.3. Sắp xếp timeline

Để thuận tiện cho việc review bài, sửa lỗi, nhiều người làm cùng 1 bài… Các timeline sau khi hoàn thiện cần được sắp xếp theo cấu trúc như sau. Trong đó, mỗi mục là 1 group (nhóm). Trong mỗi nhóm có thể bao gồm nhiều sub-group (nhóm nhỏ).

  1. Camera: Bao gồm Main Camera, Cinemachine
  2. Backgrounds: Bao gồm toàn bộ background trong hoạt động
  3. FX: Gồm SFX, VFX, BGM
  4. Events: Prefab một số cảnh đã dựng sẵn hoặc mini game đã làm sẵn, khi cần thì activate cho xuất hiện
  5. Characters:
    • Cách 1: Group theo chức năng: Activation, Characters Animation, Salsa
    • Cách 2: Group theo nhân vật: Su, Kem, Nova. Trong mỗi nhân vật lại có timeline Activation, Animation và Salsa. Nếu có Su ¾ và Su chính diện thì group riêng.
    • Cách 3: Group theo phân cảnh. Trong mỗi cảnh lại có thể group theo cách 1 hoặc cách 2 ở trên
  6. Props:
    • Cách 1: Group theo phân cảnh. Mỗi cảnh bao gồm Activation và Animation của các prop.
    • Cách 2: Group theo chức năng: Activation, Animation

2.4. 1 số tips sắp xếp timeline

  1. Không cần kéo xuống timeline các Object xuất hiện từ đầu đến cuối hoạt động
  2. Sử dụng 1 audio track để sắp xếp lời thoại:
    • Dùng 1 Audio track để ở group Salsa hoặc FX, sắp xếp lời thoại các nhân vật vào track này trước thay vì kéo thẳng vào Salsa của nhân vật.
    • TẮT hiển thị track này (disable/deactive) sau khi đã kéo thoại vào Salsa track của từng nhân vật. Tuyệt đối KHÔNG ĐƯỢC XOÁ
  3. Tạo Animation cho Group Object: Thay vì tạo Animation cho từng Object, có thể tạo Animation cho cả group Object để timeline gọn hơn
  4. Dùng Sub-Group để phân cấp timeline chi tiết hơn: Tạo Sub-Group để nhóm các Object xuất hiện trong cùng 1 cảnh (VD: Props > Mission > Mission_Step1, Mission_Step2, Mission_Step3)
  5. Sắp xếp theo thứ tự xuất hiện: Trong mỗi group (hoặc sub-group), sắp xếp timeline từ trên xuống, cái nào xuất hiện trước thì đặt ở trên, xuất hiện sau thì đặt xuống dưới
  6. Tạo group độc lập cho phân cảnh phức tạp: Với những cảnh đặc biệt và phức tạp, tạo group riêng cho các Object của phân cảnh đó

2.5. Kiểm tra animation & timeline

  1. Đối với video clip:
    • Kéo độ dài Video Track bằng với độ dài thực của video
    • Kéo Activation Track cho đủ time frame của đoạn đó
  2. Đối với timeline:
    • Đủ Object ở Activation Track
    • Kéo BGM, SFX vào phần Audio Source của Audio Track
  3. Đối với animation, chạy lại hoạt động 1 lần, đảm bảo animation:
    • Đúng với mô tả chi tiết hoặc yêu cầu/feedback sửa bài
    • Không bị lỗi hoạt hình, lỗi thoại
    • Đúng theo quy chuẩn về hoạt hình của team
    • Tự đánh giá thấy animation là phù hợp và hiệu quả đối với bài học và kiến thức, kĩ năng được truyền tải trong bài

2.6. Kiểm tra prefab hoạt động

  1. Click đúp vào prefab hoạt động để mở prefab
  1. Thêm activity manager cho các scene nếu chưa có (Thường đã có trong template. Nhưng nếu khi test bài mà hoạt động không chạy, thiếu hoạt động thì cần kiểm tra)
  2. Click vào Timeline trong Activity Manager, chọn timeline của hoạt động. Nếu làm đúng các bước trên, sẽ chỉ có 1 timeline hiện lên để chọn.
  3. Active prefab hoạt động, camera… Nếu không active prefab, khi xuất bài ra sẽ bị lỗi, không chạy được

3. Chuyển game thành prefab và đưa vào bài


3.1. Chuyển game thành prefab

  1. Vào mục Minigame, bật Scene đã dựng của Game.
  1. Tạo game object mới, đặt tên theo quy tắc Tênbài_Game. Ví dụ: Game của bài MGB04 là MGB04_Game.
  1. Reset position game object mới
  2. Tạo mới component Activity Manager
  1. Kéo toàn bộ game object trong Scene vào game object vừa tạo. Lưu ý collapse hết rồi mới kéo
  2. Kéo gameobject từ —Hierarchy— xuống —Project— để tạo prefab. Đưa prefab vào thư mục chứa prefab của bài.

3.2. Điền dữ liệu

  1. Mở Assets > Data
  1. Điền data game như đối với data hoạt động. Để thời gian = 0.

3.3. Chơi thử

  1. Kéo prefab từ —Hierarchy— lên —Project
  1. Ấn play để chơi thử.
  2. Ghi lại các lỗi nếu có và chuyển cho Công xử lý

4. Commit lên Sourcetree


4.1. Commit lên sourcetree

Thực hiện đúng theo trình tự sau

  1. Commit: Điền tên bài vừa làm vào phần ghi chú khi commit
  2. Fetch: Click vào Fetch 1 lần để Sourcetree kiểm tra data mới nhất
  3. Pull: Click vào Pull để kéo các cập nhật mới nhất về
  4. Push: Click vào Push để đẩy cập nhật từ máy mình lên Sourcetree

4.2. Xử lí conflict khi commit

  1. Trong trường hợp bị conflict, cần xác định xem
    • File nào bị conflict
    • Conflict với ai?
  2. Làm việc với người bị conflict để biết họ đã sửa gì file đó và quyết định xem sẽ giữ file của ai.
  3. Backup, copy file sẽ bị xoá nếu cần. Ví dụ Ánh làm animation nhân vật, Hương làm animation cho prop trên cùng 1 timeline và bị conflict. Có thể giữ lại file timeline của Ánh và copy timeline của Hương ra 1 file khác. Sau đấy copy animation cho prop của Hương đã làm vào timeline của Ánh.
  4. Chuột phải vào file bị lỗi conflict trong sourcetree. Chọn 1 trong 2 lựa chọn
    • Use “Mine”: Giữ file mình sửa và xoá các phần chỉnh sửa của người khác
    • Use “Theirs”: Giữ file người khác sửa.
  5. Check lại file bị conflict còn chạy ổn không. Bổ sung thêm các phần đã backup ở mục 3. nếu cần.

Lưu ý: Báo cho Công hoặc anh Quốc nếu có bất kỳ vấn đề gì, lăn tăn gì trong quá trình xử lý conflict. Không tự ý xử lý conflict mà không làm việc với team