ทับทิมเป็นภาษาที่เหมาะสมสำหรับการพัฒนาเกมหรือไม่? [ปิด]


33

ฉันต้องการที่จะย้ายไปสู่การพัฒนาเกม แต่ภาษาเดียวที่ฉันรู้ดีคือทับทิม สิ่งที่ฉันได้อ่านส่วนใหญ่ดูเหมือนจะชี้ไปที่ภาษาระดับต่ำกว่าเช่น C ++ สำหรับการพัฒนาเกมหรือภาษาสำหรับกรอบเฉพาะเช่น C # สำหรับการใช้ XNA ใครบ้างมีประสบการณ์การใช้ภาษาเช่นทับทิมสำหรับการพัฒนาเกม? ถ้าเป็นเช่นนั้นคุณจะแนะนำหรือต่อต้านมัน?

คำตอบ:


47

ฉันไม่ชอบ Ruby (หรือ Python) ฉันเป็นคน Java ด้วยตัวเอง แต่คำตอบของ UnknownDevice เกี่ยวกับว่า Ruby เป็นอย่างไร "ไม่ใช่สำหรับเกม" และ Python ก็ทำให้ฉันผิดหวัง ฉันหวังว่าเขาจะชี้แจง

ฉันรู้ว่า Pygame มีอยู่แล้วและอยู่ใกล้ ๆ และฉันก็รู้ว่า Python มีฐานผู้ใช้ที่ใหญ่กว่า Ruby แต่ความจริงแล้วพวกเขาทั้งคู่ดูเหมือนจะเป็นภาษา "สำหรับเกม" ไม่ใช้จาวาและนั่นคือภาษาที่ฉันเลือกใช้ในการเขียนโปรแกรมเกม (และเมื่อฉันพูดว่า "ตัวเลือก" ฉันหมายถึงตัวเลือกไม่ใช่เพราะสิ่งที่สอนในโรงเรียนหรือเพราะเป็นสิ่งที่ฉัน "รู้") และจริงๆแล้วภาษา "สำหรับเกม" คืออะไร? ความเร็วเป็นปัจจัยและแน่นอนว่าต้องมีไลบรารีสำหรับกราฟิกและระบบเกมอื่น ๆ (เสียงอินพุต ฯลฯ )

เท่าที่ความเร็วไปมันน่าจะเป็นการทอยระหว่าง Ruby และ Python ทำการค้นหาบางอย่างและคุณจะพบการเปรียบเทียบและข้อโต้แย้งสำหรับทั้งสองด้านของสเปกตรัมอย่างรวดเร็วและการกำหนดค่าต่าง ๆ ที่ทำให้สิ่งใดสิ่งหนึ่งก้าวไปข้างหน้า งูหลามกับสิ่งที่เรียกว่า "โรคจิต" ดูเหมือนปีศาจความเร็วที่นิยมเมื่อเทียบกับทับทิม แต่งูหลามปกติดูเหมือนจะช้ากว่าทับทิมเล็กน้อย ในที่สุดหากคุณเลือกภาษาระดับสูงคุณจะไม่ต้องกังวลกับความเร็วดั้งเดิม ไปกับภาษาที่คุณรู้จักดีที่สุด เห็นได้ชัดว่าคุณรู้ทับทิมดีที่สุดดังนั้นฉันขอแนะนำให้มัน!

อีกปัจจัยคือเทคโนโลยีมีการสร้างเกมหรือไม่ สามารถรองรับการวาดภาพบนหน้าจอและรวบรวมอินพุตและเล่นเสียงได้หรือไม่ Ruby สามารถทำสิ่งเหล่านี้ได้ทั้งหมด อันที่จริงมีตัวเลือกจำนวนมากในแง่นี้ มีแพ็คเกจruby-openglที่ RubyForge ซึ่งจะให้การสนับสนุน OpenGL กับ Ruby (หรืออาจรวมอยู่ในค่าเริ่มต้นด้วย) อีกทางหนึ่งChinguยังมอบ "กราฟิกเร่งความเร็ว OpenGL แบบเร่งความเร็ว 2 มิติ!" ตามโฮมเพจ มันสร้างคุณสมบัติพิเศษที่ด้านบนของGosuซึ่งคุณสามารถเลือกใช้หาก Chingu มีมากเกินไปสำหรับคุณ หรือสำหรับกราฟิก 3D หากคุณไม่ต้องการใช้ ruby-opengl ลองG3DRuby "ชุด wrapper คลาสที่สะอาดมากสำหรับฟีเจอร์ OpenGL ขั้นสูง" มี'Rubygameซึ่งฉันไม่สามารถหาข้อมูลได้มากมาย แต่มันอ้างว่าเป็น "ห้องสมุดมัลติมีเดียข้ามแพลตฟอร์ม" และได้รับการตั้งชื่อต้องให้ความสำคัญกับการพัฒนาเกม หากคุณคุ้นเคยกับไลบรารีSDLยอดนิยมสำหรับ C ++ มีRuby / SDLหรือRUDLซึ่งทั้งสองเป็น Ruby wrappers ของ SDL หรือถ้าคุณชอบSFMLเชิงวัตถุที่ใหม่กว่าก็มีให้สำหรับ Ruby!

