คำถามติดแท็ก java

Java เป็นทั้งภาษาโปรแกรมเชิงวัตถุยอดนิยมและสภาพแวดล้อมรันไทม์ซึ่งช่วยให้โปรแกรม Java สามารถรันไม่เปลี่ยนแปลงบนแพลตฟอร์มฮาร์ดแวร์และซอฟต์แวร์ส่วนใหญ่

3
ฉันจะทำให้เอนทิตีย้ายไปในทิศทางได้อย่างไร?
ฉันมีEntityอินสแตนซ์ที่อัพเดททุกช่วงเวลาของเกม สมมติว่าเอนทิตีเคลื่อนไปข้างหน้าอย่างต่อเนื่อง ฉันต้องการให้มุมของเอนทิตีกับฟังก์ชันที่ทำให้มันไปในทิศทางนั้น: moveForward(90);ควรทำให้พวกเขาไปทางขวา ถ้าผมประกาศการหมุนของฉันเป็นโลกintแล้วทำ moveForward(rotation); rotation++; จะทำให้มันติดตามวงกลมขนาดเล็กที่มีการเคลื่อนไหว ฉันจะทำสิ่งนี้ได้อย่างไร ฉันถือว่านี่เกี่ยวข้องกับคณิตศาสตร์เวกเตอร์ ฉันไม่รู้อะไรเลยคำอธิบายสั้น ๆ น่าจะดี

4
การปรับใช้ Java และ Steam JVM
ฉันกำลังพิจารณาทางเลือกของฉันสำหรับการพัฒนาเกมและปรับใช้กับ Steam Greenlight ฉันชอบ Java ที่มี libGDX โดยเฉพาะอย่างยิ่งสำหรับศักยภาพข้ามแพลตฟอร์ม Android และฉันเข้าใจว่าเป็นไปได้ที่จะปรับใช้เกม Java บน Steam ฉันรู้สึกสบายใจกับการสร้างเสื้อคลุมบางอย่างเพื่อให้เกม Java ของฉันสามารถโทรไปที่ C ++ Steamworks API คำถามของฉันเกี่ยวกับปัญหาการปรับใช้ที่ฉันอาจพบ โดยเฉพาะอย่างยิ่งกับการติดตั้งเครื่องไคลเอนต์ของ JRE ฉันเคยเห็นโปรแกรมติดตั้ง Steam หลายตัวตรวจสอบ. NET runtime ฉันควรตรวจสอบและติดตั้งที่คล้ายกันสำหรับ JRE หรือไม่? มีเหตุผลใดที่จ้องมองว่าทำไมการปรับใช้ Java บน Steam จึงเป็นฝันร้ายในการปรับใช้และบำรุงรักษาเทียบกับ C # โดยใช้ Monogame
10 java  libgdx  steam 

1
BitmapFont - ซึ่งเป็นวิธี getBounds ในใหม่ 1.6 libGDX
ฉันดาวน์โหลด libgdx เวอร์ชั่นใหม่ล่าสุด 1.6 และฉันไม่สามารถแก้ปัญหาด้วยข้อความ BitmapFont ของฉันที่อยู่ตรงกลาง ก่อนหน้านี้ในเวอร์ชัน 1.54 ฉันใช้เมธอด getBounds () เพื่อค้นหาความกว้างของข้อความ แบ่งปันโซลูชันของคุณขอบคุณ
10 java  libgdx 

