การพัฒนาเกม

คำถาม & คำตอบสำหรับนักพัฒนาเกมมืออาชีพและเป็นอิสระ

1
อะไรคือข้อแตกต่างระหว่าง TextureRegion, TextureAtlas, Sprite และ Image ใน libgdx
ฉันค้นหาบทช่วยสอน ฉันเคยเห็นคนที่ใช้คลาสข้างต้นโหลดภาพ ตามความเข้าใจของฉันชั้นเรียนทั้งหมดสามารถอ่านได้ในสองภาพที่ไม่ใช้พลังงานโดยปกติแล้ว TextureRegion / TextureAtlas จะใช้ในการโหลดแผ่นสไปรต์ซึ่งแผ่นนั้นมีหลายภาพ ในขณะที่ Texture / Sprite / Image พวกมันถูกใช้เพื่อโหลด Sprite ชีทที่มีภาพเดียว อย่างไรก็ตามฉันไม่แน่ใจในสถานการณ์ที่ฉันควรใช้ Texture / Sprite / Image และในสถานการณ์ใดที่ฉันควรใช้ TextureRegion / TextureAtals โปรดแก้ไขให้ฉันถ้าฉันผิดเพราะฉันสับสนเล็กน้อยกับคำศัพท์ใน API หลังจากดูบทเรียนต่าง ๆ
12 libgdx 

2
การเปลี่ยนแปลง GL_TEXTURE_WRAP) _ (S / T) ทำอะไร
ฉันกำลังทำงานผ่านบทช่วยสอนสำหรับผู้เริ่มต้น OpenGL และปัจจุบันสอนวิธีใช้พื้นผิวกับสี่เหลี่ยมผืนผ้าอย่างง่าย สถานะการสอนบอกให้ฉันตั้งค่าพารามิเตอร์พื้นผิว GL_TEXTURE_WRAP_S และ GL_TEXTURE_WRAP_T เป็น GL_CLAMP_TO_EDGE แต่ฉันไม่แน่ใจว่าสิ่งนี้ทำอะไรได้จริง ฉันรู้ว่ามันเป็นเรื่องเกี่ยวกับการจัดการพื้นผิวที่มีขนาดใหญ่กว่า / เล็กกว่าพื้นที่ที่พวกเขาถูกแมปลงบน แต่ฉันไม่แน่ใจว่าพฤติกรรมนี้เกิดขึ้นจริงได้อย่างไร GL_CLAMP_TO_EDGE ทำอะไรและแตกต่างจาก GL_CLAMP, GL_CLAMP_TO_BORDER, GL_REPEAT อย่างไร ขอบคุณมากล่วงหน้าและโบนัสความช่วยเหลือหากคุณสามารถให้ภาพสำหรับคนงี่เง่าเช่นฉัน
12 opengl  textures 

1
Pathfinding พร้อมการเคลื่อนไหวแบบ 2 มิติที่ไม่ใช่แบบกริดเหนือภูมิประเทศที่มีลักษณะเหมือนกัน
ฉันกำลังมองหาทางออกที่ดีที่สุดในการหาเส้นทางในเกมของฉัน ในที่สุดแผนที่จะใช้กริด แต่เอนทิตีอยู่ในตำแหน่งที่ใช้ลอยและสามารถเคลื่อนที่ไปในทิศทางใดก็ได้ไปยังจุดใดก็ได้บนแผนที่ 'พื้นดิน' ในเกมของฉันมีค่าใช้จ่ายในการเคลื่อนไหวที่สม่ำเสมอ แต่แน่นอนว่าอาจมีอุปสรรคที่ขวางทาง อุปสรรคส่วนใหญ่จะเป็นแบบคงที่และแม้ว่าจะมีเอนทิตีเคลื่อนไหวอื่น ๆ ในเกมฉันอาจหนีไปโดยไม่พิจารณาสิ่งนั้น - มันเป็นเกมกลยุทธ์สไตล์โรงพยาบาลแบบมีมิติเท่ากันธีมดังนั้นจึงไม่มีการต่อสู้ บทความการค้นหาเส้นทางส่วนใหญ่ที่ฉันเคยเห็นครอบคลุมการเคลื่อนไหวแบบ 3 มิติหรือ 2D ตามตาราง ข้อเสนอแนะสำหรับสิ่งที่อาจครอบคลุมถึงกรณีการใช้งานของฉัน? ขอบคุณมาก.
12 2d  path-finding 

