Công cụ tạo visual novel trên desktop, hướng tới làm bản thay thế hiện đại cho Ren'Py: kéo thả, nhìn thấy ngay kết quả, không bắt người viết truyện phải học lập trình.
Viết bằng C# trên Godot 4 (.NET). Toàn bộ giao diện do engine tự vẽ bằng GPU, không có HTML hay webview ở bất kỳ đâu.
Dự án đang phát triển, đã xong khoảng 80% chức năng chính. Bạn đã tạo được một visual novel có nhánh, có nhân vật, ảnh và nhạc, rồi chơi thử từ đầu đến cuối ngay trong app. Chưa xuất game ra
.exeđược.
| Ren'Py | VNdev |
|---|---|
Viết kịch bản bằng ngôn ngữ .rpy, phải học cú pháp và luật thụt lề |
Kéo thả node, không bắt buộc viết code |
| Truyện phân nhánh nằm rải rác trong file text, không có sơ đồ | Story Graph cho thấy toàn cảnh nhánh nào dẫn tới đâu |
| Muốn dời nhân vật phải sửa code, chạy lại game rồi mới thấy | Trình soạn cảnh hiện đúng sân khấu tại từng dòng thoại |
| Không có công cụ AI hỗ trợ sáng tác | Có panel AI trong lộ trình, AI chỉ đề xuất, người viết quyết định |
Đã có:
- Tạo, mở, lưu dự án trên đĩa
- Story Graph: 7 loại node (Cảnh, Lựa chọn, Điều kiện, Biến, Nhảy, Kết thúc, Ghi chú), nối dây kéo thả
- Bộ kiểm tra đồ thị bắt 11 loại lỗi: node mồ côi, nhánh cụt, cổng chưa nối, biến chưa khai báo, thiếu cảnh / nhân vật / biểu cảm...
- Quản lý nhân vật, biểu cảm và biến (số, đúng/sai, chữ)
- Thư viện asset đọc thẳng từ thư mục
assets/của dự án - Trình soạn cảnh có xem trước sân khấu tại từng dòng thoại
- Hiệu ứng: chuyển cảnh (mờ qua đen, hoà tan, quét, vỡ điểm ảnh, nhoè), nhân vật trượt / nảy / mờ dần khi vào ra, rung, loé sáng, phủ màu, nhoè nền, zoom chậm, và mưa / tuyết / hoa anh đào / bụi / bong bóng. Chọn trong trình soạn cảnh là thấy ngay chuyển động y như lúc chơi
- Chơi thử trong app, có ảnh, nhạc, biến và rẽ nhánh theo lựa chọn
- Trợ lý AI bên cạnh: đọc hiểu cả dự án, cùng lên ý tưởng, trau chuốt lời thoại, gợi ý rẽ nhánh. Dùng API key của chính bạn (Claude, ChatGPT, Gemini, DeepSeek, OpenRouter, Grok hoặc Ollama chạy trên máy); AI chỉ đề xuất, bạn duyệt rồi mới ghi
Chưa có: save/load trong game, Gallery
và Ending List, xuất game ra .exe/web, đa ngôn ngữ đầy đủ.
Chi tiết từng chặng: docs/LO-TRINH.md.
- .NET 8 SDK
- Godot 4.3 .NET, đúng bản .NET (mono), không phải bản thường
Trên Windows, nếu Godot giải nén vào %LOCALAPPDATA%\Programs\Godot\,
double-click chay-app.bat là xong.
Nếu Godot nằm chỗ khác, chạy trực tiếp:
<đường-dẫn-tới>\Godot_v4.3-stable_mono_win64.exe --path appLệnh này mở thẳng app. Muốn mở Godot Editor để sửa code thì thêm -e.
dotnet build app\VNdev.App.csproj # build app, không cần mở Godot
dotnet run --project tests\VNdev.Core.Tests # chạy bộ test của lõi- Mở app, chọn Tạo dự án mới, chọn một thư mục trống.
- Chép ảnh nền vào
assets/backgrounds/, sprite nhân vật vàoassets/sprites/, nhạc vàoassets/bgm/. Sang tab Asset, bấm Quét lại. - Tab Nhân vật: tạo nhân vật, gán sprite cho từng biểu cảm.
- Tab Cốt truyện: thêm node Cảnh, chọn node rồi bấm → Mở trong Scene Canvas ở panel bên phải để soạn lời thoại. Nối dây tới node Kết thúc.
- Chọn node Cảnh đầu tiên, bấm ▶ Đặt làm điểm bắt đầu ở panel bên phải. Chương mới mặc định bắt đầu ở node Kết thúc, bỏ bước này thì Chơi thử sẽ nhảy thẳng tới màn kết.
- Bấm ▶ Chơi thử.
Định dạng dùng được: ảnh png jpg webp; nhạc hiện chỉ phát ogg và mp3.
Nhạc nền và nhân vật trên sân khấu chọn ngay trong tab Cảnh: bỏ chọn dòng để soạn Sân khấu đầu cảnh, chọn một dòng để cho nhân vật bước ra, đổi biểu cảm, dời chỗ hoặc rời sân khấu tại dòng đó.
Mỗi cảnh, mỗi chương, mỗi nhân vật nằm trong một file riêng, không có file nhị phân. Nhờ vậy đưa dự án lên Git thì diff được từng dòng thoại, và hai người sửa hai cảnh khác nhau sẽ merge không xung đột.
MyNovel/
├── project.json cấu hình, danh sách biến
├── story/*.graph.json đồ thị cốt truyện, mỗi chương một file
├── scenes/*.scene.json nền, nhạc, sân khấu, lời thoại của từng cảnh
├── characters/*.character.json nhân vật và biểu cảm
├── assets/
│ ├── backgrounds/ sprites/ bgm/ sfx/ voice/ ui/
└── i18n/
src/VNdev.Core .NET thuần: data model, đọc ghi dự án, bộ kiểm tra đồ thị
▲
│ tham chiếu một chiều
app/ Godot 4.3 .NET: editor + bộ chạy truyện
tests/ test cho lõi, chạy không cần Godot
VNdev.Corekhông phụ thuộc Godot. Lõi nhận mộtIFileSystemdo bên gọi cấp, không tự đọc đĩa. Cùng bộ code chạy được trong editor, trong game xuất ra sau này, và trong test.- Chỉ có một runtime. Khung soạn cảnh và màn chơi thử dùng chung
StageRenderer, nên thấy gì khi soạn thì người chơi thấy đúng như vậy. - Bộ test tự viết, không dùng xUnit, để không phụ thuộc NuGet.
Godot tự vẽ từng pixel như Ren'Py, cho sẵn GraphEdit để làm editor node,
cho sẵn animation, shader, particle, audio, và xử lý nhập liệu tiếng
Nhật/Trung/Thái tốt. Quan trọng nhất: editor và game xuất ra dùng chung một
engine.
Các hướng đã cân nhắc và loại bỏ (Tauri + React, Python + Qt, Rust + egui,
Avalonia, MonoGame) kèm lý do nằm trong CLAUDE.md.
| File | Nội dung |
|---|---|
docs/CHAY-DU-AN.md |
Hướng dẫn cài, chạy và dùng app từng bước |
docs/SPEC.md |
Đặc tả tính năng đầy đủ. Phần công nghệ trong đó thuộc hướng Tauri cũ đã bỏ |
docs/LO-TRINH.md |
Lộ trình và trạng thái từng chặng |
docs/design/ui-ux.html |
Bản thiết kế giao diện, mở bằng trình duyệt |
CLAUDE.md |
Ràng buộc kiến trúc, quy ước code, lịch sử quyết định |