Java ทำงานได้สำหรับการพัฒนาเกมที่จริงจังหรือไม่? [ปิด]


64

ฉันขัดจังหวะอินเทอร์เน็ต แต่มีทรัพยากรไม่มากสำหรับการพัฒนาเกม Java ไม่มากเท่า C ++ ในความเป็นจริงเครื่องยนต์ส่วนใหญ่เขียนด้วยภาษา C ++ ฉันพยายามเล่นเกมที่สร้างโดย jMonkeyEngine แต่เกมนั้นช้ามากจนถึงจุดที่คอมพิวเตอร์ของฉันค้าง ฉันไม่มีแอปพลิเคชัน Java อื่นที่ทำงานอยู่และไม่มีทรัพยากรมากเกินไป ในทางตรงกันข้ามคอมพิวเตอร์ของฉันสามารถเล่นเกม 3 มิติที่ทันสมัยที่สุดได้อย่างง่ายดาย หากฉันยังคงเรียนรู้และพัฒนา Java ต่อไปและปรากฎว่าในภายหลังฉันต้องเรียนรู้ C ++ การทำสวิตช์อาจทำได้ยาก

Java เป็นภาษาที่ยอมรับได้สำหรับการพัฒนาเกมที่จริงจังหรือไม่? โดยจริงจังฉันหมายถึงกราฟิกที่มีคุณภาพสูงโดยไม่ล่าช้ามากในคอมพิวเตอร์ที่ทันสมัย ฉันต้องการพิจารณาทำเกมเพื่อคอนโซล


25
Minecraft ไม่สร้างด้วย java ใช่ไหม หรือส่วนใหญ่เป็น OpenGL? โอ้และลองดู C # ถ้าคุณไม่ได้ใช้จาวา 100% เพราะมันยอดเยี่ยม
Aralox

7
ทำไมคุณไม่เข้าร่วมการแชท C ++ ของ Overflow เรารัก C ++ เราคิดว่ามันสามารถใช้งานได้อย่างถูกต้องและเรารู้วิธีการทำเช่นนั้นและเรายินดีที่จะแบ่งปันโดยสิ้นเชิง
DeadMG

12
Minecraft เป็นทักษะการเข้ารหัสของ java + LWJGL + Notch ดังนั้นประสิทธิภาพจึงเป็น TERRIBLE
MLProgrammer-CiM

3
ไม่ว่าจะเป็นเกมการเข้ารหัสของคุณหรืออะไรก็ตามการล็อคตัวคุณเป็นภาษาเดียวจะไม่ช่วยคุณในอนาคต แตกแขนงออกมาไม่ว่าจะเป็น C ++ หรืออย่างอื่นเช่น Python ต้องใช้เวลา แต่มันทำให้คุณเป็นนักพัฒนาที่ดีขึ้น
loganfsmyth

4
คุณจะได้รับข้อมูลที่ผิดมากเพราะสงครามของ Java / C ++ สว่างขึ้นพร้อมที่จะขอตัวอย่างเฉพาะก่อนที่จะยอมรับความคิดเห็นและเพื่อทำการวิจัยเพิ่มเติมเกี่ยวกับตัวคุณเอง =) ที่ถูกกล่าวว่าฉันเห็นด้วยกับ @loganfsmyth คุณจะต้องรู้หลายภาษาเพราะเมื่อนั้นคุณสามารถเลือกเครื่องมือที่เหมาะสมสำหรับงานใด ๆ ในอนาคตอันใกล้หากคุณต้องการเรียนรู้ "การเขียนโปรแกรมสไตล์เกม" จากนั้นใช้สิ่งที่คุณคุ้นเคยกับ (Java) แล้วเรียนรู้ C ++ ในภายหลัง Heck, ต่อมาคุณอาจจะทำท่อเนื้อหาใน C # และเกมใน Java ME, ยากที่จะทำนาย =)
แพทริคฮิวจ์

คำตอบ:


54