ไม่มีเหตุผลว่า Ruby ควรมีภาษาการเขียนโปรแกรมเกมน้อยกว่า Python หากมีอยู่ฉันอยากจะฟังเพื่อที่ฉันจะได้โต้แย้งมัน หากคุณรู้สึกว่าการเขียนโปรแกรมที่สะดวกสบายที่สุดใน Ruby และคุณรู้ถึงข้อดีและข้อเสียเมื่อเทียบกับภาษายอดนิยมอื่น ๆ คุณสามารถพัฒนาเกมใน Ruby ได้อย่างแน่นอน!


+1 แต่คุณควรเพิ่มบางอย่างเกี่ยวกับข้อ จำกัด การใช้งานในบางภาษาบนแพลตฟอร์มที่เป็นกรรมสิทธิ์เช่นคอนโซล ... (ข้อ จำกัด ด้านฮาร์ดแวร์และนโยบายคอนสตรัคเตอร์) หากเกมทำที่บ้านทำเพื่อฝึกอบรมเพื่อรับงานในอุตสาหกรรม การใช้ Ruby สำหรับเกมนั้นจะไม่ช่วยในด้านนี้จริงๆ อย่างไรก็ตามสำหรับเกมเดสก์ท็อป "ทำไมไม่ ???"
Klaim

@ การอ้างสิทธิ์ฉันจะยืนยันว่ามันมีความเกี่ยวข้องน้อยลงและฉันจะสนใจที่จะรู้ภาษาที่ใช้สำหรับคอนโซลของคนรุ่นต่อไปหรืออาจจะเป็นภาษาที่หนึ่งหลังจากนั้น เป็นไปได้ว่าพวกเขาจะได้รับการพัฒนาด้วย C ++ ต่อไป แต่ฉันเองเชื่อว่าเป็นไปได้สูงว่าพวกเขาจะพัฒนาไปสู่ภาษาระดับสูงขึ้น ตัวอย่างเช่นการพัฒนา Android อยู่ใน Java; ไม่ใช่ Android ที่เป็นเกมคอนโซลเลย แต่บางทีภาษาไฮบริดเช่นโกจะเพิ่มขึ้นเป็นภาษายอดนิยมใหม่ในรุ่นคอนโซลหรือสอง
Ricket

1
ฉันเห็นด้วยกับหลักการและอาจเป็นไปได้หรือบรรลุเป้าหมายในด้านนี้ แต่ฉันคิดว่าภาษาระบบเท่านั้นที่สามารถเป็น "มาตรฐาน" ในอุตสาหกรรมนี้ อย่างไรก็ตามฉันกำลังพูดถึงอุตสาหกรรมไม่ใช่ด้านอินดี้ของโดเมนวิดีโอเกม ฉันคิดว่าถ้าคุณไปในแบบของคุณเอง (ไม่ใช่เงินเดือนของ บริษัท ใหญ่ที่จัดตั้งขึ้น) จากนั้นคุณมีโอกาสที่จะใช้สิ่งที่คุณต้องการ แต่คุณยังต้องใช้เครื่องมือที่ผู้สร้างถามเมื่อคุณต้องการทำอะไรกับสิ่งอื่นนอกจากคอนโซล โทรศัพท์ใช้ Java แต่มีการใช้งาน C ++ จำนวนมากในแอปพลิเคชั่นที่ต้องการประสิทธิภาพมากกว่าบนโทรศัพท์เดียวกัน
Klaim

