ตั้งค่าครั้งแรก
สร้างบัญชีแอดมินหลัก (super) — ใช้ชื่อผู้ใช้ admin
เข้าสู่ระบบ Admin
เปลี่ยนรหัสผ่านของคุณ
ใช้รหัสปัจจุบันยืนยันก่อนตั้งรหัสใหม่ (ทุกแอดมินใช้ได้) · กดแท็บ "รหัสผ่าน" อีกครั้งเพื่อปิดและกลับไป OAuth
Token & OAuth (Facebook / Google)
เก็บ App ID / Client ID / Secret และ Redirect URI สำหรับ Login — หน้า Login จะดึงเฉพาะค่าที่ไม่เป็นความลับผ่าน oauth-public.php
Editor ฉาก (Lobby / ZEP / กบ / ตอบคำถาม)
สร้างและบันทึกแผนที่ — ใช้รหัสฉากตอนสร้างห้องในล็อบบี้ · คลิกซ้ายวาด / คลิกขวาลบ · ห้องโถง: พื้นที่เริ่มเกม (ส้ม) · เกมตอบคำถาม: วาดโซนถูก/ผิด + พื้นที่โชว์คำถาม (ทอง) — ข้อความคำถามจากแท็บ Minigame-1-จริงหรือไม่ · เลื่อนแถบเครื่องมือด้านบนได้แยกจากพื้นที่วาด
คำถามเกม (ถูก / ผิด)
ใช้กับฉากประเภท เกมตอบคำถาม ใน Editor — จำนวนข้อที่สุ่มต่อรอบตั้งได้ด้านล่าง (สูงสุด 50, ค่าเริ่ม 10) · เวลาเป็นวินาที (เก็บที่เซิร์ฟเวอร์เกม /Game/data/quiz-settings.json) · English: True/false quiz draws up to N shuffled questions per game session.
รายการคำถาม
แต่ละข้อ: ข้อความ + คำตอบที่ถูกต้อง (ถูก=จริง / ผิด=เท็จ)
คำถามหลายตัวเลือก (หยิบมาวาง)
ใช้กับฉากประเภท ตอบคำถาม — หยิบคำตอบมาวางกลาง ใน Editor — ผู้เล่นหยิบตัวเลือกไปวางโซนกลาง · ถ้ามีรายการที่นี่ เกมจะใช้เฉพาะชุดนี้ (ไม่ผสมกับคำถามถูก/ผิดแท็บคำถามเกม) · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ carryQuestions
อย่างน้อย 2 ตัวเลือกต่อข้อ (สูงสุด 6) · English: Per-round timing below applies only to quiz carry (after 3-2-1 in embed preview: question first, then options).
รายการคำถาม
รูปป้ายแต่ละช่อง: เลือกไฟล์แล้วกด «บันทึก» ได้เลย — ระบบจะรอให้อัปโหลดจบแล้วค่อยบันทึก URL ลงเซิร์ฟ (หรือรอเห็น «อัปโหลดแล้ว» ก่อนก็ได้) · ปุ่มบันทึกไม่ส่งไฟล์แทนการอัปโหลด · English: Pick plaque file then Save — we wait for upload to finish before writing URLs (Save does not replace the upload step).
Quiz Battle — คำถาม 3 ตัวเลือก (สไตล์โดม)
สร้างคำถามแบบ A / B / C แยกตามหมวดให้สอดคล้องธีม Quiz Battle · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ battleQuizMcq · ตัวอย่าง UI ด้านขวา (โดม + ป๊อปอัป) จำลองจากรีเฟอเรนซ์ในเกม
เวลาอ่าน/ตอบใช้ร่วมกับแท็บ คำถามเกมได้เมื่อนำไปผูกโหมดเล่นในอนาคต · English: MCQ with category; dome + modal preview for art direction.
รายการคำถาม
ก่อนกดบันทึก: ต้องมีข้อความคำถามและตัวเลือก A B C ครบทั้งสามช่องในแต่ละข้อที่ต้องการเก็บ · ถ้าช่องว่าง ระบบจะไม่บันทึกข้อนั้นและจะแจ้งเตือน
ตัวอย่าง (ตามรีเฟอเรนซ์)
การกระทำใดผิดกฎหมายไซเบอร์?
เย่! คุณตอบคำถามครบทุกข้อแล้ว มาสรุปคะแนนกัน
กระโดดให้รอด — ตั้งค่าเกม
คนละโหมดกับ พรมแดง (Gauntlet) · เก็บที่ /Game/data/game-timing.json ฟิลด์ jumpSurviveJumpHeightMult · jumpSurviveMissionTimeSec · jumpSurvivePlatformTiles (3 ช่อง) · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · ถ้า API 404 ให้รีสตาร์ท Node ที่รัน Game/server.js
ใช้กับฉากประเภท กระโดดให้รอด เท่านั้น · ถ้าในแมปตั้ง jumpSurviveJumpImpulse > 0 จะใช้ค่านั้นแทน (override) · English: Jump height multiplier vs character height; per-map impulse overrides.
นับจากเริ่มรอบจริง (หลังนับถอยหลัง) · ถ้าในแมปตั้ง jumpSurviveTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ไม่ใช่ค่าเดียวกับ "จำกัดเวลาเกม" ของพรมแดง · English: Per-map jumpSurviveTimeSec overrides this global default.
ยิงยานอวกาศ (Violent Crime / space_shooter) — เวลารอบ + รูปยานต่อช่อง
เก็บที่ /Game/data/game-timing.json — spaceShooterMissionTimeSec · spaceShooterShipImageUrls · spaceShooterShipDamageOverlayUrls · spaceShooterAsteroidIntervalMs · spaceShooterAsteroidSpriteUrls + spaceShooterAsteroidExplodeFrameMs · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · อัปโหลด PNG ไปที่ /Game/public/img/ViolentCrime/ (โฟลเดอร์ไม่มีช่องว่าง) · อัปโหลด overlay ผ่านคลัง Gauntlet (/Game/img/gauntlet-assets/)
นับจากเริ่มรอบในเกม · ถ้าในแมปตั้ง spaceShooterTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ตั้ง spaceShooterTimeSec = 0 บนแมป = ไม่จับเวลา
Minigame-7 — ยิง Mega Virus (balloon_boss)
เก็บที่ /Game/data/game-timing.json · แมป balloonBossTimeSec ทับค่าด้านล่าง · แมป = 0 = ไม่จับเวลา · ถ้าแมปไม่ตั้งเวลา: ใช้ช่องล่าง (หรือ 120 วิ ถ้าใส่ 0) · English: Map time overrides; map 0 = unlimited; else global seconds below (or 120s if 0).
เวลาเกม — พรมแดงสุดท้าย (Gauntlet)
เก็บที่เซิร์ฟเวอร์เกม /Game/data/game-timing.json · หลังบันทึกห้องที่กำลังเล่นจะปรับความถี่ tick ทันที · ค่าจะส่งไปยังผู้เล่นผ่าน gauntlet-sync · จำกัดเวลานับจากตอนโฮสต์เริ่มเกมพรมแดง — หมดเวลาแล้วเกมจบและส่งทุกคนกลับฉากล็อบบี้บนเซิร์ฟเวอร์ · ถ้าขึ้น Not Found ให้รีสตาร์ท Nodeที่รัน Game/server.js (เช่น pm2 restart) หลัง deploy · เวลามินิเกมกระโดดขึ้นแท่นตั้งที่แท็บ Minigame-5 · เวลายิงอุกาบาตตั้งที่แท็บ Minigame-6
ค่าเวลาเกม: ตั้ง 0 = ไม่จำกัด · ตั้งอย่างน้อย 10 วินาทีถ้าต้องการจับเวลา (สูงสุด 7200 = 2 ชม.) · Per-round time limit; 0 = no limit, else min 10s, max 7200s.
Minigame-3 — Tower block (Stack)
ปรับความเร็วสวิง (crane) และความยาวแท่งบล็อกในเกม Stack · เก็บที่ /Game/data/game-timing.json · ผู้เล่นได้ค่าใหม่เมื่อเข้าห้อง / รีเฟรชหน้าเล่น
แนะนำสวิง 0.35–0.9 · สูงสุด ~2.8 · Lower Hz = slower pendulum.
ว่างช่อง = ใช้สูตรจากพื้นที่ลงบนแผนที่ (~48% ของความกว้างโซนลง) · ระหว่าง 0.85–3.2 tile · แท่งยาว = ยากขึ้น
ใช้เฉพาะโหมด Stack + แมปภารกิจ Tower · คะแนน 10/ชั้น (คอมโบ ×2) · Progress ต่อชั้น = 100% ÷ จำนวนชั้นด้านบน (คอมโบ ×2)
ตัวละคร (4 ทิศ)
อัปโหลดสกิน 4 ทิศหรือแบบเลเยอร์ และเลือกตัวที่ใช้ในล็อบบี้/เกม — เปิดแยกได้ที่ /Game/character.html
บัญชีผู้ใช้ (รายการภายในระบบ)
ใช้บันทึก / บล็อกผู้เล่นหรือบัญชีที่เชื่อมกับ Guest / Facebook / Google — ผู้เล่น Guest ใน Main-Lobby จะถูกสร้างอัตโนมัติและมี COINS ตามที่เก็บที่นี่
| ชื่อ | อีเมล | ประเภท | Provider ID | COINS | สถานะ |
|---|
บัญชีแอดมิน
เฉพาะ super admin เท่านั้นที่เพิ่ม/ลบแอดมินได้
ตั้งรหัสใหม่ให้แอดมินอื่น (super)
ไม่ต้องรู้รหัสเดิม — ใช้เมื่อผู้ใช้ลืมรหัส
| ชื่อผู้ใช้ | บทบาท | สร้างเมื่อ |
|---|