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

9
จะหลีกเลี่ยงการพึ่งพาแบบวงกลมระหว่างผู้เล่นและโลกได้อย่างไร
ฉันกำลังทำงานกับเกม 2D ที่คุณสามารถเลื่อนขึ้นลงซ้ายและขวา ฉันมีวัตถุตรรกะของเกมเป็นหลักสองประการ: ผู้เล่น:มีตำแหน่งที่สัมพันธ์กับโลก โลก:วาดแผนที่และผู้เล่น จนถึงตอนนี้โลกขึ้นอยู่กับผู้เล่น (เช่นมีการอ้างอิงถึง) ต้องมีตำแหน่งที่จะคิดออกว่าจะวาดตัวละครของผู้เล่นและส่วนใดของแผนที่ที่จะวาด ตอนนี้ฉันต้องการเพิ่มการตรวจจับการชนเพื่อให้ผู้เล่นไม่สามารถเคลื่อนที่ผ่านกำแพงได้ วิธีที่ง่ายที่สุดที่ฉันคิดได้ก็คือให้ผู้เล่นถามโลกว่าการเคลื่อนไหวที่ต้องการนั้นเป็นไปได้หรือไม่ แต่นั่นจะแนะนำการพึ่งพาแบบวงกลมระหว่างผู้เล่นและโลก (เช่นแต่ละคนมีการอ้างอิงถึงอีกคนหนึ่ง) ซึ่งดูเหมือนว่าควรหลีกเลี่ยง วิธีเดียวที่ฉันจะได้คือการให้โลกย้ายผู้เล่นแต่ฉันพบว่ามันค่อนข้างใช้งานง่าย ตัวเลือกที่ดีที่สุดของฉันคืออะไร? หรือหลีกเลี่ยงการพึ่งพาแบบวงกลมไม่คุ้ม

