มีเหตุผลที่ดีที่ฉันไม่ควรใช้แอปเพล็ต java สำหรับเกมหรือไม่?


9

ฉันต้องการสร้างเกมที่ใช้เบราว์เซอร์ที่มีผู้เล่นหลายคน สิ่งที่ดีเกี่ยวกับการใช้แอปเพล็คือฉันสามารถสร้างไคลเอนต์และเซิร์ฟเวอร์ในภาษาเดียวกัน (java / closure / scala / etc) ฉันรู้ว่ามี html5 และ javascript แต่จาวาสคริปต์ฝั่งเซิร์ฟเวอร์นั้นยังไม่โตเท่าแพลตฟอร์ม jvm และการสนับสนุนเบราว์เซอร์ยังคงเป็นขุยอยู่

ดูเหมือนว่าแอปเปิลจะไม่ใช้กันอย่างแพร่หลาย (ยกเว้น Runescape) แต่มีเหตุผลที่ไม่เหมาะสมหรือเป็นเพราะชื่อเสียงที่ไม่ดีที่พวกเขาพัฒนาขึ้นในวัยเด็กของพวกเขา?


1
อาจเป็นเพราะมีคนเพียงไม่กี่คนที่ทำเว็บเกมใน Java และต้องการใช้ Flash?
The Duck คอมมิวนิสต์

Java ไม่สามารถใช้งานได้ในเบราว์เซอร์อีกต่อไปในปัจจุบัน (เทียบกับ Flash หรือโดยวิธีการใช้จาวาสคริปต์) และมีโอกาสดีที่กลุ่มเป้าหมายของคุณจะไม่ได้ติดตั้ง คุณยังคงสามารถใช้ Java บนฝั่งเซิร์ฟเวอร์ทุกอย่างที่คุณต้องการไม่ว่าจะใช้เทคโนโลยีด้านไคลเอนต์ก็ตามฉันไม่เข้าใจอาร์กิวเมนต์ที่ "จาวาสคริปต์ฝั่งเซิร์ฟเวอร์ไม่ได้พัฒนาเต็มที่เท่ากับแพลตฟอร์ม jvm"
falstro

คำตอบ:


9

เห็นได้ชัดว่าไม่ได้เหมาะสมสำหรับมันดังที่RuneScapeและMinecraftและเกมแอปเพล็ต Java ขนาดเล็กอื่น ๆแสดงให้เห็น นอกจากนี้ยังมีห้องสมุดสำหรับกราฟิก 3 มิติที่เร่งด้วยฮาร์ดแวร์ ( LWJGL , JOGL ) มันไม่ใช่ภาษายอดนิยมในชุมชนพัฒนาเกม

คุณต้องพิจารณาแพลตฟอร์มที่รองรับของคุณด้วย Windows และ Linux มีปลั๊กอิน Java ที่ยอดเยี่ยม Mac มีคุณสมบัติที่ดี (ทำงานได้อย่างเต็มประสิทธิภาพใน Safari ในประสบการณ์ของฉัน) แต่เห็นได้ชัดว่าแพลตฟอร์มเช่น iPad และ Google Chrome ของ Chrome OS จะพลาดอย่างสมบูรณ์เพราะพวกเขาทำไม่ได้และอาจจะไม่ เคยมี Java VM บนพวกเขา


นอกจากนี้คุณต้องคิดเกี่ยวกับตลาดเป้าหมายของคุณ - ผู้เล่น minecraft สามารถจัดการไปที่ java.com และติดตั้งได้ แต่ "Internet explorer ฝูงชน" จำนวนมากอาจไม่ใช่
Jari Komppa

อย่างไรก็ตาม Minecraft นั้นถูกสร้างมาอย่างดีโดยที่ผู้ใช้เหล่านั้นสามารถดาวน์โหลดเวอร์ชันที่สามารถใช้งานได้ซึ่งรวมถึง JRE และไม่ต้องการการติดตั้งใด ๆ มันแค่ทำงาน™
Ricket