4
การสร้างอาวุธระยะประชิดใน Box2D (libGDX)
ฉันกำลังดิ้นรนกับวิธีการใช้อาวุธระยะประชิดที่สามารถสวิงเมื่อกดปุ่ม ฉันจินตนาการการโจมตีสองแบบที่แตกต่างกัน (แทงและแกว่ง) ฉันได้ลองสร้างการแข่งขันสองรายการ (ตัวละคร + อาวุธ) สองร่างที่แตกต่างกันสองร่างที่แตกต่างกัน + ข้อต่อที่น่ารังเกียจ แต่ฉันไม่สามารถเขียนโค้ดเพื่อให้ทำงานตามที่ฉันจินตนาการได้ แทง: ดังนั้นด้วยการกดปุ่มร่างกาย / อุปกรณ์จับยึด (เซ็นเซอร์) จะออกมาเป็นเวลาประมาณ 1 วินาทีและหายไป (อีกทางหนึ่งร่างกาย / อุปกรณ์ติดตั้งสามารถอยู่กับฮีโร่ได้เสมอและหมุน 90 องศารอบจุดยอดเมื่อกดและ จากนั้นหมุนกลับเป็นปกติ) แกว่ง: สิ่งเดียวกัน แต่ตอนนี้อาวุธจะเริ่มจากด้านบนและแกว่งลง อาวุธก็จะเป็นเซ็นเซอร์ด้วย สิ่งที่ฉันได้ลอง: ฉันสร้างร่างกายที่มีพลังสองแบบ อาวุธต้องติดตามฮีโร่ดังนั้นฉันจึงใช้ข้อต่อหมุนรอบเพื่อรวมเข้าด้วยกัน เมื่อกดปุ่มฉันจะตั้งค่าความเร็วเชิงมุมของอาวุธให้เป็นตัวเลข อย่างไรก็ตามอาวุธจะยังคงหมุนหลังจากที่ฉันปล่อยกุญแจ ฉันลองใช้การตรวจสอบถ้า (ถ้ามุมมากกว่า ___ ตั้งค่าความเร็วเชิงมุมเป็นศูนย์) อย่างไรก็ตามนั่นหมายความว่าอาวุธจะหยุดหมุนเมื่อฉันกดปุ่มเป็นครั้งที่สอง
10 java  libgdx  box2d 

2
เนื่องจาก Table.drawDebug เลิกใช้แล้วใน libGDX ฉันควรใช้อะไรแทน
ฉันกำลังติดตามหนังสือ "Learning LibGDX Game Development" เพื่อสร้างเกมอย่างง่าย ฉันอยู่ในส่วนการสร้างเมนูที่เราสร้างสเตจและแสดงผลด้วยเส้นขอบการดีบัก หนังสือเล่มนี้บอกว่าจะใช้Table.drawDebug(stage)แต่วิธีการแบบคงที่นี้ดูเหมือนว่าจะถูกลบออกจากTableชั้นเรียนกรอบทั้งหมด ฉันกำลังนำเข้าcom.badlogic.gdx.scenes.scene2d.ui.Table; ด้านล่างคือรหัสของฉัน: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } บรรทัดสุดท้ายTable.drawDebug(stage);มีข้อผิดพลาดในการรวบรวม"The method drawDebug(ShapeRenderer) in the type Table is …

