วิธีไคลเอนต์ / เกมเซิร์ฟเวอร์โดยใช้ Google App Engine (มองหาบทช่วยสอน)


11

(หมายเหตุ: นี่เป็นคำถามที่ซ้ำกันที่ฉันถามเกี่ยวกับ SO โดยลืมไปชั่วคราวเกี่ยวกับ GameDev <วางหูด้วยความอับอาย> เมื่อตอบแล้วฉันจะลิงค์กลับไปที่อื่น)

ฉันกำลังพยายามทำเกมไคลเอนต์ / เซิร์ฟเวอร์ครั้งแรกโดยใช้ Google Apps Engine เป็นแบ็คเอนด์ของฉัน (ข้อกำหนดเฉพาะ) ฉันได้ทำแบบฝึกหัด (Java) แล้ว แต่ทั้งหมดดูเหมือนว่าจะเป็นเบราว์เซอร์สูง

โดยทั่วไปฉันต้องการแอป (มือถือไม่ใช่เรื่องสำคัญ) ไปที่:

  • อนุญาตให้ผู้ใช้สร้างบัญชีเกม (ไม่ใช่บัญชี Google!)
  • เข้าสู่ระบบด้วยบัญชีนั้น
  • กดปุ่ม "MARCO" เพื่อส่งคำขอระบุบัญชีไปยังเซิร์ฟเวอร์
  • รับการตอบสนอง "POLO" จากเซิร์ฟเวอร์
    • ในฐานะข้อมูล (เช่นวัตถุ JSON, XML-DOM หรือที่คล้ายกัน) ไม่เหมือนกับเว็บเพจ

ทุกคนสามารถชี้ให้ฉันเป็นโครงการสอน / ตัวอย่างที่ดี / การอ่านอย่างละเอียดเพื่อช่วยให้ฉันประสบความสำเร็จได้หรือไม่? ฉันค่อนข้างมั่นใจว่าเมื่อฉันทำงานได้ฉันสามารถทำส่วนที่เหลือทั้งหมด - แต่ฉันมีปัญหา "ติดอยู่ที่ประตูเริ่มต้น" ไม่สามารถทำงานขั้นพื้นฐานการลงชื่อเข้าใช้บัญชีและ การแลกเปลี่ยนข้อมูลที่ไม่ใช่ HTML

ขอบคุณ!


ฝั่งเซิร์ฟเวอร์จะเขียนใน Java หรือ Python หรือไม่? ฐานข้อมูลอย่างง่ายบนเซิร์ฟเวอร์จะเพียงพอหรือคุณจำเป็นต้องดำเนินการตรรกะเกมมาก?
Alex Schearer

@Alex: ฉันเขียนด้วยภาษาจาวา จะมีทั้งฐานข้อมูลอย่างง่ายและตรรกะของเกมแม้ว่าฉันจะไม่แน่ใจว่าทำไมจึงมีความสำคัญสำหรับคำถามของฉัน ส่วนที่ฉันติดอยู่ในการตั้งค่าการตรวจสอบผู้ใช้ ตัวอย่างมาร์โค / โปโลเป็นเพียงการแลกเปลี่ยนข้อมูลเกมเล็กน้อย แต่ส่วนสำคัญที่ฉันประสบคือการรับรองความถูกต้องของผู้ใช้
Olie

คำตอบ:


3

ฉันมีตัวอย่างการทำงานของเกมไคลเอนต์ / เซิร์ฟเวอร์ที่สร้างขึ้นบน App Engine คุณสามารถแยกบน GitHubและลองสาธิตสด

ฉันยังไม่ได้เขียนเกี่ยวกับมันหรืออะไรเลย แต่รหัสมีความเห็นค่อนข้างดี มีความสุข!


0

สำหรับสิ่งที่เรียบง่ายฉันขอแนะนำให้ใช้ python (และโดยทั่วไปแล้วประสบการณ์ของงูหลาม GAE นั้นค่อนข้างดี)

ฉันค่อนข้างแน่ใจว่าสำหรับสิ่งที่คุณต้องการจะทำแบบฝึกหัดโปรแกรมประยุกต์และเอกสารประกอบง่าย ๆ ก็เพียงพอแล้ว คุณต้องการสร้างแอปพลิเคชั่นที่มีตัวควบคุม 3 ตัว (ตรวจสอบข้อมูลรับรองสร้างข้อมูลประจำตัวและตอบคำตอบ marco-polo)

มีตัวอย่างโอเพนซอร์ซโอเพนซอร์สสำหรับเอ็นจิ้นแอพใน gitHub และเอกสารจำนวนมากบนเว็บไซต์อย่างเป็นทางการฉันจะบอกว่าลองทำดูและถ้าคุณพบกำแพงถามคำถามเฉพาะ = D

หวังว่าจะช่วย!


การเรียนรู้ภาษาใหม่ (หลาม) ไม่ได้อยู่ในข้อมูลจำเพาะของลูกค้า ฉันรู้ว่า Java และเป็นข้อ จำกัด เวลา ลำดับชั้นของวัตถุทั้งหมดควรจะคล้ายกันไม่? ฉันเข้าใจว่าสิ่งที่ฉันขอนั้นง่ายมาก แต่ฉันได้ทำแบบฝึกหัดเสร็จแล้วและมันก็ไม่ใช่แค่คลิกสำหรับฉัน นอกจากนี้บทช่วยสอนไม่ได้แสดงให้เห็นถึงสิ่งที่ฉันถามและฉันไม่สามารถเข้าใจวิธีการแปลงเป็น "ไม่ใช่บัญชี Google" ได้
Olie

0

ส่วนที่ไม่ได้คลิกสำหรับฉัน - และอย่างที่ฉันสงสัยว่าเป็นเรื่องง่ายมาก - เป็นเพียงเรื่องของการใช้ doPost () (หรือ doGet () แต่ฉันใช้ POST) และเขียน กลับไปที่ผู้เผชิญเหตุ

นอกจากนี้ยังมีบางส่วนที่ฉันไม่ได้ทำค่อนข้างถูกต้องในครั้งแรกเกี่ยวกับการตั้งค่าชื่อผู้ตอบคลาสและ URL ในไฟล์ web.xml (ในโฟลเดอร์ war)

เมื่อฉันได้รับการตั้งค่า (web.xml) อย่างถูกต้องแล้วชุดคำสั่ง doPost () ก็เป็นเพียงบางสิ่งตามแนวของ:

public void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws IOException {
    String reqTypeStr = req.getParameter("reqType");
    if (reqTypeStr.equalsIgnoreCase("marco")
        resp.getWriter().println("Polo!");
    else
            resp.getWriter().println("huh?");
}

มีรายละเอียดอื่น ๆ มากมาย แต่มันเป็นสองอย่างที่ทำให้ฉันยุ่งมากที่สุด เมื่อฉันทำลายกำแพงที่เรียบง่ายนั้นทุกอย่างก็ไหลมารวมกันอย่างรวดเร็ว


หมายเหตุ: สิ่งนี้ยังไม่ได้ชี้ให้ฉันเห็นถึงการสอน / คำแนะนำที่ดีซึ่งเป็นสิ่งที่ฉันถามในตอนแรกถ้ามีคนชี้ให้ฉันเห็นสิ่งที่ยอดเยี่ยมฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง
Olie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.