ใช่เป็นตรวจสอบรายการนี้เพื่อพิสูจน์ เกมเหล่านี้เป็นเกมที่สร้างด้วย Java โดยใช้ The Lightweight Java Game Library (LWJGL) มันเป็นกรอบระดับต่ำซึ่งให้ OpenGL สำหรับกราฟิกคุณภาพสูงและ OpenAL สำหรับเสียง นอกจากนี้ยังมี API การป้อนข้อมูล ด้วยสิ่งเหล่านี้คุณสามารถเริ่มต้นพัฒนาเกมอย่างจริงจังใน Java ได้อย่างง่ายดาย

ฉันกำลังเขียนเกม 3 มิติที่สองของฉันเป็นโปรเจ็กต์งานอดิเรกใน Java และฉันก็ชอบมัน ในอดีตฉันเคยเขียนเกมด้วย C ++ แต่หลังจากเปลี่ยนไปใช้ Java จะไม่มีการย้อนกลับ การสนับสนุนระบบปฏิบัติการหลายระบบด้วย Java นั้นง่ายมากตัวอย่างเช่นเกม Java ก่อนหน้าของฉันซึ่งฉันพัฒนาใน Windows เป็นเวลาหนึ่งปีทำงานใน Linux ทันทีและใน OS X โดยมีข้อผิดพลาดเพียงข้อเดียวโดยไม่จำเป็นต้องรวบรวมอะไรบนแพลตฟอร์มเหล่านั้น

ในทางตรงกันข้ามกับ Java คุณมีสองปัญหา

  1. คนเก็บขยะ ดังที่คนอื่น ๆ ได้กล่าวไว้การจัดการหน่วยความจำที่ไม่ได้กำหนดไว้เป็นปัญหาและคุณจำเป็นต้องมีรหัสในใจ
  2. ไม่มีห้องสมุดบุคคลที่สาม ไลบรารีที่มีอยู่ส่วนใหญ่ไม่รองรับจาวา ในทางกลับกันคุณมักจะมีตัวเลือกในการเรียกไลบรารี่เนทีฟเหล่านี้จาก Java ด้วยเช่นกัน นอกจากนี้ยังมีพอร์ต Java หรือห่อสำเร็จรูปพร้อมใช้งานสำหรับห้องสมุดที่เป็นที่นิยมเช่นฉันใช้JBullet - พอร์ต Java ห้องสมุดฟิสิกส์กระสุน ในทางกลับกัน Java มีไลบรารีคลาสขนาดใหญ่ในตัวซึ่งช่วยลดความต้องการไลบรารีบุคคลที่สามที่ไม่เกี่ยวข้องกับเกม การขาดห้องสมุดไม่ได้เป็นปัญหาสำหรับฉัน แต่ฉันสามารถจินตนาการได้ว่าอาจเป็นปัญหาสำหรับผู้อื่น
  3. Java ไม่ได้รับการสนับสนุนจากเครื่องเล่นเกมยอดนิยมและไม่มีการสลับไปยังเกมจาก Java ได้ง่ายเท่าที่ฉันรู้ ในทางกลับกัน Android ซึ่งเป็นแพลตฟอร์มมือถือยอดนิยมใช้ Java บางรูปแบบ นี่เป็นตัวเลือกด้วยเช่นกัน แต่อย่ายกเว้นรหัส Java ตัวเดียวที่ใช้งานได้ทั้งบนพีซีและอุปกรณ์ Android
  4. ชุมชนเล็ก ๆ โปรแกรมเมอร์เกมส่วนใหญ่ใช้ C ++ และจากประสบการณ์ของฉันมักจะไม่ชอบ Java อย่าคาดหวังว่าจะได้รับความช่วยเหลือจากผู้อื่นมากนัก อย่าคาดหวังว่าจะได้งานในการพัฒนาเกมที่ไม่มีทักษะ C ++

40

ไม่ได้จริงๆ นี่คือสิ่งแรก - มีน้อยมากในแง่ของห้องสมุดที่มีอยู่สำหรับ Java เมื่อเทียบกับทุกอย่างที่เป็นจริงสำหรับ C ++

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

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

