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

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

22
STL สำหรับเกมใช่หรือไม่? [ปิด]
ภาษาโปรแกรมทุกภาษามีไลบรารีมาตรฐานของคอนเทนเนอร์อัลกอริทึมและสิ่งอื่น ๆ ด้วยภาษาเช่น C #, Java, และ Python มันแทบจะนึกไม่ถึงว่าจะใช้ภาษาโดยไม่ใช้ lib มาตรฐาน ถึงกระนั้นในเกม C ++ หลาย ๆ เกมที่เราได้ทำไปเราก็ไม่ได้ใช้ STL เลยใช้มันเพียงเล็กน้อยหรือใช้งานของเราเอง เป็นการยากที่จะบอกว่านั่นเป็นการตัดสินใจที่ดีสำหรับเกมของเราหรืออย่างใดอย่างหนึ่งที่ทำออกมาจากความไม่รู้ของ STL ดังนั้น ... STL เหมาะสมหรือไม่
144 c++ 

9
รูปแบบการออกแบบการเขียนโปรแกรมอะไรบ้างที่มีประโยชน์ในการพัฒนาเกม [ปิด]
ฉันมีหนังสือสองสามเล่มเกี่ยวกับรูปแบบการออกแบบและได้อ่านบทความบางอย่าง แต่ไม่สามารถเข้าใจได้อย่างชัดเจนว่ารูปแบบการออกแบบโปรแกรมใดที่จะเป็นประโยชน์ในการพัฒนาเกม ตัวอย่างเช่นฉันมีหนังสือชื่อว่า ActionScript 3 ที่มีรูปแบบการออกแบบที่มีรายละเอียดรูปแบบการออกแบบหลายอย่างเช่นตัวควบคุมมุมมองโมเดล, ซิงเกิล, โรงงาน, คำสั่ง ฯลฯ ในฐานะที่เป็นคนใหม่ในเรื่องนี้ฉันไม่สามารถคิดได้ว่าสิ่งใดจะเป็นประโยชน์หรืออันที่จริงหากสิ่งเหล่านี้เป็นรูปแบบการออกแบบที่ฉันควรจะเรียนรู้และพยายามใช้ บางทีอาจมีรูปแบบการออกแบบเฉพาะโปรแกรมเกมอื่น ๆ ที่ฉันไม่รู้ด้วยซ้ำ หากคุณมีประสบการณ์ในการใช้รูปแบบการออกแบบบางอย่างในการพัฒนาเกมฉันชอบที่จะได้ยิน การให้เหตุผลว่าเหตุใดจึงใช้ตัวอย่างรหัสหรือแหล่งข้อมูลออนไลน์จะมีประโยชน์มากเช่นกันหากคุณมี ตอนนี้ฉันสนใจการใช้ ActionScript 3 และ C ++ มากที่สุด แต่อาจได้รับประโยชน์จากประสบการณ์และตัวอย่างจากภาษาใด ๆ ขอบคุณ!

9
เหตุใดนักพัฒนาเกม C ++ จึงไม่ใช้ห้องสมุดเพิ่ม [ปิด]
ดังนั้นหากคุณใช้เวลาในการดู / ตอบคำถามมากกว่าในStack Overflowภายใต้แท็ก C ++ คุณจะสังเกตเห็นได้อย่างรวดเร็วว่าทุกคนใช้ห้องสมุดเพิ่ม บางคนอาจบอกว่าถ้าคุณไม่ได้ใช้งานคุณไม่ได้เขียน C ++ ของจริง (ฉันไม่เห็นด้วย แต่นั่นไม่ใช่ประเด็น) แต่มีอุตสาหกรรมเกมซึ่งเป็นที่รู้จักกันดีในการใช้ C ++ และไม่ใช้การเพิ่ม ฉันอดไม่ได้ที่จะสงสัยว่าทำไม ฉันไม่สนใจที่จะใช้การเพิ่มพลังเพราะฉันเขียนเกม (ตอนนี้) เป็นงานอดิเรกและส่วนหนึ่งของงานอดิเรกนั้นก็คือการนำสิ่งที่ฉันต้องการเมื่อฉันสามารถและใช้ห้องสมุดที่ไม่ได้วางจำหน่ายตอนที่ฉันทำไม่ได้ แต่นั่นเป็นเพียงฉัน ทำไมโดยทั่วไปนักพัฒนาเกมไม่ใช้ไลบรารีเพิ่มหรือไม่ มันเกี่ยวกับประสิทธิภาพหรือหน่วยความจำหรือไม่? รูปแบบ? อื่น ๆ อีก? ฉันกำลังจะถามคำถามนี้เกี่ยวกับการล้นสแต็ก แต่ฉันคิดว่าคำถามจะถามดีกว่าที่นี่ แก้ไข: ฉันรู้ว่าฉันไม่สามารถพูดกับโปรแกรมเมอร์เกมทั้งหมดและฉันไม่ได้เห็นโปรเจคเกมทั้งหมดดังนั้นฉันจึงไม่สามารถพูดได้ว่าผู้พัฒนาเกมไม่เคยใช้บูสต์ นี่เป็นเพียงประสบการณ์ของฉัน อนุญาตให้ฉันแก้ไขคำถามของฉันถามด้วยถ้าคุณใช้การเพิ่มทำไมคุณถึงเลือกที่จะใช้
81 c++ 