ในความเป็นจริงฉันคิดว่าเนื่องจากอุตสาหกรรมวิดีโอเกมช้าที่จะนำมาใช้แม้แต่มาตรฐาน C ++ ในปัจจุบันจึงมีโอกาสที่ดีที่คุณจะต้องรอเป็นเวลาหลายปีก่อนที่จะมีสิ่งอื่นใดนอกเหนือจาก C ++ บนคอนโซล การเปลี่ยนแปลงวิธีการทำงานของตัวสร้างและนักพัฒนาอาจเกิดขึ้น แต่มันไม่ง่ายเลยที่จะจินตนาการตั้งแต่วันนี้
Klaim

ฉันแค่เพิ่มว่ามีเกมหลายประเภทที่ประสิทธิภาพสูงสุดไม่ใช่ปัญหา แน่นอนในขณะที่สร้าง Crysis ใหม่คุณจะต้องบีบทุกเฟรมจากมัน แต่มีเกมมากมายที่คุณไม่ต้องทำ และในการทำงานกับเกมดังกล่าวคุณอาจต้องการภาษาอื่น ๆ น้อย ๆ เช่นกัน (ภาษาที่มีตัวสั่นเช่นเกมเช่น Civilization 4 & 5 พึ่งพาภาษาสคริปต์เช่นกัน)
MartinTeeVarga

9

http://gafferongames.com/2009/01/11/ruby-is-not-at-all-suitable-for-game-development/

URL น่าจะเป็นสปอยเลอร์เล็กน้อย

tl; dr: ตัวรวบรวมขยะไร้เดียงสาเป็นปัญหาจริง


ข้อมูลมาก! ผู้เชี่ยวชาญทับทิมสามารถแสดงความคิดเห็นว่าสิ่งนี้ยังคงมีผลบังคับใช้ในวันนี้หรือไม่? บทความนี้ลงวันที่มกราคม 2552 และฉันจะไม่แปลกใจหากเกิดขึ้นมากมายตั้งแต่นั้นมา แก้ไขโอเคฉันเพิ่งพบบทความลงวันที่ 3 กันยายน 2010 ซึ่งบอกเป็นนัยว่านี่เป็นกรณีในวันนี้โดยพูดว่า "ผู้เก็บขยะ Ruby ไม่ได้ตั้งใจทำงาน" - น่าสนใจ! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
ตัวเก็บขยะของ Ruby ทำเครื่องหมายและกวาด แต่ในกรณีของรอบดังนั้นเช่น Python และ Lua (อันที่จริงแล้วในเกม Python ฉันทำงานกับเราเราต้องชะลอ GC ด้วยเหตุผลนั้น) ฉันยังไม่ได้ทำการวัดประสิทธิภาพ แต่บางทีรูบี้อาจจะช้ากว่าบังเอิญช้ากว่าเดิม ฉันไม่เห็นว่าเป็นเหตุผลที่น่าสนใจอย่างมากที่จะหลีกเลี่ยงทับทิมโดยเฉพาะถ้าคุณกำลังพูดถึงการสร้างเกมทั้งหมดใน Ruby ตามที่ผู้ถามถาม เพียงปิดใช้งาน GC จนกว่าจะถึงเวลาที่เหมาะสม

1
ไม่นานหลังจากที่โพสต์สิ่งนี้ไป แต่ลองอ่านบทความที่น่าสนใจนี้ patshaughnessy.net/2012/3/23/…มันเกี่ยวกับ Garbage Collector ใน Ruby 2.0 นี่คือคำปราศรัยของผู้สร้าง GC youtube.com/watch?v=4fIdEeM0Fygวิดีโอนี้ตามเวลาที่ Ruby 2.0 ออกมาอาจจะมีอายุ 1.5 - 2 ปีดังนั้นจึงเป็นไปได้ที่ประสิทธิภาพและการปรับปรุง GC ได้รับการปรับปรุง . สิ่งนี้อาจทำให้รูบีสามารถทำงานได้มากขึ้นสำหรับเกมที่มีวัตถุหนักมากขึ้น แน่นอนฉันหวังเช่นนั้น! ฉันเชื่อว่า Ruby 2.0 ออกมาในปี 2013
Michael van Rooijen