นอกจากนี้หากฉันยังคงเรียนรู้และพัฒนา Java ตอนนี้ต่อไปและปรากฎว่าในภายหลังฉันต้องเรียนรู้ C ++ จะทำให้สวิตช์เปลี่ยนได้ยากหรือไม่

ใช่แน่นอนมันจะ Java และ C ++ นั้นมีความแตกต่างกันอย่างมากมาย ประสบการณ์การใช้ Java นับสำหรับแทบไม่มีอะไรเมื่อเรียนรู้ C ++

การเล่นเกมผ่านกราฟิกเป็นตัวเลือกที่เหมาะสมและคุณสามารถเห็นได้ในความสำเร็จของเกมเช่น Terarria และ Minecraft แต่ถ้าคุณตั้งใจจะสร้าง srs graphics มันจะไม่สามารถทำได้ใน Java


6
+1 เนื่องจากเขาระบุกราฟิกหนักการเล่นเกมที่รวดเร็วโดยไม่ล่าช้า
Joshua Drake

1
การขาดประเภทข้อมูลที่ไม่ได้ลงนามของจาวายังยืนหยัดต่อต้านมัน ใช่คุณสามารถแก้ไขได้ แต่ก็ไม่เหมาะและคุณจะใช้รหัสที่ไม่สะท้อนข้อมูลพื้นฐานอย่างถูกต้อง
Maximus Minimus

@deadmg เป็นกรณีที่ถูกล็อคและปลดล็อคคุณหมายถึงฟังก์ชั่น DirectX api หรือไม่? & คุณช่วยบอกฉันหน่อยได้ไหมว่าอะไรที่เลวร้ายเกี่ยวกับการมี GC ที่ไม่สามารถกำหนดได้
Quazi Irfan

GC ที่ไม่สามารถกำหนดค่าได้สามารถวางเฟรมได้ถ้าคุณหยุดโลกที่หยุดชั่วคราวและล็อคสิ่งต่างๆนานกว่าที่ใช้ในการเรนเดอร์เฟรม ในทางปฏิบัติสิ่งนี้ไม่ได้เกิดขึ้นบ่อยนัก / หากคุณวางแผนที่จะใช้หน่วยความจำนักสะสมของ JVM สามารถกำหนดค่าให้หยุดชั่วคราวต่ำ (ภายในขอบเขตที่ปลอดภัยสำหรับการวางเฟรม) ถึงกระนั้นก็ไม่ใช่เรื่องสนุกที่จะต้องจัดการกับ คุณต้องส่งมอบผลผลิตที่มีนัยสำคัญที่คุณได้รับเมื่อออกจาก C ++
Michael

2
การเริ่มต้นคุณจะต้องเขียนใหม่ทั้งหมด
DeadMG

25

ดังนั้นฉันจริงจังกับการพัฒนาเกมจริง ๆ Java ยังคงเป็นตัวเลือกที่เหมาะสมหรือไม่? ฉันพยายามเรียนรู้ C ++ หลายครั้ง แต่ฉันไม่ชอบภาษา ฉันไม่รู้จริงๆว่าทำไม แต่โดยปกติเมื่อใดก็ตามที่ฉันพยายามเรียนรู้ฉันไม่สามารถเข้าใจหัวข้อได้

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

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

ดังนั้นในระยะสั้น Java สามารถจริงจังสำหรับการพัฒนาเกมอย่างจริงจัง ซึ่งรวมถึงกราฟิกหนักการเล่นเกมที่รวดเร็วโดยไม่ล่าช้าและอาจเป็นไปได้และเปลี่ยนไปใช้คอนโซลได้ง่าย

  1. กราฟิกหนัก: เป็นไปได้ แต่คุณจะต้องทำสิ่งเดียวกันใน Java / LWJGL เช่นเดียวกับใน C ++ / GL: เขียนไบต์ไปยังบัฟเฟอร์ของ GPU และ / หรือใช้รายการแสดงที่คัดค้านเช่น Minecraft หากคุณไม่เข้าใจการจัดการหน่วยความจำคุณจะไม่ทำอย่างถูกต้องเช่นกัน

  2. การเล่นเกมที่รวดเร็วโดยไม่ล่าช้า: ไม่ใช่เรื่องง่ายในภาษาใด ๆ และคุณมีแนวโน้มที่จะยิงตัวเองด้วยวิธีใดวิธีหนึ่งโดยไม่คำนึงถึงมัน

  3. ไม่จาวาจะไม่สามารถใช้งานบนคอนโซลได้


