[Showcase] NPC biết trò chuyện trong game indie, chạy model nhỏ ngay trên máy người chơi
Sau topic hỏi về chuyện chuyển hướng game + AI hôm trước, mình quyết định làm thử một bản demo: NPC chủ quán trọ trong game nhập vai nhỏ, người chơi gõ chữ tự do để trò chuyện, NPC trả lời đúng tính cách và nhớ người chơi. YÊU CẦU ĐẶT RA - Chạy hoàn toàn trên máy người chơi, không gọi API (game indie không gánh nổi chi phí server). - Không làm tụt khung hình của game. - NPC không được "phá vai": không nói về thế giới thực, không tiết lộ cốt truyện chưa tới. CÁCH LÀM 1. Model: dùng một model ngôn ngữ nhỏ cỡ 1–3B tham số, lượng tử hoá 4-bit, chạy qua llama.cpp tích hợp vào Unity bằng plugin. Model chạy trên luồng riêng để không chặn vòng lặp game. 2. Tính cách: mô tả nhân vật trong system prompt: tên, tuổi, giọng nói, điều nhân vật biết và không biết, kèm 5 đoạn hội thoại mẫu. Hội thoại mẫu quan trọng hơn mô tả rất nhiều với model nhỏ. 3. Trí nhớ: không nhét toàn bộ lịch sử vào prompt. Sau mỗi cuộc trò chuyện, model tóm tắt thành vài "sự kiện" (người chơi tên gì, đã giúp gì, có nợ tiền không), lưu vào file save. Lần sau gặp lại chỉ đưa các sự kiện liên quan vào prompt. 4. Gắn với gameplay: NPC có thể trả về một "hành động" theo định dạng cố định (ví dụ giảm giá phòng, giao nhiệm vụ). Game kiểm tra hành động có hợp lệ không rồi mới thực hiện, không để model tự quyết hoàn toàn. KHÓ KHĂN - Model nhỏ hay quên vai sau nhiều lượt. Cách xử lý: nhắc lại tính cách ngắn gọn ở cuối prompt mỗi lượt. - Tiếng Việt của model nhỏ còn hạn chế nên bản demo mình làm tiếng Anh trước. - Người chơi rất thích "phá" NPC. Mình thêm một lớp kiểm tra đầu ra: câu trả lời lạc đề thì thay bằng một câu có sẵn kiểu "Ta không hiểu cậu nói gì, uống thêm chút rượu đi". - Máy cấu hình thấp: có tuỳ chọn tắt AI, NPC quay về hội thoại chọn sẵn. KẾT QUẢ - Trên máy có GPU tầm trung, NPC trả lời trong khoảng 1–2 giây, game vẫn giữ khung hình ổn định. - 20 người chơi thử đều nói trò chuyện với NPC là phần thú vị nhất, dù câu trả lời đôi khi ngây ngô. Ai làm game có ý tưởng gì thêm cho NPC thì góp ý nhé, mình định thử cho NPC phản ứng theo thời gian trong ngày và thời tiết trong game.