ภาษาใดบ้างที่ใช้ในการพัฒนา MMORPG เช่น EVE Online และ WOW [ปิด]


22

ตามที่ฉันเข้าใจแล้ว MMORPGs เป็นเกมที่ทำงานบนคอมพิวเตอร์ของคุณเหมือนกับเกมวิดีโอ 3d ทั่วไปอื่น ๆ แต่ด้วยการกระทำที่เกิดขึ้นในเกมแต่ละครั้งการเปลี่ยนแปลงจะเกิดขึ้นในจักรวาลผ่านการโทร HTTP ไปยังเซิร์ฟเวอร์ ดังนั้นคอมพิวเตอร์ของผู้เล่นจึงทำการยกตัวอย่างหนักในแง่ของการแสดงผลกราฟิกและภาพเคลื่อนไหว แต่โครงร่างเว็บทำการสื่อสารออนไลน์

  • ดังนั้นฉันสงสัยว่าเว็บเฟรมเวิร์กเซิร์ฟเวอร์และฐานข้อมูลใดบ้างที่ใช้ในการสร้าง MMORPG เช่น EVE Online และ WOW

  • นอกจากนี้ภาษาการเขียนโปรแกรมและเอ็นจิ้นเกมสามมิติใดบ้างที่ถูกใช้เพื่อทำให้ฝั่งไคลเอนต์ (กราฟิก 3 มิติ / แอนิเมชั่น / เสียง) เป็นส่วนหนึ่งของเกม


ฉันคิดว่าเกือบทุก MMO เริ่มต้นด้วยเทคโนโลยีที่ล้าสมัยแล้วปรับแต่งมันออกมาเมื่อพวกเขาเติบโตในขนาดที่กำหนดและเริ่มมีความเชี่ยวชาญในเครื่องมือของพวกเขาจริงๆ I / O ที่ไม่มีstack
Michael Stum

คุณหมายถึงการโทร TCP ไปยังเซิร์ฟเวอร์หรือไม่ HTTP (HyperText Transfer Protocol) ถูกใช้โดยเว็บเซิร์ฟเวอร์และเบราว์เซอร์สำหรับหน้าเว็บและไม่มีส่วนเกี่ยวข้องกับ MMO เว้นแต่ว่าคุณหมายถึงเกมที่ใช้เบราว์เซอร์เช่น urbandead
stonemetal

Michael Stum, Stackless I / O ทำกับ Stackless Python หรือไม่?

@ ไม่เป็นไรถ้าทั้งสองเกี่ยวข้องกันหรือไม่
Michael Stum

@Michael Stum เพิ่งพบว่ามาจากวิดีโอนี้us.pycon.org/2009/conference/schedule/event/91

คำตอบ:


30

บริษัท ส่วนใหญ่ใช้ C ++ อีฟเป็นสิ่งที่เกินกว่าตัวประมวลผลกราฟิกหลักอยู่ใน C ++ ในขณะที่เกมลอจิกอยู่ใน Python CCP ยังให้การสนับสนุน Stackless มากมายซึ่งอยู่ใน C เป็นส่วนใหญ่ WoW เป็น C ++ สำหรับตัวเกมเองแม้ว่า UI นั้นจะมีสคริปต์ใน Lua Cryptic (Champions Online, Star Trek Online) ใช้ C ธรรมดา แต่มันค่อนข้างหายากในอุตสาหกรรม Java ปรากฏขึ้นทุกขณะ Runescape แต่ฉันนึกถึง AAA ไม่ได้ Disney ได้ใช้ Panda3D (เอ็นจิ้น Python ที่เขียนด้วยภาษา C) สำหรับ MMO จำนวนหนึ่ง แต่เหมือนกับ Eve ที่ไม่ธรรมดา

โดยรวมแล้วดูเหมือนว่า C ++ สำหรับลอจิกเกมและเอ็นจิ้นโดยที่ Lua สำหรับการเขียนสคริปต์ไคลเอนต์นั้นใกล้เคียงกับมาตรฐานมากที่สุด

สำหรับเว็บไซด์มันจบแล้ว We (Cryptic) ใช้การผสมผสานของ PHP, C และ Python (Django) สำหรับบิตต่างๆ CCP ใช้ ASP สำหรับเว็บไซต์นั้นเองและ Python เพื่อเพิ่มประสิทธิภาพให้กับแบ็กเอนด์ ทั้ง WAR และ LOTRO ใช้ PHP สำหรับเว็บไซต์ของพวกเขาแม้ว่ามันจะไม่ชัดเจนว่าพวกเขากำลังใช้เฟรมเวิร์กใด (ถ้ามี)