คำถามข้างเคียงอะไรที่แทนที่รายการที่แสดงเมื่อเลิกใช้แล้ว
Suds

@Suds: ไปป์ไลน์ได้ผมเชื่อว่า
DeadMG

ฮ่า! ครอบคลุมแล้ว VBOs: gamedev.stackexchange.com/questions/22170/…
Jimmy

แพลตฟอร์มมือถือถือเป็นคอนโซล ฉันรู้ว่าเขาอาจพูดถึงสามตัวใหญ่ แต่ Android ใช้ Java และมีเกมมากมายที่สร้างขึ้นสำหรับมัน
Amplify91

1
@ Amplify91 ใช่มีบางเกมเขียนด้วยภาษาจาวาสำหรับ Android แต่เกมที่ดีที่สุดและอาจเป็นเกมที่เน้นกราฟิกหรือเกมหลายแพลตฟอร์มทั้งหมดเขียนด้วย C ++ โดยใช้ Android NDK
โคโยตี้

15

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

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

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

ลองนึกถึงการเรียนรู้ C ++ หลังจากที่คุณทำโปรเจ็กต์เป็นภาษาที่ปลอดภัยกว่า C ++ คือสิ่งที่คุณต้องการสำหรับการพัฒนาเกมมืออาชีพมากที่สุด

โปรดทราบว่ายกเว้น C # / XNA ในการรับเกมที่คุณเขียนลงบนคอนโซลอย่างน้อยคุณจะต้องตั้ง บริษัท ที่มีสำนักงานและมีงบประมาณจำนวนมากสำหรับฮาร์ดแวร์สำหรับการพัฒนาและค่าใช้จ่ายอื่น ๆ


สิ่งนี้ยังเป็นจริงอย่างยิ่งเนื่องจากภาษาอื่น ๆ ที่นอกเหนือจาก C ++ จะทำให้คุณรู้สึกถึงความสำเร็จ C ++ อาจใช้เวลาหลายร้อยชั่วโมงสำหรับสิ่งที่รู้สึกเหมือนไม่มีอะไร การเรียนรู้ภาษาอื่นก่อนอื่นให้คุณทำให้เท้าเปียก
Darkenor

ความคิดเห็นของคุณเกี่ยวกับการจัดการที่ไม่เกิดข้อผิดพลาดนั้นเกี่ยวกับ C (และเรียกว่ารหัส C ++ ที่เป็น C จริงๆ) C ++ มีไลบรารีมาตรฐาน (และไลบรารีเทมเพลตมาตรฐาน) ที่จัดการข้อผิดพลาดได้ดีกว่าสิ่งที่คุณอธิบาย C ++ ยังมีไลบรารีที่จัดหาโดยผู้จำหน่าย (เช่น MFC) ที่ให้การจัดการข้อผิดพลาดที่เหมาะสม
Jasper

9

คำเตือน:นี่ไม่ได้ตอบคำถามของคุณ อย่างไรก็ตามฉันพยายามพูดถึงบางประเด็นที่คุณอาจสนใจ

เหตุผลที่คุณเห็นเกี่ยวกับ C ++ มากเนื่องจาก C ++ ยังคงเป็นมาตรฐานอุตสาหกรรมซึ่งเป็นภาษาที่ใช้กันทั่วไปมากที่สุดสำหรับคอนโซล ฯลฯ

Java ไม่ได้ใช้บ่อย Minecraft เป็นเกมยอดนิยมที่ได้รับความนิยมอย่างมากใน Java แต่มันก็ไม่ใช่กราฟิกที่ยอดเยี่ยม Spiral Knights ไม่เลว - สร้างขึ้นใน Java ด้วยกราฟิกที่มีความหมาย

