Files
gen_game-a0/game.json
2026-01-14 17:02:19 +00:00

998 lines
40 KiB
JSON

{
"game_types": [
{
"name": "Quiz - Trắc nghiệm",
"description": "Câu hỏi trắc nghiệm với các lựa chọn, chọn 1 đáp án đúng",
"game_mechanics": {
"cách_chơi": "Người chơi đọc câu hỏi và chọn 1 trong các đáp án",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh đáp án người chơi chọn với trường 'answer'"
},
"base_schema": {
"question": {
"type": "string",
"nullable": false,
"mô_tả": "Nội dung câu hỏi, dùng ____ cho chỗ trống"
},
"request": {
"type": "string",
"nullable": false,
"mô_tả": "Yêu cầu (VD: 'Chọn đáp án đúng', 'Điền vào chỗ trống')"
},
"answer": {
"type": "string",
"nullable": false,
"mô_tả": "Đáp án đúng"
},
"options": {
"type": "array<string>",
"nullable": false,
"mô_tả": "Danh sách các lựa chọn (2-4 options)"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh minh họa"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh để trả lời"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Quiz Text Only",
"mô_tả": "Câu hỏi văn bản thuần túy, không có hình ảnh",
"required_fields": [
"question",
"request",
"answer",
"options"
],
"example": {
"question": "Con hươu cao cổ có cổ ____.",
"request": "Điền vào chỗ trống",
"answer": "dài",
"options": [
"dài",
"ngắn",
"to"
]
}
},
{
"name": "Quiz với Hình ảnh",
"mô_tả": "Câu hỏi đi kèm hình ảnh minh họa bắt buộc phải xem",
"required_fields": [
"question",
"request",
"answer",
"options",
"image_url",
"is_required_image"
],
"example": {
"question": "Đây là con gì?",
"request": "Nhìn tranh và chọn đáp án đúng",
"answer": "mèo",
"options": [
"chó",
"mèo",
"thỏ"
],
"image_url": "https://example.com/cat.jpg",
"is_required_image": true
}
}
]
},
{
"name": "Sequence - Sắp xếp thứ tự",
"description": "Sắp xếp các từ/câu theo đúng thứ tự",
"game_mechanics": {
"cách_chơi": "Người chơi kéo thả hoặc chọn thứ tự các phần tử",
"cách_tính_điểm": "Đúng toàn bộ = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh thứ tự người chơi sắp với 'sentence' hoặc 'word'"
},
"base_schema": {
"word": {
"type": "string",
"nullable": true,
"mô_tả": "Từ/cụm từ đúng (dùng khi sub_type='word')"
},
"sentence": {
"type": "string",
"nullable": true,
"mô_tả": "Câu hoàn chỉnh đúng (dùng khi sub_type='sentence')"
},
"parts": {
"type": "array<string>",
"nullable": false,
"mô_tả": "Mảng các phần tử theo thứ tự xáo trộn từ đề bài gốc"
},
"is_scrambled": {
"type": "boolean",
"nullable": false,
"mô_tả": "true = đề bài đã xáo trộn, cần sắp xếp lại"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh gợi ý"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Sắp xếp câu (Sentence Scramble)",
"mô_tả": "Sắp xếp các từ rời rạc thành câu hoàn chỉnh",
"required_fields": [
"sentence",
"parts",
"is_scrambled"
],
"note": "parts lấy theo thứ tự xáo trộn trong đề gốc",
"example": {
"sentence": "Apple is red.",
"parts": [
"red",
"is",
"Apple"
],
"is_scrambled": true
}
},
{
"name": "Sắp xếp chữ cái (Word Scramble)",
"mô_tả": "Sắp xếp các chữ cái rời rạc thành từ hoàn chỉnh",
"required_fields": [
"word",
"parts",
"is_scrambled"
],
"example": {
"word": "banana",
"parts": [
"b",
"a",
"n",
"a",
"n",
"a"
],
"is_scrambled": true
}
},
{
"name": "Sắp xếp câu với Hình ảnh",
"mô_tả": "Sắp xếp câu dựa theo gợi ý hình ảnh",
"required_fields": [
"sentence",
"parts",
"is_scrambled",
"image_url",
"is_required_image"
],
"example": {
"sentence": "The cat is sleeping.",
"parts": [
"sleeping",
"is",
"cat",
"The"
],
"is_scrambled": true,
"image_url": "https://example.com/sleeping_cat.jpg",
"is_required_image": true
}
}
]
},
{
"name": "True/False - Đúng/Sai",
"description": "Xác định câu phát biểu là đúng hay sai",
"game_mechanics": {
"cách_chơi": "Người chơi đọc câu phát biểu và chọn Đúng hoặc Sai",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh lựa chọn người chơi với trường 'is_true'"
},
"base_schema": {
"statement": {
"type": "string",
"nullable": false,
"mô_tả": "Câu phát biểu cần xác định đúng/sai"
},
"is_true": {
"type": "boolean",
"nullable": false,
"mô_tả": "true nếu câu đúng, false nếu sai"
},
"true_label": {
"type": "string",
"nullable": false,
"default": "True",
"mô_tả": "Nhãn nút Đúng (VD: 'Đúng', 'Yes')"
},
"false_label": {
"type": "string",
"nullable": false,
"default": "False",
"mô_tả": "Nhãn nút Sai (VD: 'Sai', 'No')"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Đúng/Sai Text",
"mô_tả": "Câu phát biểu văn bản thuần túy",
"required_fields": [
"statement",
"is_true",
"true_label",
"false_label"
],
"example": {
"statement": "Bầu trời màu xanh.",
"is_true": true,
"true_label": "Đúng",
"false_label": "Sai"
}
},
{
"name": "Đúng/Sai với Hình ảnh",
"mô_tả": "Xác định đúng/sai dựa trên hình ảnh",
"required_fields": [
"statement",
"is_true",
"true_label",
"false_label",
"image_url",
"is_required_image"
],
"example": {
"statement": "Đây là quả táo.",
"is_true": true,
"true_label": "Đúng",
"false_label": "Sai",
"image_url": "https://example.com/apple.jpg",
"is_required_image": true
}
}
]
},
{
"name": "Matching - Nối đôi",
"description": "Nối các cặp tương ứng với nhau",
"game_mechanics": {
"cách_chơi": "Người chơi kéo nối hoặc chọn cặp tương ứng giữa 2 cột",
"cách_tính_điểm": "Mỗi cặp đúng = 1 điểm",
"xác_định_đáp_án": "So sánh cặp left-right người chơi nối với mảng 'pairs'"
},
"base_schema": {
"pairs": {
"type": "array<MatchPair>",
"nullable": false,
"mô_tả": "Danh sách các cặp nối (min 2, max 10)",
"item_schema": {
"left": {
"text": {
"type": "string",
"nullable": true,
"mô_tả": "Nội dung text cột trái"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh cột trái"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
}
},
"right": {
"text": {
"type": "string",
"nullable": true,
"mô_tả": "Nội dung text cột phải"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh cột phải"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
}
}
}
},
"mode": {
"type": "enum",
"nullable": false,
"values": [
"text_to_text",
"text_to_image",
"image_to_image",
"mixed"
],
"mô_tả": "Loại nối đôi"
},
"left_label": {
"type": "string",
"nullable": false,
"default": "Column A",
"mô_tả": "Tên cột trái"
},
"right_label": {
"type": "string",
"nullable": false,
"default": "Column B",
"mô_tả": "Tên cột phải"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Nối Text - Text",
"mô_tả": "Nối 2 cột văn bản (câu hỏi-đáp án, từ-nghĩa)",
"required_fields": [
"pairs",
"mode",
"left_label",
"right_label"
],
"note": "Cả left và right đều dùng field 'text'",
"example": {
"pairs": [
{
"left": {
"text": "Thủ đô của Pháp?"
},
"right": {
"text": "Paris"
}
},
{
"left": {
"text": "Màu của bầu trời?"
},
"right": {
"text": "Xanh"
}
}
],
"mode": "text_to_text",
"left_label": "Câu hỏi",
"right_label": "Đáp án"
}
},
{
"name": "Nối Text - Hình ảnh",
"mô_tả": "Nối từ với hình ảnh tương ứng",
"required_fields": [
"pairs",
"mode",
"left_label",
"right_label"
],
"note": "left dùng 'text', right dùng 'image_url' + 'image_description'",
"example": {
"pairs": [
{
"left": {
"text": "Apple"
},
"right": {
"image_url": "https://example.com/apple.jpg",
"image_description": "Quả táo đỏ"
}
}
],
"mode": "text_to_image",
"left_label": "Từ vựng",
"right_label": "Hình ảnh"
}
},
{
"name": "Nối Hình ảnh - Hình ảnh",
"mô_tả": "Nối 2 hình ảnh có liên quan với nhau",
"required_fields": [
"pairs",
"mode",
"left_label",
"right_label"
],
"note": "Cả left và right đều dùng 'image_url' + 'image_description'",
"example": {
"pairs": [
{
"left": {
"image_url": "https://example.com/cat.jpg",
"image_description": "Con mèo"
},
"right": {
"image_url": "https://example.com/fish.jpg",
"image_description": "Con cá"
}
}
],
"mode": "image_to_image",
"left_label": "Động vật",
"right_label": "Thức ăn yêu thích"
}
}
]
},
{
"name": "Odd One Out - Chọn từ khác loại",
"description": "Chọn từ khác biệt nhất trong nhóm",
"game_mechanics": {
"cách_chơi": "Người chơi nhìn nhóm từ và chọn từ không cùng loại",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh lựa chọn với trường 'answer'"
},
"base_schema": {
"options": {
"type": "array<string>",
"nullable": false,
"min": 3,
"max": 6,
"mô_tả": "Danh sách 3-6 từ để chọn"
},
"answer": {
"type": "string",
"nullable": false,
"mô_tả": "Từ khác loại (đáp án) - phải nằm trong options"
},
"reason": {
"type": "string",
"nullable": false,
"mô_tả": "Lý do tại sao đáp án khác biệt"
},
"category": {
"type": "string",
"nullable": false,
"mô_tả": "Danh mục của các từ CÒN LẠI (không phải đáp án)"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh đáp án"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Chọn từ khác loại - Text",
"mô_tả": "Nhóm từ văn bản, chọn từ khác biệt",
"required_fields": [
"options",
"answer",
"reason",
"category"
],
"example": {
"options": [
"chó",
"mèo",
"táo",
"chim"
],
"answer": "táo",
"reason": "Các từ khác là động vật, táo là hoa quả",
"category": "động vật"
}
},
{
"name": "Chọn từ khác loại - Với Hình ảnh",
"mô_tả": "Nhóm từ kèm hình ảnh minh họa cho đáp án",
"required_fields": [
"options",
"answer",
"reason",
"category",
"image_url",
"is_required_image"
],
"example": {
"options": [
"xe đạp",
"ô tô",
"máy bay",
"chuối"
],
"answer": "chuối",
"reason": "Các từ khác là phương tiện, chuối là hoa quả",
"category": "phương tiện",
"image_url": "https://example.com/banana.jpg",
"is_required_image": true
}
}
]
},
{
"name": "Fill Blank - Điền vào chỗ trống",
"description": "Điền từ/chữ cái còn thiếu",
"game_mechanics": {
"cách_chơi": "Người chơi kéo thả hoặc gõ từ/chữ cái vào chỗ trống",
"cách_tính_điểm": "Mỗi chỗ trống đúng = 1 điểm",
"xác_định_đáp_án": "So sánh input người chơi với mảng 'answers' theo thứ tự"
},
"base_schema": {
"mode": {
"type": "enum",
"nullable": false,
"values": [
"drag_drop",
"type"
],
"mô_tả": "drag_drop = kéo thả, type = gõ tay"
},
"target": {
"type": "enum",
"nullable": false,
"values": [
"sentence",
"word"
],
"mô_tả": "sentence = điền từ, word = điền chữ cái"
},
"question": {
"type": "string",
"nullable": false,
"mô_tả": "Câu/từ với ____ đánh dấu chỗ trống"
},
"answers": {
"type": "array<string>",
"nullable": false,
"mô_tả": "Danh sách đáp án theo thứ tự chỗ trống"
},
"word_bank": {
"type": "array<string>",
"nullable": false,
"default": [],
"mô_tả": "Ngân hàng từ (chỉ dùng cho mode=drag_drop)"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh gợi ý"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Điền từ - Kéo thả",
"mô_tả": "Kéo từ từ ngân hàng từ vào chỗ trống trong câu",
"required_fields": [
"mode",
"target",
"question",
"answers",
"word_bank"
],
"example": {
"mode": "drag_drop",
"target": "sentence",
"question": "Mặt trời mọc ở hướng ____.",
"answers": [
"đông"
],
"word_bank": [
"đông",
"tây",
"nam",
"bắc"
]
}
},
{
"name": "Điền từ - Gõ tay",
"mô_tả": "Tự gõ từ vào chỗ trống (không có gợi ý)",
"required_fields": [
"mode",
"target",
"question",
"answers"
],
"note": "word_bank để rỗng []",
"example": {
"mode": "type",
"target": "sentence",
"question": "Việt Nam có thủ đô là ____.",
"answers": [
"Hà Nội"
],
"word_bank": []
}
},
{
"name": "Điền chữ cái - Spelling",
"mô_tả": "Điền chữ cái còn thiếu trong từ, thường kèm hình ảnh gợi ý",
"required_fields": [
"mode",
"target",
"question",
"answers",
"word_bank",
"image_url",
"is_required_image"
],
"example": {
"mode": "drag_drop",
"target": "word",
"question": "A____ple",
"answers": [
"p"
],
"word_bank": [
"p",
"b",
"d"
],
"image_url": "https://example.com/apple.jpg",
"is_required_image": true
}
}
]
},
{
"name": "Circle Word - Khoanh tròn từ đúng",
"description": "Chọn từ đúng trong các tùy chọn nằm trong câu",
"game_mechanics": {
"cách_chơi": "Người chơi đọc câu và click/chọn từ đúng trong ngoặc",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh từ người chọn với trường 'answer'"
},
"base_schema": {
"sentence_template": {
"type": "string",
"nullable": false,
"mô_tả": "Câu với ____ đánh dấu vị trí cần chọn từ"
},
"options": {
"type": "array<string>",
"nullable": false,
"min": 2,
"max": 2,
"mô_tả": "Các từ để chọn (2 từ)"
},
"answer": {
"type": "string",
"nullable": false,
"mô_tả": "Từ đúng - phải nằm trong options"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh gợi ý"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Khoanh tròn từ - Ngữ pháp",
"mô_tả": "Chọn từ đúng ngữ pháp trong câu (2 lựa chọn)",
"required_fields": [
"sentence_template",
"options",
"answer"
],
"example": {
"sentence_template": "You should speak ____ to your teacher.",
"options": [
"politely",
"loudly"
],
"answer": "politely"
}
}
]
},
{
"name": "Drag Drop - Kéo thả đáp án",
"description": "Kéo thả đáp án đúng vào chỗ trống",
"game_mechanics": {
"cách_chơi": "Người chơi kéo từ từ danh sách options vào chỗ trống trong câu",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh từ người kéo vào với trường 'answer'"
},
"base_schema": {
"question": {
"type": "string",
"nullable": false,
"mô_tả": "Câu với ____ đánh dấu chỗ trống"
},
"instruction": {
"type": "string",
"nullable": false,
"default": "Drag the correct answer",
"mô_tả": "Hướng dẫn cho người chơi"
},
"options": {
"type": "array<string>",
"nullable": false,
"min": 2,
"mô_tả": "Danh sách từ để kéo thả"
},
"answer": {
"type": "string",
"nullable": false,
"mô_tả": "Đáp án đúng - phải nằm trong options"
},
"image_url": {
"type": "string",
"nullable": true,
"mô_tả": "URL hình ảnh gợi ý"
},
"image_description": {
"type": "string",
"nullable": true,
"mô_tả": "Mô tả hình ảnh"
},
"is_required_image": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = bắt buộc xem ảnh"
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Kéo thả - Text Only",
"mô_tả": "Kéo từ vào câu, không có hình ảnh",
"required_fields": [
"question",
"instruction",
"options",
"answer"
],
"example": {
"question": "He can ____.",
"instruction": "Hoàn thành câu",
"options": [
"run",
"swim",
"read"
],
"answer": "run"
}
},
{
"name": "Kéo thả - Với Hình ảnh",
"mô_tả": "Nhìn hình và kéo từ đúng vào chỗ trống",
"required_fields": [
"question",
"instruction",
"options",
"answer",
"image_url",
"is_required_image"
],
"example": {
"question": "She can ____.",
"instruction": "Nhìn tranh và hoàn thành câu",
"options": [
"run",
"swim",
"read"
],
"answer": "read",
"image_url": "https://example.com/girl_reading.jpg",
"is_required_image": true
}
}
]
},
{
"name": "Quiz Image - Chọn hình đúng",
"description": "Chọn hình ảnh đúng dựa trên câu hỏi",
"game_mechanics": {
"cách_chơi": "Người chơi đọc câu hỏi và click vào hình ảnh đúng",
"cách_tính_điểm": "Đúng = 1 điểm, Sai = 0 điểm",
"xác_định_đáp_án": "So sánh id hình người chọn với option có is_correct=true"
},
"base_schema": {
"question": {
"type": "string",
"nullable": false,
"mô_tả": "Câu hỏi yêu cầu chọn hình"
},
"options": {
"type": "array<ImageOption>",
"nullable": false,
"min": 2,
"max": 4,
"mô_tả": "Danh sách hình ảnh để chọn",
"item_schema": {
"id": {
"type": "number",
"nullable": false,
"mô_tả": "Index của option (0-3)"
},
"image_url": {
"type": "string",
"nullable": false,
"mô_tả": "URL hình ảnh"
},
"image_description": {
"type": "string",
"nullable": false,
"mô_tả": "Mô tả nội dung hình ảnh"
},
"is_correct": {
"type": "boolean",
"nullable": false,
"mô_tả": "true nếu đây là đáp án đúng"
},
"text_label": {
"type": "string",
"nullable": true,
"mô_tả": "Nhãn hiển thị dưới hình (optional)"
}
}
},
"is_example": {
"type": "boolean",
"nullable": false,
"default": false,
"mô_tả": "true = đây là câu mẫu"
}
},
"variants": [
{
"name": "Chọn hình - Text Question",
"mô_tả": "Đọc câu hỏi văn bản và chọn hình ảnh đúng",
"required_fields": [
"question",
"options"
],
"note": "Chính xác 1 option phải có is_correct=true",
"example": {
"question": "Đâu là quả táo?",
"options": [
{
"id": 0,
"image_url": "https://example.com/apple.jpg",
"image_description": "Quả táo đỏ",
"is_correct": true,
"text_label": null
},
{
"id": 1,
"image_url": "https://example.com/banana.jpg",
"image_description": "Quả chuối vàng",
"is_correct": false,
"text_label": null
},
{
"id": 2,
"image_url": "https://example.com/orange.jpg",
"image_description": "Quả cam",
"is_correct": false,
"text_label": null
}
]
}
}
]
}
],
"notes": {
"is_required_image": "true = bắt buộc phải có và xem hình ảnh để chơi game, false = hình ảnh chỉ là minh họa hoặc không có",
"blank_format": "Sử dụng ____ (4 gạch dưới) cho chỗ trống trong câu hỏi"
}
}