17
เคล็ดลับการเพิ่มประสิทธิภาพระดับต่ำ C ++ [ปิด]
สมมติว่าคุณมีอัลกอริธึมที่ดีที่สุดแล้วโซลูชันระดับต่ำสุดที่คุณสามารถเสนอได้สำหรับการบีบอัตราเฟรม Sweet Sweet สองสามหยดสุดท้ายของรหัส C ++ คืออะไร มันไปโดยไม่บอกว่าเคล็ดลับเหล่านี้ใช้เฉพาะกับส่วนของรหัสที่สำคัญซึ่งคุณได้เน้นไว้ใน profiler ของคุณแล้ว แต่ควรเป็นการปรับปรุงที่ไม่มีโครงสร้างในระดับต่ำ ฉันได้ยกตัวอย่าง
79 c++  optimization 

9
ง่ายต่อการใช้เอนจิ้น 3D ข้ามแพลตฟอร์มสำหรับการพัฒนาเกม C ++? [ปิด]
ฉันต้องการลองเขียนเกม 3 มิติ อย่างไรก็ตามฉันไม่ต้องการที่จะเริ่มต้นที่ระดับต่ำของการวาดรูปสามเหลี่ยมแต่ละตัวและการเขียนวัตถุ 3 มิติของตัวเองและอื่น ๆ ฉันได้ยินสิ่งต่าง ๆ เช่นIrrlicht , Crystal Space 3DและCafuแต่ฉันไม่มีประสบการณ์ใด ๆ เลย ฉันกำลังมองหาคำแนะนำจากผู้ที่มีประสบการณ์กับเครื่องมือเหล่านี้หรือเครื่องมืออื่น ๆ ที่เขียนได้ดีและเริ่มต้นใช้งานได้ง่ายโดยไม่ต้องเรียนรู้ทฤษฎีคณิตศาสตร์ 3 มิติจำนวนมากและวิธีการทำงานของ GPU ภายใน
73 c++  3d  cross-platform 

10
UDP ยังดีกว่า TCP สำหรับเกมเรียลไทม์ที่มีข้อมูลมากหรือไม่?
ฉันรู้ว่าโดยปกติแล้ว UDP จะแนะนำสำหรับเกมแบบผู้เล่นหลายคนแบบเรียลไทม์ที่มีการใช้ข้อมูลสูง บทความส่วนใหญ่มีอายุปีเป็น serval และเนื่องจาก ~ 80% ของข้อมูลทั้งหมดที่ส่งบนอินเทอร์เน็ตคือ TCP จึงต้องมีการปรับแต่งให้เหมาะสมสำหรับ TCP นี่ทำให้ฉันสงสัย: UDP ยังเหนือกว่าในแง่ของความเร็วและความล่าช้าหรือไม่? การเพิ่มประสิทธิภาพ TCP ล่าสุดทำให้ TCP ทำงานได้ดีกว่า UDP หรือไม่
71 c++  networking  udp  realtime 

9
คุณจะวางรูปภาพทั้งหมดจากเกมหนึ่งไฟล์ได้อย่างไร?
ฉันเพิ่งเล่นเกม RPG พื้นฐานที่เขียนด้วย C ++ SFML แล้วฉันได้พยายามอย่างมากในเกมและฉันต้องการเผยแพร่เกมนี้ แต่ฉันพบปัญหาเล็กน้อย ปัญหาคือฉันมีภาพและไฟล์แผนที่มากกว่า 200 ภาพ (เป็นไฟล์. txt ซึ่งมีรหัสแผนที่) ทั้งหมดในโฟลเดอร์เดียวกับไฟล์เรียกทำงานเมื่อฉันดูในโฟลเดอร์มันทำให้ฉันอยากร้องไห้เล็กน้อยที่เห็น แหล่งข้อมูลมากมายฉันไม่เคยเห็นเกมที่แสดงทรัพยากรทั้งหมดให้คุณโดยตรง แต่ฉันเชื่อว่าพวกเขาเก็บทรัพยากรไว้ในไฟล์ที่แน่นอน นั่นคือสิ่งที่ฉันพยายามทำให้สำเร็จ: ฉันหวังว่าจะบรรจุภาพทั้งหมดใน 1 ไฟล์ (อาจเป็นไฟล์. txt ด้วย) จากนั้นสามารถอ่านจากไฟล์นั้นหรือเพิ่มได้อย่างง่ายดาย
67 c++  assets  sfml  spritesheet 