หากคุณชอบ Java, C # จะคล้ายกันมากในไวยากรณ์โดยมีข้อได้เปรียบที่สามารถทำงานร่วมกับ C ++ ได้ดังนั้นสิ่งที่ระดับต่ำสามารถทำได้ใน C ++ หากจำเป็น Unity สามารถใช้ C # สำหรับการเขียนสคริปต์และ XNA เป็นตัวเลือกที่ยอดเยี่ยม

อีกครั้ง Java ไม่ได้ใช้กันอย่างแพร่หลาย หากคุณชอบสไตล์และไวยากรณ์ฉันคิดว่าคุณจะพบว่า C # เป็นประสบการณ์การเข้ารหัสที่คล้ายกันและน่าพอใจมาก

ฉันหวังว่าความฝันของคุณจะทำให้มันสนุกมากไปพร้อมกัน :)


8
ความผิดพลาดมากมายในบทความนี้ กราฟิค Minecraft "ไม่ดี" นั้นไม่เกี่ยวข้องกับภาษามากนัก ประสิทธิภาพที่ไม่ดีของ MC นั้นเกี่ยวข้องโดยตรงกับ Java ซึ่งเป็นภาษาที่ไม่ดีสำหรับเกมเนื่องจากปัญหาเรื่องประสิทธิภาพการทำงานจำนวนมากและ LWJGL เป็นห้องสมุดที่ไม่เหมาะสมสำหรับโครงการเข้ารหัสขนาดใหญ่ด้วยเหตุผลเดียวกัน แต่ปัจจัยที่ใหญ่ที่สุดคือการเข้ารหัสและการนำไปใช้ที่ไม่ดีของ Notch ซึ่งกำลังได้รับการแก้ไข ... ช้า C # ให้หน่วยความจำที่มีการจัดการทั้งหมดโดยไม่มีปัญหาด้านประสิทธิภาพของ Java ข้อเสียคือ C # เป็นศูนย์กลางของ Microsoft อย่างมากสำหรับทั้งเกมและแอปพลิเคชัน
MLProgrammer-CiM

2
@EfEs: ฉันเกลียดที่จะทำลายคุณ แต่หน่วยความจำที่มีการจัดการนั้นแย่มากสำหรับเกมและผู้ที่ใช้รหัสเกมใน XNA ต้องใช้เวลาในการจัดการหน่วยความจำมากกว่าคนที่ใช้รหัสใน C ++ ลักษณะที่ไม่ได้กำหนดไว้อย่างชัดเจนของ GC หมายความว่าคุณต้องรวมทุกอย่างในทางปฏิบัติและหลีกเลี่ยงการจัดสรรเช่นภัยพิบัติ - ไม่ใช่วิธีที่ภาษาควรจะใช้
DeadMG

คำตอบนี้ไม่ได้แปลว่าถูกต้อง 100% ฉันแค่อ้างตัวอย่างที่ฉันรู้ราง ๆ รู้สึกอิสระที่จะ DV
ashes999

2
@DeadMG ฉันรู้ว่า C ++ เป็นวิธีที่จะไปฉันแค่พยายามอธิบายว่า C # ดีกว่า Java สำหรับเกม
MLProgrammer-CiM

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

3

สิ่งนี้ไม่ตอบคำถามของคุณ ปัญหาเกี่ยวกับกราฟิกและคอนโซลดูเหมือนจะเป็นสิ่งที่คุณต้องพิจารณาอย่างมาก นอกจากนี้ GC ยังส่งผลต่อประสิทธิภาพ แต่สิ่งที่ฉันเขียนเกี่ยวกับ:

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

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


3

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

น่าจะเป็นสิ่งที่ทำให้คุณออกจาก C ++ (การจัดการหน่วยความจำระดับต่ำไม่มีตัวเก็บขยะที่ต้องใส่ใจกับพอยน์เตอร์, structs เป็นอาร์เรย์เป็นต้น) เป็นสิ่งที่คุณควรเรียนรู้หากคุณต้องการใช้ประโยชน์จากทรัพยากรของคอมพิวเตอร์ได้อย่างมีประสิทธิภาพมากที่สุด . เกมของคุณจะทำงานได้ดีที่สุดหากคุณใช้ทรัพยากรของคอมพิวเตอร์อย่างมีประสิทธิภาพสูงสุด

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