3
วิธีการจัดโครงสร้างรหัสสำหรับอาวุธ / คาถา / พลังพิเศษมากมาย
ฉันเป็นโปรแกรมเมอร์ที่ไม่มีประสบการณ์ในการสร้างเกม "เหมือนโร๊คไลค์" ในเส้นเลือดของFTLโดยใช้ Python (ยังไม่มี PyGame ในขณะที่ฉันยังเกี่ยวข้องกับข้อความเท่านั้น) เกมของฉันจะมีอาวุธจำนวนมาก (ประมาณ 50 ดวงสำหรับผู้เริ่ม) ที่ให้ความสามารถพิเศษ ฉันกำลังดิ้นรนเพื่อทำความเข้าใจวิธีจัดโครงสร้างรหัสวัตถุในแบบที่ทรงพลัง (ในแง่ของการอนุญาตให้อาวุธมีเอฟเฟกต์ต่างกันอย่างรุนแรง) และขยายได้ (เพื่อให้ฉันสามารถเพิ่มอาวุธได้ง่ายขึ้นในภายหลังเช่นวางลงในโฟลเดอร์ ) สัญชาตญาณแรกของฉันคือการมีชั้นเรียน BasicWeapon และมีอาวุธต่าง ๆ ที่สืบทอดมาจากชั้นเรียนนั้น อย่างไรก็ตามนี่เป็นปัญหาสำหรับฉัน: ฉันต้องสร้างคลาส BasicWeapon ให้เปล่าโดยที่ไร้ประโยชน์ (คุณสมบัติเดียวที่อาวุธทั้งหมดมีเหมือนกันคือชื่อและประเภท (ปืนพกขวาน ฯลฯ ) หรือฉันต้องทำนายทุกอย่าง เอฟเฟกต์ที่ไม่ซ้ำใครที่ฉันจะได้รับและโค้ดที่เป็นพื้นฐานของ BasicWeapon เห็นได้ชัดว่าเป็นไปไม่ได้ แต่อดีตยังคงสามารถทำงานได้ อย่างไรก็ตามนั่นทำให้ฉันมีคำถาม: ฉันจะวางรหัสสำหรับอาวุธแต่ละชนิดได้ที่ไหน ฉันจะสร้าง plasmarifle.py, rocketlauncher.py, swarmofbees.py ฯลฯ และวางมันลงในโฟลเดอร์ที่เกมสามารถนำเข้าได้หรือไม่ หรือมีวิธีที่จะมีไฟล์สไตล์ฐานข้อมูล (อาจเป็นอะไรที่เรียบง่ายเหมือนกับสเปรดชีต Excel) ที่มีรหัสที่ไม่ซ้ำกันสำหรับอาวุธแต่ละอัน - โดยไม่ต้องหันไปใช้ eval …

4
คอนเทนเนอร์ที่มีประสิทธิภาพที่สุดในการจัดเก็บวัตถุเกมแบบไดนามิกคืออะไร [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นนักกีฬาคนแรกและฉันรู้เกี่ยวกับคอนเทนเนอร์ประเภทต่างๆมากมาย แต่ฉันต้องการค้นหาคอนเทนเนอร์ที่มีประสิทธิภาพที่สุดสำหรับการจัดเก็บวัตถุไดนามิกที่จะเพิ่มและลบออกจากเกมค่อนข้างบ่อย EX-กระสุน ฉันคิดว่าในกรณีนี้มันจะเป็นรายการเพื่อให้หน่วยความจำไม่ต่อเนื่องและไม่มีการปรับขนาดใด ๆ ที่เกิดขึ้น แต่ฉันก็ใคร่ครวญโดยใช้แผนที่หรือชุด หากใครมีข้อมูลที่เป็นประโยชน์ฉันจะขอบคุณมัน ฉันกำลังเขียนสิ่งนี้ใน c ++ โดยวิธี ฉันยังคิดวิธีแก้ปัญหาที่ฉันคิดว่าจะใช้ได้ ในการเริ่มต้นฉันจะจัดสรรเวกเตอร์ที่มีขนาดใหญ่ .. พูดได้ 1,000 วัตถุ ฉันจะติดตามดัชนีที่เพิ่มล่าสุดในเวกเตอร์นี้เพื่อให้ฉันรู้ว่าจุดสิ้นสุดของวัตถุอยู่ที่ไหน จากนั้นฉันจะสร้างคิวที่จะเก็บดัชนีของวัตถุทั้งหมดที่ "ลบ" จากเวกเตอร์ (จะไม่มีการลบจริงฉันจะรู้ว่าสล็อตนั้นฟรี) ดังนั้นหากคิวว่างเปล่าฉันจะเพิ่มดัชนีล่าสุดที่เพิ่มเข้าไปในเวกเตอร์ + 1 มิฉะนั้นฉันจะเพิ่มดัชนีของเวกเตอร์ที่อยู่ด้านหน้าของคิว

6
วิธีการเชิงวัตถุเป็นวิดีโอเกม? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันสงสัยอยู่เสมอว่าการวางแนววัตถุในขอบเขตใดโดยวิดีโอเกมโดยเฉพาะโครงการ 3D ขนาดใหญ่ ฉันคิดว่ามันคงเจ๋งที่ทั้งสองtrollและwerewolfสืบทอดคุณลักษณะจากenemyและเขียนทับบางส่วนของพวกเขา แต่บางทีชั้นเรียนอาจหนักเกินไปที่จะใช้งานได้จริงฉันไม่รู้ ...
18 objects 

5
วัตถุสองครั้งที่ใกล้ที่สุดปรากฏขึ้นสองเท่าใหญ่กว่าอะไร?
ดังนั้นฉันจึงคิดที่จะสร้างเกม 2D ที่คุณสามารถเคลื่อนที่ไปตามแกน Z ได้โดยการเปลี่ยนเลเยอร์ที่คุณเป็น ฉันต้องการไต่ 2D สไปรต์ของฉันขึ้นอยู่กับความลึก ครั้งหนึ่งมีคนแสดงตัวอย่างให้ฉันฟังซึ่งเขามีสไปรต์ 2 มิติจำนวนมากและการเลื่อนเขาสามารถเปลี่ยนความลึกของกล้องได้ ดังนั้นเมื่อซูมเข้าวัตถุจะเข้าใกล้เครื่องเล่นมากขึ้นและดูใหญ่ขึ้น จากนั้นฉันก็สงสัยว่าวัตถุควรใหญ่กว่านี้เมื่อมันเข้าใกล้ 1 หน่วย คุณจะคำนวณมันอย่างไร ดังนั้นชายคนนั้นบอกฉันว่า: มีกฎพื้นฐานข้อหนึ่งที่ฉันใช้อยู่: "วัตถุสองเท่าใกล้เคียงปรากฏใหญ่ขึ้นสองเท่า" ตอนนี้โดยการทดสอบด้วยตนเองฉันรู้ว่ากฎไม่ได้ใช้ในโลกแห่งความเป็นจริง;) แต่มีค่าคงที่ที่ใช้ในการคำนวณโลกแห่งความจริงสำหรับมุมมองหรืออะไร? หรือสูตร ฉันรู้ว่านี่อาจไม่ใช่สถานที่ที่ดีที่สุดในการถามคำถาม แต่เนื่องจากเป็นเว็บไซต์เดียวที่ฉันใช้สำหรับคำถามที่เกี่ยวข้องกับเกมและบริบทของฉันเป็นเกมฉันคิดว่าฉันจะลองดู นอกจากนี้ฉันคาดหวังว่าจะมีคนที่นี่ที่รู้ทุกอย่างเกี่ยวกับมุมมอง 3 มิติและเมทริกซ์หรือบางสิ่งบางอย่างเนื่องจากอาจเกี่ยวข้องกับเกม 3 มิติ;) TL; DR: "วัตถุสองเท่าใกล้ปรากฏใหญ่เป็นสองเท่า" นั่นไม่จริงในโลกแห่งความจริง แต่ค่าคงที่หรือสูตรใดที่ถูกต้อง