6
Lua ทำงานเป็นภาษาสคริปต์ในเกมได้อย่างไร
ฉันค่อนข้างขุ่นมัวว่า Lua คืออะไรและเกมที่ตั้งโปรแกรมใน C ++ จะใช้งานอย่างไร ฉันถามหลักเกี่ยวกับวิธีการรวบรวมและเรียกใช้ ตัวอย่างเช่นเมื่อคุณใช้โปรแกรมที่เขียนใน C ++ ซึ่งใช้สคริปต์ Lua: ทำโค้ดใน Lua เพียงแค่เรียกใช้ฟังก์ชันในโปรแกรมหลักที่เขียนใน C ++ และทำหน้าที่เป็นคลาสที่ไม่คอมไพล์รอการรวบรวมและเพิ่มลงในหน่วยความจำของ C ++ โปรแกรม? หรือมันทำหน้าที่เหมือน bash script ใน Linux ที่มันรันโปรแกรมแยกจากโปรแกรมหลักอย่างสิ้นเชิงหรือไม่?
67 c++  scripting  lua 

9
วิธีการใช้ระบบ buff / debuff ที่ยืดหยุ่นคืออะไร
ข้อมูลทั่วไป: เกมที่มีสถิติคล้ายกับเกม RPG อนุญาตให้ตัวละคร "ชื่นชอบ" ตั้งแต่ "จัดการความเสียหายพิเศษ 25%" ไปจนถึงสิ่งที่ซับซ้อนกว่าเช่น "จัดการ 15 ความเสียหายกลับไปยังผู้โจมตีเมื่อถูกโจมตี" ข้อมูลเฉพาะของหนังแต่ละประเภทไม่เกี่ยวข้องกันจริงๆ ฉันกำลังมองหาวิธี (น่าจะเป็นวัตถุเชิง) ในการจัดการ buffs โดยพลการ รายละเอียด: ในกรณีเฉพาะของฉันฉันมีตัวละครหลายตัวในสภาพแวดล้อมการต่อสู้แบบเทิร์นเบสดังนั้นฉันจึงคาดว่าบัฟจะถูกผูกติดอยู่กับเหตุการณ์เช่น "OnTurnStart", "OnReceiveDamage" เป็นต้นบางทีแต่ละบัฟนั้นเป็นซับคลาสของคลาสนามธรรมหลักบัฟ เฉพาะเหตุการณ์ที่เกี่ยวข้องเท่านั้นที่มีมากเกินไป จากนั้นตัวละครแต่ละตัวอาจมีเวกเตอร์ของบัฟที่ใช้อยู่ในปัจจุบัน วิธีนี้เหมาะสมหรือไม่ แน่นอนว่าฉันสามารถเห็นประเภทเหตุการณ์ได้หลายสิบประเภทที่จำเป็นมันทำให้รู้สึกว่าการสร้างคลาสย่อยใหม่สำหรับแต่ละ buff นั้นมากเกินไปและดูเหมือนจะไม่อนุญาตให้มีการโต้ตอบ "buff" ใด ๆ นั่นคือถ้าฉันต้องการที่จะติดตั้งฝาครอบเพื่อเพิ่มความเสียหายดังนั้นแม้ว่าคุณจะมี 10 บัฟที่แตกต่างกันซึ่งทั้งหมดให้ความเสียหายเพิ่ม 25% คุณจะเพิ่ม 100% แทนการเพิ่ม 250% และมีสถานการณ์ที่ซับซ้อนกว่าที่ฉันสามารถควบคุมได้ ฉันแน่ใจว่าทุกคนจะได้เห็นตัวอย่างว่าคนที่มีความซับซ้อนมากขึ้นสามารถโต้ตอบซึ่งกันและกันได้อย่างไรในฐานะนักพัฒนาเกมที่ฉันไม่ต้องการ ในฐานะโปรแกรมเมอร์ C ++ ที่ไม่มีประสบการณ์ (โดยทั่วไปฉันใช้ C ในระบบฝังตัว) ฉันรู้สึกว่าโซลูชันของฉันนั้นง่ายและอาจไม่ได้ใช้ประโยชน์จากภาษาเชิงวัตถุอย่างเต็มที่ …