คุณพูดถึงว่า MMO ทำงานผ่านการเรียกใช้เว็บ API ซึ่งไม่ได้เป็นอย่างนั้น โปรโตคอลที่ใช้ HTTP จะไม่มีประสิทธิภาพมากเกินไปและ HTTP ไม่ได้ออกแบบมาสำหรับการเชื่อมต่อที่ใช้เวลานาน MMO เกือบทั้งหมด (ที่ไม่ใช่เว็บที่ใช้ Kingdom of Loathing หรือ Urban Dead) ใช้เซิร์ฟเวอร์ที่กำหนดเองและโปรโตคอลที่กำหนดเอง ลูกค้ามีสถานะเป็นอย่างมากการทำอะไรบางอย่างเช่นการเพิ่ม UI ของพื้นที่โฆษณาจะไม่เป็นการปิดคำขอไปยังเซิร์ฟเวอร์เนื่องจากข้อมูลทั้งหมดนั้นถูกแคชไว้บนไคลเอนต์


coderanger ดังนั้นเมื่อคุณพูดว่า 'ไคลเอนต์มีสถานะเป็นอย่างมาก' คุณหมายถึงว่าแอปลูกค้ากำลังเก็บข้อมูลทั้งหมดที่นั่นและไม่ได้ส่งคำขอไปยังเซิร์ฟเวอร์เสมอไปใช่หรือไม่ อีกวิธีหนึ่งเรียนรู้เกี่ยวกับการพัฒนาเซิร์ฟเวอร์ที่กำหนดเองและโปรโตคอลที่กำหนดเองได้อย่างไร