2
ปัญหาในการจับคู่ขนาดตัวอักษรกับความละเอียดหน้าจอใน libgdx
ฉันมีปัญหาในการแสดงข้อความในเกมของฉันที่มีขนาดเท่ากันบนหน้าจอที่แตกต่างกันและฉันทำการทดสอบอย่างง่าย การทดสอบนี้ประกอบด้วยการแสดงข้อความที่เหมาะสมบนหน้าจอฉันต้องการให้ข้อความมีขนาดเท่ากันจากหน้าจอและจาก DPI ฉันพบสิ่งนี้และคำตอบที่ฉันคิดว่าน่าจะแก้ปัญหาได้ แต่ทำไม่ได้ ในเดสก์ท็อปขนาดก็โอเค แต่ในโทรศัพท์ของฉันใหญ่เกินไป นี่คือผลลัพธ์บน Nexus 4 ของฉัน: (ความหนาแน่น 768x1280, 2.0) และนี่คือผลลัพธ์บน MacBook ของฉัน: (ความหนาแน่น 480x800, 0.6875) ฉันใช้Open Sans Condensed (ลิงก์ไปยังฟอนต์ google) อย่างที่คุณเห็นบนเดสก์ท็อปดูดี แต่บนโทรศัพท์มันใหญ่มาก นี่คือรหัสการทดสอบของฉัน: public class TextTest extends ApplicationAdapter { private static final String TAG = TextTest.class.getName(); private static final String TEXT = "Tap the screen …

2
ฉันจะทำให้หางงูเป็นไปตามหัวได้อย่างไร
ทำตามการมอบหมายและเพิ่งเริ่มต้นกับlibGDXโดยการสร้าง Snake clone ขนาดเล็กที่ฉันพบเจอปัญหาที่ฉันอาจจะละอายใจในระยะเวลาหนึ่ง ขณะนี้ฉันมีหัวงู (สี่เหลี่ยมเรียบง่ายในขั้นตอนนี้) เคลื่อนที่ไปทั่วผืนผ้าใบของเกม วิธีที่ตรงไปตรงมาที่สุดในการสร้างส่วนที่เหลือของงูนั้นคือการมีหัวของตัวเองเป็น Java Collections LinkedList รายการของ SnakeElements ซึ่งจะลดขนาด / ตามขนาดของสิ่งที่ผู้เล่นทำ มีรายการ SnakeElements นี้ตามหัว แต่ได้พิสูจน์แล้วว่าไม่น่ารำคาญ ฟังก์ชั่นปัจจุบันการทำเช่นนี้มีดังต่อไปนี้และถูกเรียกว่าทุกครั้งที่หัวหน้าอัพเดตตำแหน่ง: private void moveTail (float x, float y, int direction) { float tmpx, tmpy; int tmpdirection; int offset_x, offset_y; for (SnakeSegment snse : tail) { offset_x = 0; offset_y = …
10 java  libgdx 

2
วิธีการตรวจสอบว่าห้องที่ใช้ voxel 3D ถูกปิดผนึกอย่างมีประสิทธิภาพ
ฉันเคยมีปัญหาบางอย่างกับการพิจารณาว่าห้องขนาดใหญ่ถูกผนึกในห้อง 3D แบบ voxel หรือไม่ ฉันอยู่ในจุดที่ฉันพยายามอย่างหนักที่สุดในการแก้ปัญหาโดยไม่ขอความช่วยเหลือ แต่ไม่พยายามให้มากพอฉันจึงขอความช่วยเหลือ เพื่อชี้แจงให้ชัดเจนว่าเป็นสิ่งที่ไม่มีรูในห้อง มีเครื่องซีลออกซิเจนซึ่งตรวจสอบว่าห้องถูกปิดผนึกหรือไม่และขึ้นอยู่กับระดับของออกซิเจน ตอนนี้นี่เป็นวิธีที่ฉันทำ: เริ่มต้นที่บล็อกด้านบนกระเบื้องจับแมวน้ำ (ช่องระบายอากาศอยู่ที่ใบหน้าด้านบนของเครื่องปิดผนึก) วนซ้ำวนซ้ำในทั้ง 6 ทิศทางที่อยู่ติดกัน หากไทล์ที่อยู่ติดกันเป็นไทล์แบบไม่มีการดูดให้ดำเนินการต่อผ่านลูป หากแผ่นที่อยู่ติดกันไม่เต็มหรือเป็นแผ่นสูญญากาศให้ตรวจสอบว่ามีบล็อกที่อยู่ติดกันหรือไม่ ทุกครั้งที่มีการตรวจสอบไพ่ให้ลดจำนวนตัวนับ หากการนับมีค่าเป็นศูนย์หากบล็อกสุดท้ายอยู่ติดกับแผ่นสูญญากาศให้ส่งคืนพื้นที่ที่ถูกปิดผนึก หากจำนวนการเข้าศูนย์เป็นศูนย์และบล็อกสุดท้ายไม่ใช่แผ่นสูญญากาศหรือลูปวนซ้ำจะสิ้นสุดลง (ไม่มีแผ่นสูญญากาศเหลืออยู่) ก่อนที่ตัวนับจะเป็นศูนย์พื้นที่จะถูกปิดผนึก หากพื้นที่ไม่ได้ปิดผนึกให้เรียกใช้การวนซ้ำอีกครั้งด้วยการเปลี่ยนแปลงบางอย่าง: ตรวจสอบบล็อกที่อยู่ติดกันสำหรับแผ่น "อากาศระบายอากาศ" แทนแผ่นสูญญากาศ แทนที่จะใช้ตัวนับลดระดับให้ทำต่อไปจนกว่าจะไม่พบแผ่น "อากาศระบายอากาศ" ที่อยู่ติดกัน เมื่อวนรอบเสร็จแล้วให้ตั้งค่าบล็อกที่เลือกแต่ละบล็อกเป็นแผ่นสูญญากาศ นี่คือรหัสที่ฉันใช้: http://pastebin.com/NimyKncC ปัญหา: ฉันใช้การตรวจสอบนี้ทุก 3 วินาทีบางครั้งเครื่องซีลจะต้องวนซ้ำหลายร้อยบล็อกและโลกขนาดใหญ่ที่มีเครื่องปิดผนึกออกซิเจนหลายวงวนซ้ำแบบวนซ้ำเหล่านี้ทุกสองสามวินาทีอาจเป็นเรื่องยากมากสำหรับซีพียู ฉันสงสัยว่าใครที่มีประสบการณ์เกี่ยวกับการเพิ่มประสิทธิภาพสามารถให้มือฉันหรืออย่างน้อยก็ชี้ให้ฉันไปในทิศทางที่ถูกต้อง ขอบคุณมัด
10 java  voxels  recursion 

3
ฉันจะสร้างแบบจำลองเกมตามเศรษฐกิจในรหัสได้อย่างไร
ฉันต้องการสร้างเกมเศรษฐกิจโดยยึดตามอารยธรรมโบราณ ฉันไม่แน่ใจว่าจะออกแบบมันอย่างไร ถ้าฉันทำงานในเกมที่มีขนาดเล็กกว่าเช่นสำเนาของ "Space Invaders" ฉันจะไม่มีปัญหาในการสร้างมันขึ้นมาเช่นนี้: คลาสควบคุมหลัก คลาสกราฟิก คลาสผู้เล่น ระดับศัตรู ฉันไม่เข้าใจว่าฉันจะทำเช่นนี้สำหรับโครงการขนาดใหญ่เช่นเกมเศรษฐกิจของฉันได้อย่างไร ฉันจะสร้างคลาสประเทศที่มีกลุ่มของเมืองหรือไม่? เมืองต่าง ๆ มีชั้นอาคารจำนวนมากหรือไม่ส่วนใหญ่จะมีชั้นเรียนของผู้คนหรือไม่? ฉันสร้างเส้นทางการค้นหาชั้นเรียนที่ผู้เล่นสามารถเข้าถึงเพื่อเดินทางไปได้หรือไม่?

2
การเขียนโปรแกรมเกม Java 2D: แนวทางที่แตกต่างกันในการสร้างเกมลูป
ฉันยังใหม่กับการเขียนโปรแกรมเกม Java แต่ยิ่งฉันอ่านมากขึ้นฉันก็สับสนเพราะฉันได้เห็นวิธีการที่แตกต่างกันในการทำลูปเกม: 1. วิธีการมาตรฐานที่ใช้คลาส Timer (ดูเหมือนจะน้อยกว่า) แม่นยำ) 2. วิธีที่แม่นยำยิ่งขึ้นที่ใช้ System.nanoTime 3. วิธีการง่ายๆที่ใช้ schedAtFixedRate โดยทั่วไปควรเลือกข้อใดข้อหนึ่งและข้อดี / ข้อเสียของแต่ละวิธีอยู่ที่ใด ขอบคุณล่วงหน้าสำหรับข้อมูลใด ๆ

2
ภาษาที่ใช้งานได้ดีเพียงใดใน Android
นี่เป็นกรณีพิเศษของคำถามนี้ที่ฉันรู้สึกว่าเกี่ยวข้องโดยเฉพาะ ฉันกำลังเล่นเกมสำหรับ Android และฉันวางแผนที่จะใช้ Scala กับ libgdx ฉันวางแผนที่จะสร้างเกมนักแสดง แต่ไม่จำเป็นว่าจะต้องเป็นเกมที่มีประสิทธิภาพมากเกินไป ฉันเห็นเอกสารของ libgdx เกี่ยวกับ Garbage Collectionและสิ่งนี้ทำให้ฉันคิดว่า: ฟังก์ชั่นการเขียนโปรแกรมหมายถึงวัตถุที่ไม่เปลี่ยนรูปจำนวนมาก ดังนั้นการกลายพันธุ์วัตถุต้องสร้างวัตถุใหม่ ดังนั้นวัตถุจำนวนมากได้รับการรวบรวมขยะซึ่งทำให้ประสิทธิภาพลดลง นี่เป็นปัญหาที่ผ่านไม่ได้หรือไม่ มีปัญหาที่สำคัญอื่น ๆ เกี่ยวกับสไตล์การใช้งานบน Android หรือไม่?
10 java  android  libgdx 

2
ฉันจะแสดงภูมิประเทศในมุมมอง 2.5D ได้อย่างไรเช่นในเกม Don't Starve
ผมมีประสบการณ์ในการทำ 2D เกม scroller ด้านเช่น Terraria แต่ตอนนี้ฉันต้องการที่จะท้าทายตัวเองและทำให้เกมที่มีเป็นมุมมอง 2.5D เกมที่ฉันพยายามเลียนแบบคือ Don't Starve ตอนนี้โฟกัสของฉันอยู่ที่การหาวิธีทำให้พื้นดิน ฉันมีเวลายากลำบากในการหาวิธีที่พวกเขาสร้างพื้นดินและจากนั้นแสดงผล วิธีที่ฉันคิดว่าพวกเขาทำให้พื้นดินเกิดจากการทาสีพื้นในโปรแกรมระบายสีก่อนแล้วจึงจัดการภาพแบนนั้นเพื่อให้มีความลึก ฉันสับสนอย่างสมบูรณ์ว่าคุณจะทำให้ภูมิประเทศนั้นเป็นอย่างไร ฉันต้องการให้ภูมิประเทศมีคุณสมบัติดังต่อไปนี้: ดูภูมิประเทศใน Don't Starve นี่คือวิดีโอแสดงภูมิประเทศใน Don't Starve ภูมิประเทศจะเรียบและมุมและมุมมองของกล้องจะได้รับการแก้ไข คำแนะนำและคำแนะนำใด ๆ จะได้รับการชื่นชมขอบคุณล่วงหน้า (ฉันทำงานใน Java โดยใช้ Light Game Java Light Library (LWJGL))

3
มีความสัมพันธ์ระหว่างทฤษฎีเกมกับการพัฒนาเกมหรือไม่?
ฉันเป็นโปรแกรมเมอร์ Java สนใจที่จะเรียนรู้เกมบน Java เมื่อเร็ว ๆ นี้ฉันดูหนังสือเกี่ยวกับปฏิบัติการวิจัยที่เขียนโดย Wayne L.Winston มีหัวข้อเกี่ยวกับทฤษฎีเกม มันเป็นคณิตศาสตร์อย่างแท้จริง ฉันเป็นเพียงผู้พัฒนาแอพ แต่หนังสือเล่มนั้นจะมีประโยชน์ในการเริ่มต้นอาชีพการเล่นเกมหรือไม่?
10 java  game-theory 

2
Breakout Collision: ตรวจจับด้านข้างของการชน
ฉันกำลังเขียนโคลน breakout (เกมแรกของฉัน) และฉันติดอยู่กับวิธีที่ฉันคิดออกว่าด้านใดของก้อนอิฐที่ถูกกระแทก ฉันมีวิธีตรวจจับการชนกันที่มีลักษณะดังนี้: DetectCollision(Object a, Object b) x = distance(a.x, b.x); y = distance(a.y, b.y); if (x is smaller than the combined width & y is smaller is than combined height { return true; } return false; มันใช้งานได้ดี แต่ฉันต้องรู้ด้านของการชนและตำแหน่งที่สัมพันธ์กับศูนย์กลางเพื่อตอบสนองอย่างถูกต้อง ฉันใช้เวลาสองสามวันที่ผ่านมาสอดแนม แต่ก็หายไป

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

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