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

C ++ เป็นภาษาเขียนโปรแกรมแบบสแตติกแบบหลายกระบวนทัศน์รวบรวมภาษาโปรแกรมอเนกประสงค์

5
ฉันจะปรับเอ็นจิ้นการชนได้อย่างมีประสิทธิภาพซึ่งคำสั่งนั้นสำคัญและการชนกันแบบมีเงื่อนไขขึ้นอยู่กับกลุ่มวัตถุ?
หากนี่เป็นครั้งแรกของคุณสำหรับคำถามนี้ฉันขอแนะนำให้อ่านส่วนอัปเดตด้านล่างก่อนจากนั้นส่วนนี้ นี่คือการสังเคราะห์ปัญหาแม้ว่า: โดยพื้นฐานแล้วฉันมีระบบตรวจจับการชนและการแก้ปัญหาด้วยระบบแบ่งพาร์ติชันแบบกริดซึ่งการเรียงลำดับการชนและการชนมีความสำคัญ ร่างกายหนึ่งคนในแต่ละครั้งจะต้องเคลื่อนที่จากนั้นตรวจจับการชนแล้วแก้ไขการชน ถ้าฉันย้ายร่างกายทั้งหมดในครั้งเดียวจากนั้นสร้างคู่การชนกันที่เป็นไปได้มันจะเร็วขึ้นอย่างเห็นได้ชัด แต่ตัวแบ่งความละเอียดเนื่องจากการเรียงลำดับของการชนกันไม่ได้รับการเคารพ ถ้าฉันขยับร่างกายหนึ่งครั้งฉันก็ต้องบังคับให้ร่างกายตรวจสอบการชนและมันจะกลายเป็นปัญหา ^ 2 ใส่กลุ่มในการผสมและคุณสามารถจินตนาการได้ว่าทำไมมันถึงช้ามากอย่างรวดเร็วด้วยร่างกายจำนวนมาก อัปเดต:ฉันทำงานอย่างหนักกับสิ่งนี้ แต่ไม่สามารถจัดการเพื่อเพิ่มประสิทธิภาพอะไรได้เลย ฉันประสบความสำเร็จในการนำ "ภาพวาด" ที่อธิบายโดย Will และเปลี่ยนกลุ่มเป็นบิตเซ็ต แต่มันเป็นการเร่งความเร็วที่น้อยมาก ฉันค้นพบปัญหาใหญ่เช่นกัน: เครื่องยนต์ของฉันขึ้นอยู่กับการชนกันของข้อมูล ฉันพยายามที่มีการใช้งานของคนรุ่นชนคู่ที่ไม่ซ้ำกันซึ่งแน่นอนเพิ่มความเร็วในการทุกอย่างด้วยเป็นจำนวนมาก แต่ยากจนชนการสั่งซื้อของ ให้ฉันอธิบาย: ในการออกแบบดั้งเดิมของฉัน (ไม่สร้างคู่) สิ่งนี้เกิดขึ้น: เคลื่อนไหวร่างกายเดียว หลังจากที่มันเคลื่อนไหวแล้วมันจะรีเฟรชเซลล์และทำให้ร่างกายได้รับการชนกัน หากมันทับร่างกายที่ต้องแก้ไขให้แก้ไขการชนกัน นี่หมายความว่าหากร่างกายเคลื่อนไหวและชนกับกำแพง (หรือร่างกายอื่น ๆ ) เฉพาะร่างกายที่เคลื่อนไหวเท่านั้นที่จะแก้ไขการชนและร่างกายอื่น ๆ จะไม่ได้รับผลกระทบ นี่คือความปรารถนาที่พฤติกรรมของฉัน ผมเข้าใจว่ามันไม่ธรรมดาสำหรับเครื่องยนต์ฟิสิกส์ แต่มันก็มีประโยชน์มากสำหรับสไตล์ย้อนยุคเกม ในการออกแบบกริดปกติ (สร้างคู่ที่ไม่ซ้ำกัน) สิ่งนี้เกิดขึ้น: ทุกสิ่งเคลื่อนไหว หลังจากย้ายวัตถุทั้งหมดแล้วให้รีเฟรชเซลล์ทั้งหมด สร้างคู่การชนกันที่ไม่ซ้ำกัน สำหรับแต่ละคู่จัดการการตรวจจับการชนและความละเอียด ในกรณีนี้การเคลื่อนที่พร้อมกันอาจส่งผลให้มีสองวัตถุซ้อนทับกันและพวกมันจะแก้ไขในเวลาเดียวกัน - สิ่งนี้ทำให้ร่างกาย "ผลักกันอีกรอบ" …