2
ใช่เพื่อลดทราฟฟิกเครือข่ายไคลเอนต์จะแคชข้อมูลจำนวนมากในพื้นที่ (ต่างจากในเกมบนเว็บ เซิร์ฟเวอร์ยังคงมีสิทธิ์แม้ว่าเพื่อป้องกันการโกง สำหรับการเรียนรู้เกี่ยวกับวิธีพัฒนาสิ่งนี้ ฉันจะหาหนังสือเกี่ยวกับ "การเขียนโปรแกรมเครือข่าย" มีเครื่องมือมากมายที่สามารถช่วยได้แม้ว่า Twisted, Protocol Buffers ฯลฯ จะมีหลายอย่างขึ้นอยู่กับภาษาและกรอบการทำงานที่คุณสะดวกสบายที่สุด
coderanger

3
Panda3d ถูกโปรแกรมใน C ++ ไม่ใช่ C
jokoon

5

ลิงค์เล็ก ๆ น้อย ๆ สำหรับ EVE Online:

โดยทั่วไป EVE Online จะทำงานบน SQL Server 2005 และซอฟต์แวร์อื่น ๆ ของ Microsoft ไคลเอ็นต์แบ็คโบนส่วนใหญ่เขียนด้วย Python อย่างไรก็ตาม (Stackless Python เป็นที่แน่นอนจากสิ่งที่ฉันจำได้) และ C ++ ส่วนใหญ่มีแนวโน้ม

สำหรับ World of Warcraft ฉันรู้ว่าพวกเขาใช้ Lua สำหรับลูกค้า GUI ทุกอย่าง แต่นอกเหนือจากนั้นฉันไม่คิดว่าพวกเขาใช้ Lua เพื่อสิ่งอื่นใด C ++ น่าจะเป็นสิ่งที่ใช้ ว้าวฉันคิดว่าจะใช้กล่อง Windows บางกล่อง แต่ดูเหมือนว่าพวกเขาจะมีกล่องประเภทอื่น ๆ ที่เฉพาะเจาะจงสำหรับงานบางอย่างที่อาจไม่ได้ใช้ Windows เลย

ไม่ค่อยมีข้อมูล แต่หวังว่ามันจะช่วยได้

เกมเหล่านี้มีเซิร์ฟเวอร์ที่แยกจากกันตามหน้าที่การใช้งานดังนั้นพวกเขาจะมีเซิร์ฟเวอร์ฐานข้อมูลที่รับผิดชอบในการจัดเก็บวัตถุ / อะไรก็ตามและเซิร์ฟเวอร์ที่ใช้งานเกมจริง (ตรวจสอบการกระทำของผู้เล่นเป็นต้น)


3

ฉันไม่ค่อยแน่ใจเกี่ยวกับ EVE และ WoW แต่ฉันเห็นเกม MMO ใช้ C ++, C #, Java และแม้แต่ PHP สำหรับเซิร์ฟเวอร์ (ซึ่งเป็นเกมที่ใช้เบราว์เซอร์ธรรมดาเท่านั้น)

ลูกค้ามักเขียนด้วยภาษา C ++ (หรือ Flash ถ้าเป็นเกมที่ใช้เบราว์เซอร์) ฉันทำงานกับไคลเอนต์ที่ใช้. NET ครั้งเดียว (C # ผสมกับ C ++ / CLI)

และเกือบทุกครั้งที่มีการใช้ภาษาสคริปต์แบบไดนามิกเพื่ออำนวยความสะดวกในการพัฒนาเนื้อหา "ผู้ออกแบบ" เช่นความสามารถเควสและอื่น ๆ - สิ่งต่าง ๆ ที่เปลี่ยนแปลงบ่อยและสามารถเปลี่ยนแปลงได้โดยผู้ออกแบบเกมเมื่อเทียบกับโปรแกรมเมอร์


3

อันดับแรก MMORPG หรือเกมออนไลน์ไม่ได้ใช้ HTTP หรือ "web frameworks" ในตอนแรก

เซิร์ฟเวอร์ถูกตั้งโปรแกรมเช่นเดียวกับเกมใน C ++ และการสื่อสารนั้นทำได้โดยใช้ซ็อกเก็ตเพื่อส่งแพ็คเก็ตผ่านเครือข่าย

เซิร์ฟเวอร์มักใช้ระบบปฏิบัติการอื่นและมีรหัสเกมเท่านั้นดังนั้นผู้เล่นจำนวนมากสามารถเล่นบนเซิร์ฟเวอร์เดียวได้อย่างราบรื่น

ฉันไม่ทราบว่าพายุหิมะจัดการเซิร์ฟเวอร์ของพวกเขาอย่างไรฉันไม่รู้ว่าพวกเขาใช้กลุ่มหรือไม่

แน่นอนเมื่อฉันพูดว่า "ซ็อกเก็ต" และ "C ++" ฉันกำลังพูดถึงเกมเรียลไทม์ไม่ใช่บริการอื่น ๆ ที่เกมอาจมีให้เช่นอาวุธกับ WoW เป็นต้น พวกเขาอาจใช้ฐานข้อมูลที่สามารถอ่านได้จากบริการต่าง ๆ เช่นฟอรั่มคลังแสงเกมการบริหารบัญชีเป็นต้น แต่ความคิดของฉันคือพวกเขามีฐานข้อมูลที่ขึ้นต่อกันซึ่งหารายการใหม่ ฯลฯ ดังนั้นทุกอย่างจึงสามารถซิงค์ได้ ขึ้นอย่างสวยงาม

ฉันคิดว่าคนที่รับผิดชอบในส่วนของเครือข่ายของ WoW อาจเป็นนักเลงตัวจริง


3
"ฉันคิดว่าคนที่ดูแลส่วนเครือข่ายของ WoW อาจเป็นสิ่งเลวร้ายจริงๆ" ความคิดเห็นของฉันเกี่ยวกับเซิร์ฟเวอร์ขนาดเล็กและการเคลื่อนไหวฝั่งไคลเอ็นต์ไม่ได้ทำให้เกิดความเสียหาย แม้ว่าปัญหาหลังเหตุการณ์ยังเป็น 20/20


0

มีเอ็นจิ้นเกมออกมามากมาย สองสิ่งที่ปรากฏในใจของฉันคือ Unreal engine และ Source

สำหรับภาษานั้นขึ้นอยู่กับภารกิจ การเรนเดอร์และส่วนสำคัญอื่น ๆ ของประสิทธิภาพมักทำในภาษาท้องถิ่นอย่างใดอย่างหนึ่ง เช่น C ++ แต่มันเป็นเรื่องธรรมดาที่จะใช้ภาษาแบบไดนามิกเพื่อกำหนดสคริปต์เพราะรหัสนี้มีแนวโน้มที่จะเปลี่ยนแปลงและมักจะเขียนโดยโปรแกรมเมอร์ 'ง่าย ๆ ' น้อย :-) Lua, Python, Ruby - พวกเขาทั้งหมดสามารถใช้ที่นี่


0

WoW ใช้ Lua สำหรับการเขียนสคริปต์ภายในเช่นกัน ฉันไม่แน่ใจว่าพวกเขาแก้ไขภาษาเองหรือไม่ แต่ฉันไม่สงสัยเลยว่ามันจะเหมาะกับความต้องการของพวกเขาหรือไม่ คุณสามารถเดิมพันได้ว่าพวกเขามีเครื่องมือต่าง ๆ ที่ทำให้นักออกแบบปรับเปลี่ยน / ปรับแต่งสคริปต์ได้ง่าย นี่คือข้อมูลภายในจากเพื่อนของฉันที่เคยเป็น WoW devs


เมื่อมีการปรับเปลี่ยนภาษาเช่น Lua คุณหมายถึงพวกเขากำลังสร้างกรอบการทำงานส่วนบุคคลของพวกเขาที่ขึ้นอยู่กับ Lua แก้ไข? ถ้าเป็นเช่นนั้นสิ่งนี้จะลดประสิทธิภาพ / ความเร็วของโปรแกรมที่พัฒนาหรือไม่?

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