1
นอกจากนี้ยังมี VMs อื่นนอกเหนือจาก MRI ที่สนับสนุนระบบการรวบรวมขยะที่แตกต่างกันรวมถึง mruby ใหม่จาก Matz เองที่มีระบบการรวบรวมขยะที่เพิ่มขึ้น จนถึงตอนนี้ mruby กำลังสร้างเป็นตัวเลือกที่ยอดเยี่ยมสำหรับเกม มันใช้งานได้กับ iOS และ Android!
Stephen Belanger

5

ไม่มีเหตุผลใดที่คุณทำไม่ได้ ตราบใดที่มีการสนับสนุนมัลติมีเดียสำหรับภาษาแล้วมันเป็นวัสดุที่ gamedev Heck สัดส่วนขนาดใหญ่ของเกม Rollercoaster Tycoon ทำด้วยมือใน ASM


3
คุณเป็นคนที่ขัดแย้งกับตัวเอง "การเข้ารหัสเกมใน asm" เป็นสิ่งที่ตรงกันข้ามกับ "การเข้ารหัสเกมในทับทิม" หรือภาษาระดับสูงอื่น ๆ
bobobobo

1

ในขณะที่ฉันไม่คุ้นเคยกับงานสเปคที่ลึกล้ำรอบ Ruby Enterbrain ได้สร้างเกมสร้างโปรแกรม RPG Maker VX และ RPG Maker XP ที่ใช้สคริปต์เกมจาก Ruby: http://www.rpgmakerweb.com/

นี่คือการดำน้ำครั้งแรกของฉันในภาษา อย่างที่คนส่วนใหญ่พูดกันคุณอาจจะไม่ได้รับประสิทธิภาพสูงของภาษาอื่น แต่ถ้าคุณต้องการเริ่มเล่นเกม RPG 2 มิติ (หรือเกม 2D อื่น ๆ จริง ๆ ) มันอาจเป็นหนึ่งในบรรณาธิการเกมที่มีความซับซ้อนที่สุด ช่วยด้วย.


0

Ruby เป็นภาษาที่ดี แต่มันไม่ใช่เกมที่จะซื่อสัตย์ หากคุณไม่ต้องการใช้ C ++ แต่ต้องการทับทิมอย่าง Python สำหรับกรอบ Python ที่ดีคุณควรตรวจสอบบางอย่างเช่น www.cocos2d.org/


3
... หรือ www.pygame.org
Ian Schreiber

6
นี่เป็นเรื่องไร้สาระ Ruby เป็นภาษา "สำหรับเกม" ไม่น้อยไปกว่า Python
Ricket

2
... เรื่องไร้สาระ คุณอาจจะบอกว่า Lua ไม่ใช่เกม
Kornel Kisielewicz

2
มีทับทิมเทียบเท่ากับ pygame หรือไม่? ฉันจะไม่พูดว่าภาษาหนึ่งเหมาะสมกว่าอีกภาษาหนึ่ง แต่มันอาจจะสมเหตุสมผลที่จะบอกว่าหลามมีไลบรารีเกมและชุมชน gamedev ที่ดีกว่า
deft_code

ฉันรู้สึกว่ามีพอร์ต SFML ที่จะทับทิม
The Duck Communist

0

มันขึ้นอยู่กับประเภทของเกมที่คุณสนใจเขียน ผมเคยใช้ทับทิมจะเขียนลูกค้า AI สำหรับเกมหลายแห่งรวมถึงการเจรจาต่อรอง , โป๊กเกอร์และหายไปเมือง ฉันพบว่ามันเป็นภาษาที่เป็นมิตรมากสำหรับการทดสอบอย่างรวดเร็วด้วยแนวคิดที่แตกต่าง ในทางกลับกันฉันไม่ต้องการใช้มันเพื่อเขียนปืนเรียลไทม์ของฉัน - มันแค่ไม่มีประสิทธิภาพที่ฉันต้องการ


0

คำถามของคุณกว้างเกินไป คุณต้องการที่จะเขียนเกมคอมพิวเตอร์เป็นงานอดิเรกหรือคุณต้องการพัฒนาเกมอินดี้ / มืออาชีพหรือไม่? มันจะมีกราฟิกไหม? ควรใช้แพลตฟอร์มใดในการทำงาน

โดยทั่วไป Ruby เหมาะสำหรับโครงการงานอดิเรก (BTW เกม Ruby ที่ชื่นชอบคือRuby Warrior ) และสำหรับการพัฒนาเกมบนเว็บเช่น Farmville แม้จะมีความต้องการบางอย่างสำหรับโปรแกรมเมอร์เช่นลอง google บางอย่างเช่น: "เกมโปรแกรมเมอร์ทางสังคม ruby"