2
การสร้างถ้ำที่มีหนอน Perlin
ขณะนี้ฉันกำลังพยายามสร้าง Minecraft เช่นภูมิประเทศ voxel ด้วย 3D Simplex Noise และยังต้องการใช้ถ้ำ ฉันพบวิธีการของ Perlin Worms ในชุดข้อความนี้ซึ่งสร้างผลลัพธ์ที่ดีจริงๆ อย่างไรก็ตามฉันไม่มีเงื่อนงำเกี่ยวกับวิธีสร้างเป็นชิ้นโดยพื้นฐาน เป็นไปได้หรือมีทางเลือกอื่นใดที่สร้างเวิร์มที่คล้ายกันเช่นถ้ำบนก้อนโดยพื้นฐาน? แก้ไข: นี่คือปัญหาที่ฉันไม่ทราบวิธีการแก้ไข แก้ไข 2: นี่เป็นผลมาจากการรวมสัญญาณรบกวน Multifractal 2 มิติกับความสูงของสัญญาณรบกวนแบบ Simplex ยังคงต้องการการปรับแต่ง แต่นี่เป็นผลลัพธ์ที่ฉันต้องการ ขอบคุณ Byte56

2
วิธีการแยกมุมออยเลอร์จากเมทริกซ์การแปลง?
ฉันมีความเข้าใจง่าย ๆ เกี่ยวกับเอ็นจิ้นเกมเอนทิตี / องค์ประกอบ องค์ประกอบการแปลงมีวิธีการในการกำหนดตำแหน่งท้องถิ่นการหมุนในท้องถิ่นตำแหน่งทั่วโลกและการหมุนทั่วโลก หากการแปลงกำลังถูกกำหนดตำแหน่งใหม่ระดับโลกดังนั้นตำแหน่งในท้องถิ่นก็จะเปลี่ยนแปลงเช่นกันเพื่ออัปเดตตำแหน่งในกรณีเช่นนี้ฉันแค่ใช้การแปลงเมทริกซ์โลคอลปัจจุบันไปยังเมทริกซ์การแปลงของผู้ปกครอง ก่อนหน้านี้ฉันไม่มีปัญหาฉันสามารถรับเมทริกซ์การแปลงเฉพาะที่ได้ แต่ฉันกำลังดิ้นรนกับวิธีอัปเดตตำแหน่งในท้องถิ่นและค่าการหมุนในการแปลงสภาพ ทางออกเดียวที่ฉันมีในใจคือการแยกค่าการแปลและการหมุนจาก localMatrix ของการแปลง สำหรับการแปลมันค่อนข้างง่าย - ฉันแค่เอาค่าคอลัมน์ที่ 4 แต่การหมุนคืออะไร วิธีการแยกมุมออยเลอร์จากเมทริกซ์การแปลง? วิธีแก้ปัญหานั้นถูกต้องหรือไม่: เพื่อหาการหมุนรอบแกน Z เราสามารถหาความแตกต่างระหว่างเวกเตอร์แกน X ของ localTransform และเวกเตอร์แกน X ของ parent.localTransform และเก็บผลลัพธ์ในเดลต้าแล้ว: localRotation.z = atan2 (Delta.y, Delta .x); เช่นเดียวกับการหมุนรอบ X & Y เพียงแค่ต้องสลับแกน