ฉันว่าหยุดหลบกระสุนเรียนรู้ C ++ และใช้มัน


1

คุณควรทำในภาษาที่คุณรู้จักดีที่สุดจนกว่าคุณจะสามารถมีการศึกษาอย่างเป็นทางการ (วิทยาศาสตรบัณฑิต?) ในสาขาวิทยาศาสตร์คอมพิวเตอร์โดยเน้นการออกแบบเกม คุณสามารถใช้เกมของคุณเพื่อรับทุนการศึกษาโดยเฉพาะอย่างยิ่งถ้าคุณสามารถพูดว่า "ฉันทำสิ่งนี้โดยไม่มีการฝึกอบรมอย่างเป็นทางการใน Java"

JVM ที่ทันสมัยแม้เป็นหนึ่งเดียวจาก Oracle ก็มีคุณสมบัติมากมายที่สามารถตอบสนองความกังวลที่ผู้คนนำมาใช้ได้ คุณสามารถใช้ตัวรวบรวมขยะที่แตกต่างกันเพื่อให้ได้พฤติกรรมการเก็บขยะที่กำหนดขึ้น ฉันไม่ได้มีประสบการณ์อย่างกว้างขวางกับห้องสมุด 3 มิติ - เพียงเล็กน้อยกับ Java3D - แต่ไม่มีใครที่นี่ดูเหมือนจะบ่นเกี่ยวกับพวกเขา ตอนนี้การวิเคราะห์แบบ Escape อนุญาตให้ล็อคแบบล็อคได้และการจัดสรรวัตถุที่มีอายุสั้นมาก ๆ อย่างรวดเร็ว / ไม่มากนัก

ปัญหาคือไม่ว่าคุณจะเลือก Java ของ C ++ คุณจะต้องเรียนรู้วิธีการใช้งานพร้อมกันอย่างเหมาะสมและมีความเข้าใจในการจัดการหน่วยความจำดี หลังจากที่ทุกท่านสามารถได้อย่างง่ายดายเพียงกรูขึ้นกับที่คุณสามารถมีmalloc newฉันไม่ทราบว่าเครื่องมือมีลักษณะอย่างไรสำหรับ C ++ แต่เครื่องมือการทำโปรไฟล์สำหรับ Java นั้นค่อนข้างใช้งานง่ายฟรีและรวมเข้ากับ IDE คุณสามารถใช้พวกเขาเพื่อติดตามปัญหาประสิทธิภาพการทำงานและการเรียนรู้


5
การศึกษาอย่างเป็นทางการใน CS เป็นสิ่งสำคัญสำหรับทักษะการเขียนโปรแกรมที่แท้จริงในทุกสาขาวิชา ฉันจะรู้ว่าฉันอยู่ในปีที่สามของฉัน
DeadMG

4
ไม่เห็นด้วยอย่างแน่นอนกับ DeadMG หลังจากเรียนจบและเลือกหลักสูตรที่ฉันชอบ CS เอาพลังการพัฒนาเกมของฉันจาก 10% เป็น 100% มันไม่ได้สอนฉัน UI, การยึดถือ ฯลฯ แต่จริง ๆ แล้วการเข้ารหัสจริง
ashes999

2
@ ashes999: แล้วคุณจะโชคดี หลักสูตรของฉันไร้ค่าและฉันรู้ว่ามีอีกหลายคนที่รู้สึกเหมือนกัน
DeadMG

2
@DeadMG มันยากที่จะเห็นเมื่อคุณกำลังศึกษา เมื่อคุณทำงานสองสามปี F / T และเรียนรู้ทักษะฟรีอื่น ๆ คุณจะเห็น ฉันทำ. แต่บางทีฉันแค่ให้ความสนใจเป็นอย่างมากและพยายามที่จะใช้ทุกอย่างกับเกมอดิเรกของฉัน
ashes999

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