การพัฒนาเกม

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

2
GLSL - gaussian เบลอหนึ่งรอบ
เป็นไปได้หรือไม่ที่จะใช้ส่วนของ shader เพื่อทำ gaussian blur One-pass? ฉันพบว่ามีการใช้งานเบลอสองทาง (เกาส์เซียนและเบลอเบลอ): http://callumhay.blogspot.com/2010/09/gaussian-blur-shader-glsl.html http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/ http://www.geeks3d.com/20100909/shader-library-gaussian-blur-post-processing-filter-in-glsl/ และอื่น ๆ ฉันคิดว่าจะใช้ gaussian blur เป็น convolution (อันที่จริงแล้วมันคือ convolution, ตัวอย่างข้างต้นเป็นเพียงการประมาณ): http://en.wikipedia.org/wiki/Gaussian_blur

4
ฉันจะได้รับเอฟเฟกต์แสง 2D ที่ราบรื่นได้อย่างไร
ฉันกำลังสร้างเกมตัวต่อแบบสองมิติใน XNA ปัจจุบันฟ้าผ่าของฉันดูเหมือนว่านี้ ฉันจะทำให้มันเป็นแบบนี้ได้อย่างไร แทนที่จะบล็อกแต่ละบล็อกมีสีของตัวเอง แต่ก็มีการซ้อนทับที่ราบรื่น ฉันสมมติว่ามี shader อยู่บ้างและส่งค่าแสงสำหรับกระเบื้องโดยรอบไปยัง shader แต่ฉันเป็นมือใหม่ที่มีร่มเงาดังนั้นฉันไม่แน่ใจ แสงปัจจุบันของฉันคำนวณแสงจากนั้นส่งผ่านไปยัง a SpriteBatchและวาดด้วยพารามิเตอร์ tint แผ่นกระเบื้องแต่ละอันนั้นมีการColorคำนวณก่อนที่จะวาดในอัลกอริทึมการส่องสว่างของฉันซึ่งใช้สำหรับโทนสี นี่คือตัวอย่างเกี่ยวกับวิธีที่ฉันคำนวณแสงในปัจจุบัน (ฉันทำสิ่งนี้จากซ้ายขวาและล่างเช่นกัน แต่ฉันเหนื่อยมากที่ทำเฟรมนี้เป็นเฟรม ... ) ที่จริงแล้วการได้รับและวาดแสงจนถึงตอนนี้ก็ไม่มีปัญหา ! ฉันได้เห็นบทเรียนมากมายเกี่ยวกับหมอกแห่งสงครามและการใช้การซ้อนทับแบบวงกลมลาดเพื่อสร้างสายฟ้าที่ราบรื่น แต่ฉันมีวิธีที่ดีในการกำหนดค่าสายฟ้าผ่าให้กับกระเบื้องแต่ละอันแล้ว ดังนั้นเพื่อทบทวน คำนวณแสงสว่าง (เสร็จสิ้น) วาดไทล์ (เสร็จแล้วฉันรู้ว่าฉันจะต้องแก้ไขมันสำหรับ shader) Shade tiles (วิธีการผ่านค่าและใช้ "การไล่ระดับสี)

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

2
ในเกมแพลตฟอร์ม 2 มิติจะทำให้แน่ใจได้อย่างไรว่าผู้เล่นเคลื่อนที่อย่างราบรื่นบนพื้นที่ลาดเอียง?
ฉันกำลังพัฒนาเอ็นจิ้นฟิสิกส์สำหรับเกมแพลตฟอร์ม 2D ฉันใช้ทฤษฎีแกนแยกสำหรับการตรวจจับการชน พื้นผิวดินถูกสร้างขึ้นจากกล่อง bounded oriented โดยผู้เล่นเป็นกล่อง bounding bounded แกน (โดยเฉพาะฉันใช้อัลกอริทึมจากหนังสือ "การตรวจจับการชนกันแบบเรียลไทม์" ซึ่งทำการตรวจจับการชนกันของ OBB โดยใช้ SAT) ฉันใช้สัมประสิทธิ์การคืนค่าที่ค่อนข้างเล็ก (ใกล้กับศูนย์) ในการตอบสนองการชนเพื่อให้แน่ใจว่าวัตถุแบบไดนามิกไม่ได้เจาะสภาพแวดล้อม เครื่องยนต์ส่วนใหญ่ใช้งานได้ดีฉันแค่กังวลเกี่ยวกับเคสขอบบางอย่างที่อาจเกิดขึ้นได้ ตัวอย่างเช่นในแผนภาพ A, B และ C เป็นพื้นผิวดิน ผู้เล่นมุ่งหน้าไปทางซ้ายตามแนว B ไปทาง A ดูเหมือนว่าสำหรับฉันเนื่องจากความไม่ถูกต้องกล่องผู้เล่นอาจอยู่ด้านล่างกล่อง B เล็กน้อยเมื่อมันดำเนินต่อไปเรื่อย ๆ เมื่อถึง A ดังนั้นมุมซ้ายล่างของผู้เล่นอาจชนกับด้านขวาของ A ซึ่งจะไม่เป็นที่พึงปรารถนา (เนื่องจากความตั้งใจคือให้ผู้เล่นเคลื่อนที่อย่างราบรื่นไปด้านบนของ A) ดูเหมือนว่าปัญหาที่คล้ายกันอาจเกิดขึ้นเมื่อผู้เล่นอยู่ด้านบนของกล่อง C เคลื่อนไปทางซ้ายไปยัง B - จุดที่รุนแรงที่สุดของ B สามารถชนกับด้านซ้ายของผู้เล่นแทนที่จะเป็นมุมล่างซ้ายของผู้เล่นเลื่อนขึ้นและซ้าย เหนือ …
18 2d  physics  platform 

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

4
ฉันจะโคจรกล้องไปยังจุดที่เป็นเป้าหมายได้อย่างไร
ฉันวาดฉากที่กล้องเคลื่อนไหวอย่างอิสระเกี่ยวกับจักรวาล คลาสกล้องจะติดตามตำแหน่งมุมมอง (หรือดู ) ตำแหน่งของกล้องและเวกเตอร์ขึ้น เวกเตอร์ / คะแนนเหล่านี้จะถูกส่งผ่านไปยัง gluLookAt แพนและซูมนั้นแทบไม่น่าเชื่อ อย่างไรก็ตามฉันกำลังค้นหาการหมุนเกี่ยวกับจุดที่มองว่ามีปัญหามากกว่านี้ ฉันต้องการที่จะเขียน Camera.rotate ฟังก์ชั่นที่ใช้เวลา 2 มุมหนึ่งที่หมุนขึ้น / ลงและหนึ่งที่หมุนซ้าย / ขวาพร้อมทรงกลมจินตนาการว่าเป็นศูนย์กลางเกี่ยวกับการดูที่จุด มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันอ่านสั้น ๆ เกี่ยวกับควอเทอร์เนี่ยน แต่ฉันอยากจะดูว่ามีวิธีแก้ปัญหาที่ง่ายกว่านี้หรือไม่หากการสร้างฉากของฉันค่อนข้างง่าย

2
ข้อดีและข้อเสียของรูปแบบไฟล์ข้อมูลของ voxel คืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน7 เดือนที่ผ่านมา .VXL .VOX .KVX .KV6 .V3A .V3B ฉันพยายามที่จะตัดสินใจว่ามันคุ้มค่าที่จะไปกับใด ๆ ข้างต้นหรืออื่น ๆ หรือถ้าฉันควรจะม้วนตัวเอง ปัจจัยการตัดสินใจตามลำดับความสำคัญคือ: การสนับสนุนภาพเคลื่อนไหว (ฉันรู้ว่านี่เป็นเรื่องยากเมื่อพูดถึง voxels) โดยใช้ voxel deltas หรือคำอธิบายการแปลงตัวเลข ความเรียบง่าย (หรืออย่างน้อยก็เป็นรูปแบบย่อ) การอัด จากสิ่งที่ฉันสามารถบอกได้ว่ารูปแบบ Tiberian Sun VXL เป็นรูปแบบเดียวที่ออกแบบมาสำหรับการเคลื่อนไหว แต่ Ken Silverman จากชื่อเสียง Voxelstein3D อ้างว่า VXL ไม่สนับสนุนการเคลื่อนไหว (ในไฟล์เดียวเป็นคำพูดของเขา) ดังนั้นฉันจึงสงสัยว่าอาจมีรูปแบบ. VXL ไม่แตกต่างกันสองแบบเนื่องจากดูเหมือนว่าเป็นตัวเลือกที่ชัดเจนของนามสกุลไฟล์สำหรับข้อมูล …

1
แนวคิดสำหรับการจำลองน้ำแบบ 2D
ฉันกำลังมองหาอินพุตใด ๆ เกี่ยวกับการจำลองน้ำในแบบ 2 มิติเทียบกับอาร์เรย์ที่มีขนาดใหญ่กว่า (เรียกว่า) ถูกบล็อก / ไม่ถูกบล็อก (ดูจากด้านข้าง) ฉันคิดตามแนวคิดต่อไปนี้: Cell Automata ทำแบบจำลอง parralel อย่างหนาแน่นบน CPU ที่ใช้ออโตเซลล์ ด้วยกฎที่ง่ายเหมือน: หากมีเซลล์เปิดอยู่ให้เลื่อนไปด้านล่างสุดไปเลย ตรวจสอบเซลล์ซ้ายและขวาเลือกสุ่มหนึ่งจากสองและย้ายไป ข้อดี ใช้งานง่าย มีความหมาย / เสื่อมในระบบผู้เล่นหลายคน จุดด้อย อาจช้าจริง ๆ ไม่น่าเชื่อ Fluid Dynamics บน GPU ทำการประมาณคร่าวๆของพลศาสตร์ของไหลบน GPU กับพื้นผิวดังนี้: +------+-----+-----+-------+ |R |G |B |A | +------+-----+-----+-------+ |vX |vY |NULL |Density| +------+-----+-----+-------+ ข้อดี …

4
ฉันจะทำให้ข้อความที่ผ่านระหว่างเธรดในเอ็นจินแบบมัลติเธรดยุ่งยากน้อยลงได้อย่างไร?
เอ็นจิ้น C ++ ที่ฉันกำลังทำงานอยู่นั้นแบ่งออกเป็นหลายเธรดขนาดใหญ่ (สำหรับการสร้างเนื้อหาขั้นตอนของฉัน), การเล่นเกม (สำหรับ AI, สคริปต์, การจำลอง), ฟิสิกส์และการแสดงผล เธรดสื่อสารกันผ่านวัตถุข้อความขนาดเล็กซึ่งส่งผ่านจากเธรดไปยังเธรด ก่อนที่จะก้าวด้ายจะประมวลผลข้อความที่เข้ามาทั้งหมด - การปรับปรุงเพื่อการแปลงเพิ่มและลบวัตถุ ฯลฯ บางครั้งหนึ่งเธรด (รุ่น) จะสร้างบางสิ่งบางอย่าง (ศิลปะ) และส่งผ่านไปยังเธรดอื่น (เรนเดอร์) สำหรับเจ้าของถาวร ในช่วงต้นกระบวนการและฉันสังเกตเห็นสิ่งที่สอง: ระบบการส่งข้อความยุ่งยาก การสร้างชนิดข้อความใหม่หมายถึงคลาสย่อยคลาสคลาสพื้นฐานของข้อความการสร้าง enum ใหม่สำหรับประเภทของมันและการเขียนตรรกะสำหรับวิธีที่เธรดควรตีความชนิดข้อความใหม่ มันเป็นความเร็วในการพัฒนาและมีแนวโน้มที่จะเกิดข้อผิดพลาดแบบผิดพลาด (Sidenote- การทำงานกับสิ่งนี้ทำให้ฉันรู้สึกว่าภาษาไดนามิกที่ยอดเยี่ยมสามารถเป็นเช่นนั้นได้!) มีวิธีที่ดีกว่าในการทำเช่นนี้? ฉันควรใช้บางอย่างเช่น boost :: bind เพื่อทำให้เป็นอัตโนมัติหรือไม่ ฉันเป็นห่วงว่าถ้าฉันทำอย่างนั้นฉันจะสูญเสียความสามารถในการพูดจัดเรียงข้อความตามประเภทหรือบางสิ่งบางอย่าง ไม่แน่ใจว่าการจัดการแบบนั้นจะจำเป็นหรือไม่ จุดแรกมีความสำคัญเนื่องจากเธรดเหล่านี้สื่อสารกันมาก การสร้างและส่งข้อความเป็นส่วนสำคัญในการทำให้สิ่งต่าง ๆ เกิดขึ้น ฉันต้องการที่จะปรับปรุงระบบดังกล่าว แต่ยังเปิดให้กระบวนทัศน์อื่น ๆ ที่อาจเป็นประโยชน์เช่นกัน มีการออกแบบหลายเธรดที่แตกต่างกันที่ฉันควรคิดเพื่อช่วยให้ง่ายขึ้นหรือไม่ ตัวอย่างเช่นมีทรัพยากรบางอย่างที่เขียนไม่บ่อยนัก แต่มักอ่านจากหลายเธรด …

4
มีอะไรที่เหมือนกับ XNA สำหรับ c ++ หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันชอบคุณสมบัติของ XNA แต่ฉันต้องการเข้าไปในเกม c ++ ปัญหาคือตอนนี้ฉันต้องกังวลเกี่ยวกับทุกอย่างตั้งแต่การโหลดไฟล์ png ไปจนถึงการเปิดหน้าต่าง มันน่ารำคาญนิดหน่อย ฉันต้องการ XNA รุ่น c ++ เพื่อแก้ปัญหาเหล่านี้ให้ฉัน
18 xna  c++ 

9
องค์ประกอบการลดทอนเชิงเส้นในแบบจำลองแสงมีองค์ประกอบทางกายภาพหรือไม่?
ใน OpenGL (และระบบอื่น ๆ ) ปัจจัยที่ลดทอนระยะทางสำหรับไฟจุดเป็นสิ่งที่ต้องการ1/(c+kd+sd^2)ที่dเป็นระยะทางจากแสงและc, kและsมีค่าคงที่ ฉันเข้าใจsd^2องค์ประกอบที่เป็นแบบจำลองของการลดทอน "ความถูกต้องตามกฎของสี่เหลี่ยมจัตุรัส" ที่รู้จักกันดีทางร่างกายซึ่งคาดหวังในความเป็นจริง ฉันเดาค่าคงที่cหนึ่งมักจะมีการจัดการกับค่าที่น้อยมากของd(และอาจแบ่งการป้องกันโดยศูนย์?) kdองค์ประกอบเชิงเส้นมีบทบาทอะไรในโมเดล (โดยค่าเริ่มต้นkคือศูนย์ใน OpenGL) คุณจะใช้ค่าอื่นเมื่อkใด ฉันรู้ว่าสิ่งนี้เรียกว่าองค์ประกอบ "การลดทอนเชิงเส้น" แต่พฤติกรรมแบบใดที่จำลองในรูปแบบของแสง ดูเหมือนจะไม่ปรากฏในรูปแบบทางกายภาพของแสงที่ฉันรู้ [แก้ไข] David Gouveia ชี้ให้เห็นว่าอาจใช้ปัจจัยเชิงเส้นเพื่อช่วยให้ฉาก 'ดู' ใกล้เคียงกับสิ่งที่นักพัฒนา / ศิลปินตั้งใจหรือเพื่อควบคุมอัตราที่แสงตก ในกรณีใดคำถามของฉันจะกลายเป็น "ปัจจัยการลดทอนเชิงเส้นมีคู่ฟิสิกส์หรือเป็นเพียงแค่ใช้เป็นปัจจัยเหลวไหลเพื่อช่วยควบคุมคุณภาพของแสงในฉาก"
18 lighting 

4
โครงสร้างข้อมูลใดที่ควรใช้เพื่อเป็นตัวแทนของภูมิประเทศ voxel
ตามหน้า Wikipediaเกี่ยวกับ voxels "[... ] ตำแหน่งของ voxel นั้นอนุมานตามตำแหน่งของมันเมื่อเทียบกับ voxels อื่น ๆ (เช่นตำแหน่งของมันในโครงสร้างข้อมูลที่ทำขึ้นเป็นรูปปริมาตรเดียว)" เราควรนำโครงสร้างข้อมูลไปใช้อย่างไร? ฉันกำลังคิดเกี่ยวกับลำดับที่หนึ่ง แต่ฉันสงสัยว่ามีอย่างอื่นที่ฉันไม่เคยได้ยิน

1
เราจะป้องกันตัวเองจากการถูกละเมิดสิทธิบัตรโดยไม่ทราบสาเหตุได้อย่างไร
มีข่าวด่วนเกี่ยวกับ Zynga ที่ถูกฟ้องร้องเกี่ยวกับการใช้งานที่ชัดเจนมาก นี่ทำให้ฉันคิดว่าอุตสาหกรรมเกมเต็มไปด้วยทุ่นระเบิดที่จะถูกเหยียบในทุก ๆ เทิร์น ทุกคนต้องป้อนข้อมูลอะไรเพื่อลดความเสียหาย ล่าสุด: http://www.gamasutra.com/view/news/36657/Zynga_Sued_Over_Prize_Redemption_Patents.php ตัวอย่างอื่น: https://w2.eff.org/patent/wanted/patent.php?p=sheldon

1
ลูกค้าเกมรู้ได้อย่างไรว่าเซิร์ฟเวอร์กำลังทำงานบน LAN ของพวกเขา?
ในเกมที่มีผู้เล่นหลายคนจำนวนมากมีตัวเลือกสำหรับการเล่น LAN คำถามของฉันคือลูกค้าจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์อยู่บน LAN หรือไม่ วิธีเดียวที่ฉันสามารถคิด ส่งการออกอากาศผ่านที่อยู่การออกอากาศ นี่เป็นข้อเสียของการกรองบางครั้งโดยเราเตอร์หรือสวิตช์ในสภาพแวดล้อมเครือข่ายที่แตกต่างกัน พยายามเชื่อมต่อกับเซิร์ฟเวอร์ในทุก ๆ IP ในซับเน็ตของคุณ นี่เป็นข้อเสียของการช้า (โดยเฉพาะถ้าเครือข่ายใช้ 10.XXX.XXX.XXX สำหรับ IP ของพวกเขา) และการโจมตี mini ddos ​​แต่จะไม่ถูกกรอง เกมทำเช่นนี้โดยเฉพาะในเครือข่ายอื่น ๆ ได้อย่างไร

1
กำหนดความยาวส่วนโค้งของเส้นโค้ง Catmull-Rom เพื่อเคลื่อนที่ด้วยความเร็วคงที่
ฉันมีเส้นทางที่กำหนดโดยการต่อข้อมูลของ Catmull-Rom splines ฉันใช้วิธีการคงที่ Vector2.CatmullRom ใน XNA ที่ช่วยให้การแก้ไขระหว่างจุดที่มีค่าไปจาก 0 ถึง 1 ไม่ใช่เส้นโค้งทุกเส้นในเส้นทางนี้ที่มีความยาวเท่ากัน สิ่งนี้ทำให้เกิดความแตกต่างของความเร็วถ้าฉันปล่อยให้น้ำหนักเคลื่อนที่ด้วยความเร็วคงที่สำหรับทุกเส้นโค้งในขณะที่เดินไปตามเส้นทาง ฉันสามารถแก้ไขได้โดยให้ความเร็วของน้ำหนักขึ้นอยู่กับความยาวของเส้นโค้ง ฉันจะกำหนดความยาวของเส้นโค้งดังกล่าวได้อย่างไร ฉันควรจะประมาณโดยตัดเส้นโค้งเป็น 10 เส้นตรงและรวมความยาวของพวกเขา? ฉันใช้สิ่งนี้สำหรับการทำแผนที่พื้นผิวแบบไดนามิกในตาข่ายที่สร้างขึ้นที่กำหนดโดยเส้นโค้ง

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