4
เกมเก่า ๆ อย่าง Golden Axe หรือ Street หรือ Rage ใช้ tilemaps ไหม [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันสงสัยว่าเกมเก่า ๆ อย่าง Golden Axe (กำเนิด) หรือถนนของ Rage (แหล่งกำเนิด) ใช้ tilemaps หรือบิตแมปพื้นหลังสำหรับระดับ ฉันไม่พบทรัพยากรใด ๆ ที่อธิบายสิ่งนี้และค้นหาในเว็บฉันสามารถค้นหาภาพพื้นหลังได้ แต่ฉันไม่เคยพบ tilemap สำหรับระดับ หลักสูตรนอกหลักสูตรนี้ไม่ตอบคำถาม แต่ดูเหมือนว่าพวกเขาใช้บิตแมปพื้นหลังสำหรับระดับทั้งหมด แต่ฉันไม่แน่ใจว่ามันเป็นประโยชน์หรือไม่สำหรับคอนโซลเก่าเหล่านั้นในการจัดเก็บภาพ "ใหญ่" ดังกล่าวและแสดงภาพเหล่านั้น ไม่มีใครรู้บ้างเกี่ยวกับการเขียนโปรแกรมบนระบบเก่าเหล่านั้นและรู้ว่าระดับ "มุมมอง" เหล่านั้นถูกสร้างขึ้นได้อย่างไร?
12 tilemap 

3
การจัดการอินพุตในการออกแบบตามส่วนประกอบ
ฉันรู้ว่าคำถามนี้ถูกถามหลายครั้ง แต่ฉันยังไม่แน่ใจว่าจะใช้การจัดการอินพุตในเอนจินที่ใช้ส่วนประกอบได้อย่างไร การออกแบบที่ใช้ส่วนประกอบที่ฉันใช้นั้นเป็นไปตามชุดบล็อกของT = MachineและArtemisซึ่ง Entities เป็นแค่รหัส มีสามแนวคิดหลักที่ฉันมีในการใช้การจัดการอินพุต: องค์ประกอบอินพุตจะจัดกิจกรรมที่สนใจ ระบบอินพุตจะแปลเหตุการณ์ของคีย์และเมาส์เป็นเหตุการณ์ของเกมและวนลูปผ่านเอนทิตีที่มีองค์ประกอบอินพุตและหากพวกเขาสนใจในเหตุการณ์ระบบจะดำเนินการที่เหมาะสม การกระทำนี้จะถูกเข้ารหัสอย่างหนักในระบบอินพุต ไม่มีองค์ประกอบอินพุต คุณจะลงทะเบียนเอนทิตีที่มีเหตุการณ์เฉพาะไปยังระบบอินพุต จากนั้นระบบอินพุตจะส่งข้อความ (พร้อมรหัสเอนทิตีและประเภทเหตุการณ์) ไปยังระบบอื่นเพื่อให้สามารถดำเนินการที่เหมาะสมได้ หรือในกรณีแรกการกระทำจะถูกกำหนดค่าตายตัวในระบบอินพุต คล้ายกับวิธีแรก แต่แทนที่จะเขียนโค้ดการดำเนินการกับระบบอินพุตอย่างหนักส่วนประกอบจะมีแผนที่ของเหตุการณ์ไปยังฟังก์ชั่น (เช่นstd::map<std::function>) ซึ่งจะถูกเรียกโดยระบบอินพุต สิ่งนี้มีผลกระทบเพิ่มเติมจากความสามารถในการจับคู่เหตุการณ์เดียวกันกับการกระทำที่แตกต่างกัน คุณจะแนะนำวิธีการใด ๆ ข้างต้นหรือคุณมีข้อเสนอแนะใด ๆ ที่จะช่วยให้ฉันใช้ระบบจัดการอินพุตที่ยืดหยุ่นได้หรือไม่? นอกจากนี้ฉันยังไม่คุ้นเคยกับหลายเธรด แต่ข้อเสนอแนะใด ๆ ที่จะทำให้การใช้เธรดเป็นมิตรก็ยินดีด้วย หมายเหตุ: ข้อกำหนดเพิ่มเติมหนึ่งข้อที่ฉันต้องการให้มีการนำไปใช้เพื่อเติมเต็มคือฉันสามารถส่งผ่านอินพุตเดียวกันไปยังเอนทิตีหลาย ๆ อย่างเช่นการย้ายเอนทิตีกล้องและผู้เล่นในเวลาเดียวกัน

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

2
Tweaking AStar เพื่อค้นหาตำแหน่งที่ใกล้ที่สุดไปยังปลายทางที่ไม่สามารถเข้าถึงได้
ฉันได้ติดตั้ง AStar ใน Java และใช้งานได้ในพื้นที่ที่มีสิ่งกีดขวางที่สามารถเข้าถึงปลายทางที่เลือกได้ อย่างไรก็ตามเมื่อปลายทางไม่สามารถเข้าถึงได้เส้นทาง "ที่คำนวณ" จะไม่สามารถไปยังตำแหน่งที่ใกล้ที่สุด (ไปยังตำแหน่งที่ไม่สามารถเข้าถึงได้) แต่จะเป็นเส้นทางแบบสุ่มแทน มีวิธีที่เป็นไปได้ในการปรับแต่ง AStar เพื่อค้นหาเส้นทางไปยังตำแหน่งที่ใกล้ที่สุดไปยังปลายทางที่ไม่สามารถเข้าถึงได้หรือไม่?

4
AGS ล้าสมัยไปแล้วสำหรับการผจญภัยของ Point & Click? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันทำงานเกี่ยวกับเกม Point and Click Adventure ที่เขียนโค้ดไว้ในเอ็นจิน AGS และเมื่อเร็ว ๆ นี้คำถามที่ว่า ได้เกิดขึ้น ฉันจะยอมรับว่า AGS ค่อนข้างเก่าและเป็นเกมแนว P&C ที่มีสไตล์ แต่ฉันไม่พบสิ่งใดที่เหมือนกับเกมที่เชี่ยวชาญในรูปแบบเฉพาะของเกมนี้ ดังนั้นมันล้าสมัยและถ้าเป็นเช่นนั้นจะมีทางเลือกที่ดีกว่า?

2
เงาในการเรนเดอร์
ฉันได้อ่านเนื้อหาบางส่วนเกี่ยวกับการเรนเดอร์ที่เลื่อนออกไปและฉันคิดว่าฉันได้รับส่วนสำคัญของมัน แต่สิ่งที่ฉันไม่เข้าใจคือวิธีการทำให้เงาสำเร็จ G-buffer เท่าที่ฉันทราบไม่เกี่ยวข้องกับการสร้าง shadowmap สำหรับแต่ละแสงดังนั้นฉันสับสนว่าการส่งผ่านแสงนั้นรับรู้ได้หรือไม่ว่าแต่ละพิกเซลนั้นถูกบดบัง ท้ายที่สุดพิกเซลที่กำหนดซึ่งมองเห็นได้จากมุมมองของกล้องอาจไม่สามารถมองเห็นได้จากมุมมองของแสงที่กำหนด - ซึ่งเรขาคณิตที่ปรากฎอาจไม่สามารถมองเห็นได้จากมุมมองของกล้องดังนั้นจึงไม่มีอะไรเขียนลงใน G-buffer . หากคุณเริ่มต้นการเรนเดอร์ shadowmaps มันก็เหมือนกับการเรนเดอร์ไปข้างหน้าซึ่งคุณจะทำการเรนเดอร์เรขาคณิตทั้งหมดในที่เกิดเหตุเพื่อให้แสงในการเรนเดอร์ shadowmaps ดังนั้นการเรนเดอร์ที่ได้รับจึงทำได้เงาที่เท่ากันกับการเรนเดอร์

1
ฉันจะรวมกระสุนฟิสิกส์เข้ากับเกมของฉันได้อย่างไร
ฉันดาวน์โหลดไฟล์รีลีสที่นี่แต่ฉันไม่แน่ใจว่าจะเริ่มจากตรงไหน ในเกมของฉันฉันมีรูปสี่เหลี่ยมผืนผ้าจำนวนหนึ่งและทรงกลมฉันต้องการให้สิ่งเหล่านี้ชนกัน (พวกเขาทั้งหมดมีตาข่ายและปริมาณการเชื่อมโยงที่เกี่ยวข้อง) แก้ไข - ฉันเพิ่งรู้ว่าลูกบาศก์จริง ๆ แล้วมี AABB เกี่ยวข้องกับพวกเขา ฉันเดาว่าฉันจะต้องเปลี่ยนอย่างน้อย ฉันต้องทำตามขั้นตอนอะไรบ้าง?

3
มีโครงการ CCG โอเพนซอร์สหรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมีปัญหาในการค้นหาโปรเจคต์เกมการ์ดสะสมแบบโอเพนซอร์สที่พัฒนามาอย่างดี ฉันต้องการค้นหาโครงการเพื่อเรียนรู้และพอร์ตไปยังแพลตฟอร์มมือถือ

5
เหตุใดจึงต้องใช้ไฟล์รายการเนื้อหา
บางครั้งคุณจะเห็นคนแนะนำว่าแทนที่จะใช้กราฟิก / ไฟล์เสียง / ฯลฯ แบบนี้... // Game code Image myImage = new Image("path/to/image.png"); ... คุณควรใช้ไฟล์Manifestเป็นระดับทางอ้อมแทน: // Manifest file MY_IMAGE: path/to/image.png // Game code Manifest myManifest = new Manifest("path/to/manifest"); Image myImage = myManifest.getImage("MY_IMAGE"); ฉันจะมีเหตุผลอะไรในการทำแนวทางนี้ หากฉันไม่ได้ใช้ภาษาที่คอมไพล์แล้วจะมีเหตุผลที่จะทำเช่นนี้หรือไม่?

1
การสร้างระบบรายการที่แข็งแกร่ง
จุดประสงค์ของฉันคือการสร้างระบบไอเท็มแบบโมดูลาร์ / แบบทั่วไปที่สามารถจัดการสิ่งต่าง ๆ เช่น: รายการที่อัปเกรดได้ (+6 Katana) ตัวดัดแปลงทางสถิติ (ความชำนาญ +15) ตัวดัดแปลงไอเท็ม (โอกาส X% ที่จะทำความเสียหาย Y, โอกาสที่จะถูกแช่แข็ง) รายการที่ชาร์จใหม่ได้ (พนักงาน Magic กับประเพณี 30) Set Items (ติดตั้ง X 4 ชุดเพื่อเปิดใช้งานคุณสมบัติ Y) หายาก (ทั่วไป, ไม่ซ้ำใคร, ตำนาน) ทำให้ไม่ลงรอยกัน (แบ่งเป็นวัสดุหัตถกรรมบางอย่าง) Craftable (สามารถสร้างขึ้นด้วยวัสดุบางอย่าง) ใช้งานได้ (5 นาที% พลังโจมตี X, รักษา +15 hp) * ฉันสามารถแก้ไขคุณสมบัติที่เป็นตัวหนาในการตั้งค่าต่อไปนี้ ตอนนี้ฉันพยายามเพิ่มตัวเลือกมากมายเพื่อสะท้อนสิ่งที่ฉันมีในใจ ฉันไม่ได้วางแผนที่จะเพิ่มคุณสมบัติเหล่านี้ทั้งหมดที่จำเป็น แต่ฉันต้องการที่จะสามารถใช้งานได้ตามที่เห็นสมควร …

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