2
ฉันคิดว่า java เป็นทางออกที่ดีในการเข้าถึง gpu ในเบราว์เซอร์โดยไม่บังคับให้ผู้ใช้ติดตั้งอะไร (ผู้ใช้ 80-85% ติดตั้ง java ... รวมถึง explorer noobs ด้วย :))
Notabene

6

ฉันใช้ Java เพื่อเขียนเกมและฉันใช้ C ++ เพื่อเขียนเกมและพบว่า Java นั้นใช้ได้ตราบใดที่คุณยังคำนึงถึงจุดแข็งและจุดอ่อนของ Java ข้อดีสองประการที่สำคัญสำหรับฉันการเขียนโปรแกรมใน Java คือความเร็วในการพัฒนาและการใช้งาน / การพกพา เวลาในการคอมไพล์นั้นเร็วกว่าใน VC ++ (ยังไม่สามารถพูดกับ XCode หรือ Clang ได้) ซึ่งหมายความว่าฉันสามารถแก้ไขปัญหาได้เร็วกว่ามาก นอกจากนี้เมื่อ Eclipse รวบรวมอย่างต่อเนื่องฉันจึงพิมพ์ผิดพลาดน้อยลง ฉันไม่เคยเขียนโค้ด C ++ สักชิ้นที่ 'เพิ่งได้ผล' บนระบบหรือคอมไพเลอร์อื่น ใน Java นี่เป็นบรรทัดฐาน

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


3

ไม่มีอะไรผิดปกติกับ Java applets สำหรับเกมบนเว็บ ฉันเขียนเกมโอเพ่นซอร์สโร๊คไลค์ ( Tyrant ) ใน Java และทำงานได้ดีเหมือนแอปเพล็ต

บางจุดบวกใหญ่ของ Java ในประสบการณ์ของฉัน:

  • การพกพานั้นยอดเยี่ยม - เนื่องจากความซับซ้อนของ Tyrant เป็นเรื่องที่น่าประทับใจมากที่ฉันได้รับโค้ดที่คอมไพล์ตัวเดียวกันเพื่อให้ทำงานได้ดีบน Windows, Mac และ Linux

  • คุณไม่ต้องกังวลเกี่ยวกับนิสัยใจคอของเบราว์เซอร์

  • ด้วยความเฉลียวฉลาดเล็กน้อยคุณสามารถทำให้โค้ดเดียวกันรันทั้งแอปเพล็ตหรือแอพพลิเคชั่นเดสก์ทอปแบบสแตนด์อโลน

  • ประสิทธิภาพถือว่ายอดเยี่ยม JVM ทันสมัย

  • จุดบวกปกติทั้งหมดของ Java ในแง่ของอาร์เรย์โอเพ่นซอร์สไลบรารี่ / APIs ฯลฯ

เพียงแค่ตระหนักถึงสิ่งต่อไปนี้:

  • คุณจะต้องลงชื่อแอปเพล็ตของคุณ / รับสิทธิ์พิเศษหากคุณต้องการทำสิ่งต่าง ๆ เช่นเก็บข้อมูลไว้ในระบบไฟล์ท้องถิ่นหรือเข้าถึงไลบรารี่เนทีฟ นี่อาจเป็นอุปสรรคต่อผู้ใช้บางคน

  • เวลาเริ่มต้นมีแนวโน้มที่จะช้ากว่า Flash หรือ JavaScript เล็กน้อย ในทางตรงกันข้ามประสิทธิภาพจะดีขึ้นเมื่อ JVM เริ่มทำงานแล้ว ......

  • Java เป็นภาษาที่รวบรวมขยะดังนั้นจะมีการหยุด GC ชั่วคราวเล็กน้อยในบางโอกาส ไม่ใช่ปัญหาสำหรับเกมแคชชวล / สวมบทบาท / กลยุทธ์ แต่อาจเป็นปัญหาสำหรับเกม 3D FPS ประสิทธิภาพสูงที่คุณกำลังพยายามรักษาความกระวนกระวายใจแบบไม่มีเฟรม 120 FPs ......


1

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


ฉันได้กลิ่นโอกาสหรือไม่ :)
Ricket

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

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