5
หลีกเลี่ยงถ้างบใน DirectX 10 shaders หรือไม่
ฉันเคยได้ยินว่าถ้างบควรหลีกเลี่ยงใน shaders เพราะทั้งสองส่วนของงบจะดำเนินการและกว่าจะผิดพลาดจะลดลง (ซึ่งเป็นอันตรายต่อประสิทธิภาพการทำงาน) ยังคงเป็นปัญหาใน DirectX 10 หรือไม่ มีคนบอกฉันว่ามีเพียงสาขาที่ถูกต้องเท่านั้นที่จะถูกประหาร สำหรับภาพประกอบฉันมีรหัส: float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3; if(x>0.5){ x = 10 * y1 + b1; }else{ x = 10 * y2 + b2; } มีวิธีอื่นที่จะทำให้เร็วขึ้นหรือไม่? ถ้าเป็นเช่นนั้นได้อย่างไร กิ่งทั้งสองมีลักษณะคล้ายกันความแตกต่างเพียงอย่างเดียวคือค่าของ "ค่าคงที่" ( y1, y2, …

2
เหตุใด C / C ++ จึงเป็นที่ต้องการสำหรับนักพัฒนาเกม
บางคนบอกว่ามันให้การควบคุมแก่นักพัฒนามากขึ้น แต่มันคืออะไรที่แม่นยำที่สามารถควบคุมผ่าน C ++ ซึ่งไม่สามารถควบคุมได้โดยใช้ตัวอย่างเช่น Java?
14 c++  java 

5
ฉันจะจัดการกับสไปรต์ชีตที่มีขนาดสไปรต์ที่ไม่ใช่แบบฟอร์มได้อย่างไร
สำหรับชุดสไปรต์ที่มีขนาดสไปรต์ที่ไม่สม่ำเสมอฉันจะหารูปสี่เหลี่ยมมุมฉากสำหรับสไปรต์แต่ละตัวได้อย่างไร (เช่นกล่องสีน้ำเงินในภาพต่อไปนี้ / ฉันวาดตัวอย่างเพียงไม่กี่ชิ้น)? สิ่งที่ฉันต้องการตรวจสอบคือ: offset_x, offset_y, width, height จนถึงตอนนี้ฉันได้ใช้ Spriteheets ที่ Sprite ทั้งหมดมีขนาดเท่ากัน ในกรณีนั้นเราต้องการเพียงระบุ x และ y-offset เพื่อรับ sprite เฉพาะ อย่างไรก็ตามสำหรับสไปรต์ของชุดที่มีขนาดไม่เท่ากันก็ไม่สามารถใช้งานได้ แก้ไข: หลังจากอ่านความคิดเห็นและคำตอบแล้วฉันได้ปรับปรุงคำถามของฉันอีกครั้งเพื่อให้มีความครอบคลุมมากขึ้น กระบวนการจริงของการใช้สไปรต์แผ่นชีทในเกม ก่อนหน้านี้คำถามมีประเด็นที่ว่าทำไมผู้คนถึงผลิตสไปรต์แบบแผ่นขนาดไม่เท่ากันและฉันจะจัดการกับเรื่องนั้นได้อย่างไร

6
ห้องสมุด SIMD C ++ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ในอดีตฉันเคยใช้ Visual Studio กับห้องสมุดคณิตศาสตร์ DirectX XNA ตอนนี้ฉันใช้คอมไพเลอร์ GNU ใครสามารถให้คำแนะนำห้องสมุดคณิตศาสตร์ SIMD ด้วยเอกสารที่ดี?
14 c++  mathematics  simd 

3
อัลกอริธึมการกระจัดกลาง
คำถามนี้ส่วนใหญ่มาจากความสิ้นหวังที่แท้จริงหลังจากใช้เวลาหลายชั่วโมงพยายามที่จะเข้าใจปัญหา หากคุณละสายตาไปที่รูปภาพด้านบนคุณจะเห็นว่าอัลกอริทึมการแทนที่ตำแหน่งกลางของฉันทำงานได้สำเร็จ ในการผลิตรูปแบบเสียงค่อนข้างสอดคล้องกัน อย่างไรก็ตามมันทิ้งไว้ข้างหลังจุดประสีดำบนภาพและฉันก็ไม่รู้ว่าทำไม ฉันคาดการณ์ได้ว่านี่เป็นปัญหาในวิชาคณิตศาสตร์ แต่ฉันมองไม่เห็น และนี่ไม่ได้ชี้ให้เห็นในแหล่งข้อมูลออนไลน์ใด ๆ ว่าเป็นปัญหาที่เป็นไปได้; ดังนั้นความช่วยเหลือใด ๆ จะได้รับการชื่นชมว่าจะตามล่าข้อผิดพลาดนี้ unsigned char** mdp(unsigned char** base, unsigned base_n, unsigned char r) { size_t n = (2 * base_n) - 1; unsigned char** map = new unsigned char*[n]; for (unsigned i = 0; i < n; ++i) map[i] = new …

5
ห้องสมุดคณิตศาสตร์ที่สมบูรณ์สำหรับใช้ในเกม OpenGL ES 2.0 หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา คุณทราบหรือไม่ว่าไลบรารีคณิตศาสตร์ข้ามแพลตฟอร์มที่สมบูรณ์ (หรือเกือบจะสมบูรณ์) สำหรับใช้ในเกม OpenGL ES 2.0? ห้องสมุดควรมี: คลาส Matrix2x2, เมทริกซ์ 3x3, Matrix4x4 quaternions คลาส Vector2, Vector3, Vector4 คลาสมุมออยเลอร์ การดำเนินการในชั้นเรียนที่กล่าวถึงการแปลง ฯลฯ การดำเนินการทางคณิตศาสตร์ที่ใช้เป็นมาตรฐานในกราฟิก 3 มิติ (ผลิตภัณฑ์ Dot, Cross Product, SLERP, ฯลฯ ... ) มี API คณิตศาสตร์ดังกล่าวสามารถใช้ได้ทั้งแบบสแตนด์อโลนหรือเป็นส่วนหนึ่งของแพคเกจใด ๆ ? ภาษาการเขียนโปรแกรม: Visual C …

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

6
ฉันทำร้ายตัวเองโดยไม่รู้จัก C ++ ในการออกแบบเกมหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ตอนนี้ฉันรู้สึกว่าฉันแข็งแกร่งทั้ง Java และ C # (ไม่มากกระโดดจากที่หนึ่งไปยังอีกจริง ๆ ) ในขณะที่ฉันไม่คาดหวังว่านักออกแบบเกม / โปรแกรมเมอร์จะเป็นเป้าหมายที่บรรลุได้ แต่เนิ่นๆในอาชีพของฉันนี่คือเป้าหมายที่ฉันจะไปถึงในภายหลังในอาชีพการงานของฉัน ด้วยความคิดนี้ฉันรู้สึกว่าการเพิกเฉย C ++ และเครื่องมือออกแบบเกมที่เกี่ยวข้องกับมันในที่สุดจะทำให้ฉันเจ็บหรือทำให้ฉันช้าลงในความสามารถในการบรรลุเป้าหมายของฉัน เป็นกรณีนี้หรือไม่? หรือฉันจะฝึกฝนทักษะ C # ของฉันต่อไปโดยใช้ XNA และ WPF สำหรับโครงการส่วนบุคคลที่สามารถยกระดับฉันไปสู่อาชีพดังกล่าวได้หรือไม่?
14 xna  c++  c#  java  wpf 

4
หนังสือปัจจุบันของ DirectX (ที่เน้น 3D) คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว สำหรับ OpenGL รุ่นที่ 5 ของ OpenGL SuperBible เพิ่งเปิดตัวเมื่อไม่กี่เดือนที่ผ่านมาและถือเป็นหนังสือที่ยอดเยี่ยมไม่เพียง แต่จะเรียนรู้ OpenGL 3 (ตอนที่ 1 ของหนังสือ) แต่ยังรวมถึงหัวข้อ OpenGL ขั้นสูงในส่วนต่างๆ 2 และ 3 สำหรับ DirectX เนื้อหาปัจจุบันที่เราควรอ่านเพื่อเรียนรู้คืออะไร? ยินดีต้อนรับหนังสือ & เว็บไซต์พร้อมบทช่วยสอน มีหนังสือทันสมัยเล่มใดบ้างที่ผ่านเวอร์ชั่นปัจจุบันของ DirectX ที่มีไว้สำหรับผู้ชมที่เริ่มต้นด้วยความเข้าใจที่ดีของ C ++ แต่ไม่มีประสบการณ์สำหรับ DirectX เลยหรือไม่? ดูเหมือนว่าสิ่งนี้จะได้รับการยกย่องอย่างสูง: รู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรมเกม 3D ด้วย DirectX 10
14 c++  directx 

6
ภาษาสคริปต์ใดที่คุณจะแนะนำสำหรับโครงการเกม C ++ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา โดยการเขียนสคริปต์ที่นี่ฉันหมายถึงไม่เพียง แต่ใส่ข้อมูลการกำหนดค่าในสคริปต์ แต่ส่วนสคริปต์ของโครงการเช่นวิธีการเรียนทดสอบวงเกมเฉพาะ ฯลฯ ไม่เพียง แต่จะเร่งพัฒนา แต่ยังอนุญาตให้ผู้เล่นเห็นบางส่วนของสิ่งเหล่านี้ สคริปต์เพื่อปรับแต่งบางด้านของเกม ภาษาบางอย่างเช่น Lua มีบางสิ่งห่อหุ้มเช่น luabind แต่เมื่อก่อนฉันเคยใช้มันมีปัญหาเพราะมันไม่รองรับการกำหนดวิธีการใหม่ในบริบทของการสืบทอด คุณมีคำแนะนำเกี่ยวกับภาษา / เครื่องห่อหุ้มที่จะใช้หรือไม่ใช้?

2
เคล็ดลับสำหรับการใช้กลไกการค้นหา MMO?
คุณควรแนะนำเครื่องมือรูปแบบหรือแนวทางปฏิบัติที่ดีที่สุดในการปรับใช้กลไกการค้นหาที่ระบุด้านล่างนี้ ฉันกำลังพูดถึงสถาปัตยกรรมซอฟต์แวร์ (ควรเป็นแบบทั่วไป) และตัวเลือกสำหรับการเดินสายวัตถุการสมัครสมาชิกกิจกรรมและการแสดงเงื่อนไข ยินดีต้อนรับการกล่าวถึงเครื่องมือ / ไลบรารีที่คุณใช้เสร็จแล้วยินดีต้อนรับ แก้ไข:หากคุณใช้งานสคริปต์คุณแนะนำการตั้งค่าแบบใด ที่ต้องการ: ง่าย 2D mmo (rpg) ข้อมูลเกมทั้งหมดรวมถึงเควสจะถูกเก็บไว้ในฐานข้อมูลเชิงสัมพันธ์ เหตุการณ์ใด ๆ ในเกมสามารถกระตุ้นการแสวงหาใหม่สำหรับผู้เล่นหรือความก้าวหน้าของภารกิจที่มีอยู่ การสืบเสาะสามารถมีเงื่อนไขตามจำนวนที่ต้องการก่อนที่ผู้เล่นจะสามารถทำภารกิจได้ เควสสามารถประกอบด้วยเควสย่อย / ขั้นตอนจำนวนเท่าใดก็ได้พร้อมเงื่อนไขโดยพลการ ภารกิจจะมีตั้งแต่ง่าย ๆ : คุยกับ A - kill 5 B - คุยกับ A - เพิ่มสุขภาพอย่างถาวร ค่อนข้างเกี่ยวข้อง: ใช้ไอเท็มในพื้นที่ X - ไปที่พื้นที่ Y - บอทจะวางไข่ - ฆ่าบอทโดยไม่ได้รับความเสียหายมากกว่า 10% - บอทดรอปไอเทม - รับไอเทม …

2
ฉันจะจำลองเอฟเฟกต์ doppler ในเกมได้อย่างไร
ฉันพยายามจำลองลักษณะของดอปเลอร์ในเกม (เกมแข่งรถ) ฉันไม่ได้ใช้ไลบรารี่เสียงเฉพาะที่จำลองเอฟเฟกต์ฉันมีฟังก์ชั่นโทรกลับเฉพาะที่ฉันผสมข้อมูล ฉันหาวิธีเปลี่ยนความถี่ของตัวอย่างในฟังก์ชั่นมิกเซอร์แล้ว สิ่งที่ฉันไม่รู้ก็คือความถี่ควรเปลี่ยนไปตามตำแหน่งของผู้เล่นและตัวส่งและความเร็ว นี่คือสิ่งที่ฉันมีในเกม: //player vec3 p.pos; vec3 p.vel; //emitter vec3 e.pos; vec3 e.vel; 1) ตามวิกิพีเดียความสัมพันธ์ระหว่างความถี่ที่ปล่อยออกมาและความถี่ที่สังเกตได้นั้นได้รับจาก: float f = (c + vr) / (c + vs) * fo โดยที่cคือค่าคงที่ความเร็วในสื่อกลาง (โดยทั่วไปจะเป็นจำนวนมาก) vsและvrเป็นความเร็วของแหล่งกำเนิดและตัวรับที่สัมพันธ์กับสื่อ ดังนั้นฉันเดา: float vr = p.vel.length; //player speed float vs = e.vel.length; //emitter speed แต่ฉันคิดว่ามันผิดมันจะไม่ก่อให้เกิดการเปลี่ยนแปลงใด ๆ ในความถี่เช่น: ถ้าvr …

5
ฉันจะรันหลายแพลตฟอร์มโดยใช้เอ็นจิ้นที่กำหนดเองได้อย่างไร
เอ็นจิ้นเกมเช่น Unity และ Unreal สามารถทำงานบนแพลตฟอร์มที่หลากหลายได้ ฉันสงสัยว่าพวกเขาทำอย่างไร ฉันใช้ C ++ และ OpenGL มาระยะหนึ่งแล้วและสิ่งที่ฉันกำลังมองหาคือทรัพยากรที่จะรวมบางสิ่งที่จะทำให้ฉันสามารถทำงานบนแพลตฟอร์มที่แตกต่างกันโดยไม่ต้องเขียนใหม่ อย่าง LibGDX ที่คุณเขียนโค้ดโดยใช้ API พื้นฐานจากนั้น API จะแปลงเป็น HTML, Android, iOS และอื่น ๆ ฉันรู้ว่าฉันสามารถใช้เครื่องมืออื่นแทนการเขียนของฉันเอง แต่ฉันสนใจในประสบการณ์การเรียนรู้

3
ระดับ“ ญาติ” ที่ใหญ่ที่สุดที่ฉันสามารถใช้ในการลอยคืออะไร
เช่นเดียวกับที่แสดงให้เห็นด้วยเกมอย่าง dungeon siege และ KSP ระดับที่มากพอที่จะเริ่มมีข้อบกพร่องเนื่องจากวิธีการทำงานของ floating point คุณไม่สามารถเพิ่ม 1e-20 ถึง 1e20 โดยไม่สูญเสียความแม่นยำ หากฉันเลือกที่จะ จำกัด ขนาดของระดับฉันจะคำนวณความเร็วต่ำสุดที่วัตถุของฉันสามารถเคลื่อนที่ได้จนกว่าจะเริ่มขาด ๆ หาย ๆ ได้อย่างไร

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