9
GUI ที่ดีสำหรับ OpenGL? [ปิด]
ฉันเริ่มที่จะเรียนรู้ OpenGL ด้วย FreeGLUT โดยใช้สุดยอดและความรู้ที่ฉันมีจากกราฟิกระดับต้นของฉันเพื่อทำความเข้าใจทักษะของฉัน หากต้องการได้รับเพิ่มเติมจากประสบการณ์นี้ฉันต้องการรวม GUI เพื่อเขียนทับ FreeGLUT ที่ใช้ตอนนี้คำถามของฉันคือ: สิ่งนี้เป็นไปได้และห้องสมุดใดที่ฉันควรใช้? คุณสมบัติบางอย่างสำหรับห้องสมุด: โอเพ่นซอร์ส หลายแพลตฟอร์ม (Linux และ Windows) C / C ++ หากคุณมีคำแนะนำอื่น ๆ โปรดโพสต์พวกเขาพร้อมกับคำตอบสำหรับปัญหาของฉัน

10
สถานะเกม 'สแต็ค'?
ฉันกำลังคิดเกี่ยวกับวิธีใช้สถานะเกมในเกมของฉัน สิ่งสำคัญที่ฉันต้องการคือ: รัฐชั้นนำกึ่งโปร่งใสสามารถดูผ่านเมนูหยุดชั่วคราวเพื่อเกมที่อยู่เบื้องหลัง บางสิ่งบางอย่าง OO- ฉันพบว่าการใช้และเข้าใจทฤษฎีนี้ง่ายขึ้นรวมถึงการรักษาองค์กรและการเพิ่มมากขึ้น ฉันวางแผนที่จะใช้รายการที่เชื่อมโยงและถือว่าเป็นสแต็ก ซึ่งหมายความว่าฉันสามารถเข้าถึงสถานะด้านล่างเพื่อความโปร่งใสกึ่ง แผน: ให้สถานะสแต็กเป็นรายการเชื่อมโยงของตัวชี้ไปยัง IGameStates สถานะบนสุดจะจัดการคำสั่งอัพเดตและอินพุตของตัวเองจากนั้นมีสมาชิก isTransparent เพื่อตัดสินใจว่าควรดึงสถานะที่อยู่ภายใต้ จากนั้นฉันก็ทำได้: states.push_back(new MainMenuState()); states.push_back(new OptionsMenuState()); states.pop_front(); เพื่อเป็นตัวแทนของผู้เล่นที่โหลดจากนั้นไปที่ตัวเลือกแล้วเมนูหลัก นี่เป็นความคิดที่ดีหรือ ... ฉันควรมองอย่างอื่นไหม ขอบคุณ

9
เกมที่กำหนดขึ้นมามีความเป็นไปได้อย่างไรในการเผชิญกับการไม่กำหนดระดับทศนิยม
เพื่อให้เกมเหมือนเครือข่าย RTS ฉันได้เห็นคำตอบมากมายที่นี่แนะนำให้ทำเกมที่กำหนดไว้อย่างสมบูรณ์ จากนั้นคุณจะต้องถ่ายโอนการกระทำของผู้ใช้ไปยังแต่ละอื่น ๆ และล่าช้าสิ่งที่ปรากฏเล็กน้อยเพื่อที่จะ "ล็อคใน" การป้อนข้อมูลของทุกคนก่อนที่จะแสดงเฟรมถัดไป ดังนั้นสิ่งต่าง ๆ เช่นตำแหน่งของยูนิตสุขภาพ ฯลฯ ไม่จำเป็นต้องได้รับการอัปเดตตลอดเวลาผ่านเครือข่ายเพราะการจำลองของผู้เล่นทุกคนจะเหมือนกันทุกประการ ฉันยังได้ยินสิ่งเดียวกันที่แนะนำสำหรับการทำรีเพลย์ อย่างไรก็ตามเนื่องจากการคำนวณจุดลอยตัวนั้นไม่ได้ถูกกำหนดระหว่างเครื่องหรือแม้แต่ระหว่างการรวบรวมโปรแกรมเดียวกันบนเครื่องเดียวกันสิ่งนี้เป็นไปได้จริงหรือ เราจะป้องกันความจริงที่ว่าทำให้เกิดความแตกต่างเล็กน้อยระหว่างผู้เล่น (หรือไกล) ที่กระเพื่อมตลอดทั้งเกมได้อย่างไร ฉันได้ยินบางคนแนะนำให้หลีกเลี่ยงจำนวนจุดลอยตัวทั้งหมดและใช้intเพื่อแสดงความฉลาดของเศษส่วน แต่นั่นไม่ได้ฟังดูเป็นประโยชน์สำหรับฉัน - ถ้าฉันต้องการตัวอย่างเช่นถ่ายมุมโคไซน์ของมุม? ฉันจำเป็นต้องเขียนห้องสมุดคณิตศาสตร์ทั้งหมดใหม่หรือไม่? โปรดทราบว่าฉันสนใจ C # เป็นหลักซึ่งเท่าที่ฉันสามารถบอกได้มีปัญหาเหมือนกับ C ++ ในเรื่องนี้