ในทางกลับกันหากคุณต้องการพัฒนาเกมบนเดสก์ท็อปหรือมือถือที่มีกราฟิกทับทิมไม่ใช่ตัวเลือกที่ดีที่สุด พิจารณา:

  • ไลบรารี Javascript ที่สนับสนุน Coffeescript (ไวยากรณ์ของมันคล้ายกับ Ruby)
  • Python คล้ายกับ Ruby ห้องสมุดเกมที่ดีกว่า

0

อย่าคาดหวังว่าจะเขียนเกม 3 มิติที่มีประสิทธิภาพสูงเป็นมืออาชีพการค้าด้วย Ruby แต่ Ruby เป็นภาษาที่ยอดเยี่ยมที่จะใช้เมื่อเรียนรู้แนวคิดการพัฒนาเกม

Gosuเป็นห้องสมุดที่ได้รับความนิยมสูงสุดในการเขียนเกม 2D ใน Ruby มีไลบรารี C ++ พื้นฐานที่ใช้เพื่อปรับปรุงประสิทธิภาพและโต้ตอบกับไลบรารีการเรนเดอร์การแสดงผลพื้นฐานเช่น OpenGL

ตราบใดที่ประสิทธิภาพยังคงอยู่การเริ่มต้นใช้งานทับทิม "เริ่มต้น" (MRI) จะทำงานได้ดี (ฉันขอแนะนำ Ruby 2.0 ล่าสุดเพื่อประสิทธิภาพที่ดีที่สุด) แต่มีการนำไปใช้ทางเลือกอื่นที่มีเธรดดั้งเดิมและอัลกอริทึม หากคุณใช้ประโยชน์จากเธรดคุณอาจต้องการลอง Rubinius มิฉะนั้น MRI Ruby จะทำงานได้ดี


-2

ฉันพูดว่า Python เพราะมันมีฐานผู้ใช้ที่ใหญ่กว่าและมีตัวเลือกมากขึ้นเมื่อพูดถึงเฟรมเวิร์ก / ไลบรารีสำหรับการพัฒนาเกม เห็นได้ชัดว่าสวยคนนี้ไม่มีประสบการณ์ในการพัฒนาเกมดังนั้นจึงไม่สมเหตุสมผลที่จะแนะนำให้พวกเขาใช้บางอย่างเช่น Ruby เพราะเป็นไปได้

เมื่อฉันทำงานกับเกมที่ฉันใช้ C ++ กับ Lua ฉันจะไม่ออกและเขียนเกมของฉันใน Visual Basic เพียงเพราะมันรองรับสื่อ ฉันแน่ใจว่าทุกคนที่นี่ได้ยินบางคนพูดถึงเครื่องมือบางอย่างสำหรับงานบางอย่าง ฉันแน่ใจว่าคุณสามารถตอกตะปูกับรองเท้าได้ แต่ทำไมคุณต้องทำเช่นนั้นเมื่อคุณสามารถใช้ค้อน


2
C ++ เป็นภาษาที่ดี แต่จริงๆแล้วมันไม่ใช่เกมที่จะซื่อสัตย์ หากคุณไม่ต้องการที่จะใช้การชุมนุม แต่ต้องการบางสิ่งบางอย่างเช่น C ++ เช็คเอาท์ซีสำหรับกรอบการทำงานที่ดี C คุณควรตรวจสอบสิ่งที่ต้องการlibsdl.org (โอเคมันไม่ได้ผลเพราะ C ++ สามารถใช้งานได้ แต่คุณได้คะแนน)
Ricket

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

5
ประเด็นของเขาคือคำตอบดั้งเดิมของคุณไม่มีเนื้อหาใด ๆ เกี่ยวกับคำถามที่ถาม คุณยืนยันว่าทับทิมไม่ใช่ "สำหรับเกม" แต่นั่นคือทั้งหมดที่คุณพูด คุณค่านั้นมีน้อยมาก สำหรับสาเหตุที่ OP ต้องการใช้ Ruby มันค่อนข้างชัดเจน: เป็น "ภาษาเดียวที่เขารู้ดีจริงๆ" นั่นไม่เหมือนกับ "เพียงเพราะเป็นไปได้"
Neverender

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