2
วิธีการได้รับผลลัพธ์ที่แม่นยำด้วยอัลกอริทึมของ Painter
ไม่นานมานี้ฉันถามว่าจะกำหนดได้อย่างไรเมื่อใบหน้าซ้อนทับกัน คำแนะนำคือการใช้บัฟเฟอร์ Z อย่างไรก็ตามฉันไม่สามารถใช้บัฟเฟอร์ Z ในโครงการปัจจุบันของฉันได้ดังนั้นฉันจึงต้องการใช้อัลกอริทึมของ Painter ฉันไม่มีเงื่อนงำที่ดีเหมือนเมื่อพื้นผิวอยู่ข้างหลังหรือข้างหน้าอีกแม้ว่า ฉันได้ลองวิธีการมากมาย แต่พวกเขาทั้งหมดล้มเหลวในกรณีขอบหรือพวกเขาล้มเหลวแม้ในกรณีทั่วไป นี่คือรายการวิธีการเรียงลำดับที่ฉันได้ลองไปแล้ว: ระยะทางถึงจุดกึ่งกลางของแต่ละหน้า ระยะทางเฉลี่ยของแต่ละจุดยอดของใบหน้า ค่าเฉลี่ย z ของแต่ละจุดยอด ค่าสูงสุดของจุดยอดของแต่ละหน้าและวาดอันดับแรก ค่า z ต่ำสุดของจุดยอดของแต่ละหน้าและวาดสุดท้าย ปัญหาคือใบหน้าอาจมีระยะใกล้กว่า แต่ก็ยังอยู่ไกลออกไป วิธีการทั้งหมดนี้ดูไม่น่าเชื่อถือ แก้ไข:ตัวอย่างเช่นในภาพต่อไปนี้พื้นผิวที่มีจุดสีน้ำเงินเป็นจุดกึ่งกลางจะถูกทาสีเหนือพื้นผิวที่มีจุดสีแดงเป็นจุดกึ่งกลางเนื่องจากจุดสีน้ำเงินอยู่ใกล้กว่า อย่างไรก็ตามนี่เป็นเพราะพื้นผิวของจุดสีแดงมีขนาดใหญ่กว่าและจุดกึ่งกลางอยู่ไกลออกไป พื้นผิวที่มีจุดสีแดงควรทาสีเหนือจุดสีน้ำเงินเนื่องจากอยู่ใกล้มากขึ้นในขณะที่ระยะกึ่งกลางบอกว่าตรงกันข้าม อะไรคือสิ่งที่ใช้ในอัลกอริทึมของ Painter เพื่อกำหนดลำดับของวัตถุที่ควรวาด
14 3d  algorithm  objects  face 

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

1
วิธีการสุ่มวางเอนทิตีที่ไม่ทับซ้อนกัน?
ฉันกำลังสร้างสภาพแวดล้อมที่สร้างแบบสุ่มสำหรับเกมที่ฉันกำลังพัฒนา ฉันใช้และการเข้ารหัสในOpenGLJava ฉันกำลังพยายามวางต้นไม้ในโลกของฉัน (เพื่อสร้างป่า) แต่ฉันไม่ต้องการให้แบบจำลองทับซ้อนกัน (ซึ่งเกิดขึ้นเมื่อวางต้นไม้สองต้นใกล้กันเกินไป) นี่คือภาพสิ่งที่ฉันพูดถึง: ฉันสามารถให้รหัสเพิ่มเติมหากจำเป็น แต่นี่คือตัวอย่างสำคัญ ฉันกำลังจัดเก็บวัตถุของฉันในด้วยArrayList List<Entity> entities = new ArrayList<Entity>();ฉันจะเพิ่มรายการนั้นโดยใช้: Random random = new Random(); for (int i = 0; i < 500; i++) { entities.add(new Entity(tree, new Vector3f(random.nextFloat() * 800 - 400, 0, random.nextFloat() * -600), 0, random.nextFloat() * 360, 0, 3, 3, 3); …
11 opengl  java  objects 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.