7
เมื่อสร้างต้นแบบฉันจะสำรวจพฤติกรรมของเกมได้ง่ายขึ้นได้อย่างไร
ฉันสร้างเกมอินดี้ด้วยตัวเอง แต่โดยปกติแล้วฉันมักจะหมดแรงเมื่อฉันได้พัฒนาเกมใหม่ขึ้นมาสู่ระดับที่สามารถเล่นกับพฤติกรรมได้ฉันจึงตัดสินใจปรับแต่งแทนที่จะสำรวจ ด้วยผลลัพธ์อันน่าสะพรึงกลัว (ภาพจากบล็อกอินเตอร์คอม ) ตัวอย่างเช่นฉันพบว่ารอบการวนซ้ำสำหรับพฤติกรรมการปรับแต่ง (เช่นการเชื่อมโยงและการเริ่มต้นแอปพลิเคชัน C ++ ใหม่) เป็นเวลานานพอที่พวกเขาจะฆ่าความคิดสร้างสรรค์ทั้งหมด ฉันกำลังสร้างเครื่องมือเพื่อจัดการกับสิ่งนี้ มีวิธีอื่นใดอีกที่จะสำรวจพฤติกรรมของเกมได้อย่างรวดเร็ว? ฉันสนใจวิธีการที่นักพัฒนาอินดี้ใช้เช่นเดียวกับ บริษัท ขนาดใหญ่

10
C ++: สมาร์ทพอยน์เตอร์, พอยน์เตอร์ชี้, ไม่มีพอยน์เตอร์? [ปิด]
ภายในขอบเขตของการพัฒนาเกมใน C ++ รูปแบบที่คุณชื่นชอบในการใช้พอยน์เตอร์คืออะไร (ไม่ว่าจะเป็นแบบดิบขอบเขตที่แชร์หรืออื่น ๆ ระหว่างสมาร์ทและโง่) คุณอาจพิจารณา ความเป็นเจ้าของวัตถุ สะดวกในการใช้ คัดลอกนโยบาย เหนือศีรษะ การอ้างอิงครบวงจร แพลตฟอร์มเป้าหมาย ใช้กับภาชนะบรรจุ

2
วิธีการสร้างสูตรที่ปรับได้สำหรับข้อกำหนดระดับ RPG ขึ้นไป?
ฉันกำลังพยายามสร้างสูตรที่สามารถแก้ไขได้อย่างง่ายดายโดยการเปลี่ยนค่าสองค่า: number_of_levels และ last_level_experience นี่คือเพื่อให้ผู้ใช้ modding เกมเปลี่ยนข้อกำหนดการปรับระดับ ฉันได้รับแล้วเพื่อให้ฉันสามารถระบุจำนวน XP ที่ต้องการสำหรับระดับสุดท้ายขึ้นไป แต่ฉันต้องการควบคุม XP ที่จำเป็นสำหรับระดับแรกขึ้นไปซึ่งในกรณีนี้อาจแตกต่างกันมาก ตัวอย่างเช่นถ้าฉันมี 40 ระดับและ 1,000,000 XP สำหรับระดับสุดท้ายความต้องการในการเลื่อนระดับแรกจะเท่ากับ 625 แต่ถ้าฉันเปลี่ยนระดับเป็น 80 ระดับแรกจะเพิ่มเป็น 156 ในทั้งสองกรณีความต้องการระดับสุดท้าย 1,000,000 ต้องมีวิธีที่จะทำให้คอมพิวเตอร์ทำงานในลักษณะเส้นโค้งที่เหมาะสมโดยให้ค่าพื้นฐานทั้งสองนี้ #include <iostream> int main() { int levels = 40; if (levels < 2) levels = 2; int experience_for_last_level = 1e6; float fraction = …

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