การพัฒนาเกม

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

1
ใครจะจัดเก็บข้อมูลบริบททั่วโลกในระบบส่วนประกอบนิติบุคคล?
คำถามของฉันคือ: วิธีหนึ่งจะเก็บข้อมูลบริบททั่วโลกเช่น ข้อมูลข้อมูลโลกเวลาโลกปัจจุบัน ฯลฯ ในระบบองค์ประกอบเอนทิตี ฉันคิดว่าจะทำงานเพื่อสร้างเกมจำลองสถานการณ์แบบเปิดของ Dwarf Fortress สไตล์โลกใน C ++ ฉันได้สร้างเอ็นจิ้นเกมสไตล์เอนทิตีเพื่อความสนุกและตอนนี้ฉันกำลังพยายามหาวิธีที่ฉันจะทำงานในคุณสมบัติทั้งหมดที่ฉันต้องการ นอกเหนือจากการเล่นเกมมาตรฐาน (การเรนเดอร์ฟิสิกส์ข้อมูลส่วนประกอบเฉพาะเอนทิตี ฯลฯ ) แล้วฉันยังต้องการมีข้อมูลบริบทระดับโลกที่ระบบที่เกี่ยวข้องทั้งหมดสามารถเข้าถึงได้ (เช่นข้อมูลโลกเช่นปีปัจจุบัน ไม่ว่าจะเกิดภาวะโลกร้อนหรืออะไรก็ตามที่เกี่ยวข้องกับการจำลองโลก) เดิมทีฉันเคยคิดที่จะสร้างองค์ประกอบ "โลก" แต่มันดูไร้จุดหมายและยากหากระบบต่าง ๆ มากมายต้องการเข้าถึงข้อมูล "ทั่วโลก" อย่างมีเหตุผล มันจะสมเหตุสมผลไหมที่จะมีองค์ประกอบ "โลก" หรือฉันควรเก็บข้อมูลนี้ด้วยวิธีอื่น? ฉันยังคิดที่จะทำให้ข้อมูลนี้เป็นสากลดังนั้นจึงให้การเข้าถึงระบบใด ๆ ที่ต้องการใช้งาน ดูเหมือนเป็นการละเมิดหลักการองค์ประกอบเอนทิตี้โดยทั่วไปและอาจยุ่งเหยิงด้วยเหตุผลอื่น แต่ฉันคิดว่ามันอาจใช้งานได้จริง สิ่งอื่นที่ฉันคิดว่าน่าจะฝังข้อมูลบริบทโลกที่เกี่ยวข้องลงในระบบโดยตรง ตัวอย่างเช่นถ้าฉันมีAgeSystem"อายุ" เอนทิตีทั้งหมดที่มีgetsWeakerAsTimePassesส่วนประกอบหรืออะไรก็ตามบางทีระบบนี้อาจเก็บข้อมูลเวลาที่เกี่ยวข้องสำหรับโลกโดยตรงเป็นข้อมูลสมาชิกที่จะใช้ในการคำนวณเวลาที่ผ่านไปและจำนวนเท่าใด อายุและความอ่อนแอของผู้คน ฯลฯ ตัวเลือกที่สามนี้เป็นสิ่งที่ฉันชอบน้อยที่สุด แต่สิ่งที่เกิดขึ้นกับฉันในการระดมสมอง มีใครให้คำแนะนำได้บ้าง

1
โปรแกรมจำลองการบินที่ง่าย
ในการจำลองการบินแบบ 3 มิติที่มีระดับความสมจริงของ Crimson Skies (เช่นเดียวกับในระดับอาร์เคดมากกว่าที่เหมือนจริง) คุณจะทราบความเคลื่อนไหวของเครื่องบินแต่ละเห็บได้อย่างไร (Crimson Skies เป็นโปรแกรมจำลองการบินคล้ายอาร์เคด: http://youtu.be/OWmYt0LZDnU?t=3m ) ฉันเข้าใจว่าเกมก้าวหน้าในขั้นตอนคงที่และแต่ละขั้นตอนแต่ละวัตถุที่เคลื่อนที่จะเคลื่อนที่เป็นเส้นตรงด้วยความเร็วคงที่จากตำแหน่งปัจจุบันไปยังตำแหน่งถัดไป คุณต้องการพารามิเตอร์พื้นฐานอะไรบ้างในการพิจารณามวลความเร็วเค้น. ฯลฯ คุณจะรวมมันยังไง?

2
บล็อกล้มและรูปร่างที่ซับซ้อน
ขณะนี้ฉันมีเกมเหมือน Tetris ที่เรียบง่ายและพบปัญหาที่ฉันไม่สามารถแก้ไขได้ ซึ่งแตกต่างจาก Tetris ที่มีรูปทรงล้มเดียวฉันมีรูปทรงหลายรูปที่เชื่อมต่อกันที่อาจต้องตก ฉันต้องคำนวณตำแหน่งสุดท้ายของพวกเขา พิจารณาสิ่งต่อไปนี้: ในการคำนวณตำแหน่งสุดท้ายของรูปร่างสีเขียวฉันเพียงแค่สแกนหาทุก ๆ ตารางจนกว่าฉันจะไปถึงอีกสี่เหลี่ยมจัตุรัสหรือขอบของกระดาน เสร็จสิ้น สำหรับรูปร่างที่เรียบง่ายหลาย ๆ แบบฉันกำลังไต่ขึ้นบอร์ด ดังนั้นสีแดงจึงไม่จำเป็นต้องเคลื่อนไหวสีส้มจะลดลงทีละหนึ่งสีเขียวลดลงสาม เสร็จสิ้น ฉันไม่รู้วิธีรักษารูปร่างสีเขียวและสีแดงที่เชื่อมต่อกัน การใช้ตรรกะของ # 2 เราจะท้าย "ติด" ลอยกลางอากาศ หากฉันสแกนหารูปร่างสีเขียวฉันจะพบกับสีแดงและไม่เคลื่อนไหวและในทางกลับกันสำหรับสีแดง วิธีแก้ปัญหาอาจใช้รูปร่างสองแบบเป็นหนึ่งเดียว คล้ายกับ # 3 ในสถานการณ์นี้ฉันสามารถประสบความสำเร็จได้ด้วยการปฏิบัติต่อวัตถุเป็นหนึ่งเดียว แตกต่างจาก # 3 และ # 4 ฉันไม่สามารถรักษารูปร่างเป็นหนึ่งเป็นรูปร่างสีส้มจะจบลงหนึ่งตารางลอยสูงเกินไป ... อีกรูปแบบของปัญหา # 6 อาจมีสถานการณ์อื่น ๆ ที่ฉันมีหลายรูปร่างที่คลุกเคล้าในสถานการณ์ที่ซับซ้อนมากขึ้น แต่ฉันคิดว่าข้างต้นครอบคลุมส่วนพื้นฐานที่สุดของปัญหา ฉันรู้สึกว่ามีวิธีการแก้ปัญหาที่สง่างามที่ฉันยังไม่ได้พบ / คิดและจะขอบคุณมากที่ข้อมูลเชิงลึกความคิดหรือทรัพยากรใด ๆ สารละลาย …

1
(เรียลไทม์ -) จุดเริ่มต้นการส่องสว่างทั่วโลก [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา เทคนิคใดที่ควรมีคนดูเมื่อเข้าสู่การส่องสว่างทั่วโลกแบบเรียลไทม์ (สำหรับสถานการณ์แสงแบบไดนามิก) เป็นการยากที่จะเข้าใจเทคนิคต่าง ๆ ที่กล่าวมาโดยไม่รู้ตัว ถ้าฉันต้องการรวม GI เข้ากับเอ็นจิ้นกราฟิกของฉันฉันควรเริ่มต้นอ่านเป็นพื้นฐานที่ไหน อัลกอริทึมใดที่สามารถใช้งานได้ในกรอบเวลาที่สมเหตุสมผลโดยบางคนใหม่ (เช่นไม่ใช่อัลกอริทึมพิเศษที่ได้รับประสิทธิภาพเล็กน้อยสำหรับการทำงานเป็นเวลาหลายเดือน) และตอนนี้ไม่ได้ล้าสมัยอย่างสมบูรณ์ในขณะนี้ การทำแผนที่ Photon ดูเหมือนว่าจะมาขึ้นมากและฉันได้อ่านเกี่ยวกับสิ่งต่างๆเช่นการติดตาม voxel กรวยและขั้นตอนวิธีเฉพาะเจาะจงมากขึ้นเช่นเทคนิคนี้มาใช้ในการ CryEngine 3 อย่างไรก็ตามการรู้ถัดจากสิ่งใดเกี่ยวกับสนามเป็นการยากที่จะตัดสินใจว่าจะเริ่มจากตรงไหน เทคนิคใดที่ควรค่าแก่การศึกษา?

1
Multiplayer platformer - ปกติแล้วการแก้ไขเซิร์ฟเวอร์จะต้องใช้กับไคลเอนต์เดียวบนเซิร์ฟเวอร์หรือไม่?
ขณะนี้ฉันกำลังทำงานบน platformer ที่มีผู้เล่นหลายคนค่อนข้างง่าย ฉันอ่านบทความเกี่ยวกับเทคนิคต่าง ๆ ที่ใช้ในการซ่อนเวลาแฝงอยู่ แต่ฉันก็ยังไม่เข้าใจแนวคิดบางอย่าง ฉันพบว่าหัวข้อน่าสนใจมากและต้องการลองใช้ความคิดด้วยตัวเอง แต่ฉันคิดว่าการขอแลกเปลี่ยน gamedev จะมีประสิทธิภาพมากขึ้นสำหรับคำถามของฉัน ฉันจะพยายามอย่างดีที่สุดเพื่ออธิบายสถานการณ์ปัจจุบันของฉันและคำถามใดที่เกิดขึ้นระหว่างทาง ตอนนี้ฉันต้องการซิงค์ผู้เล่นคนเดียวกับเซิร์ฟเวอร์เท่านั้น ในทางทฤษฎีผมสันนิษฐานว่าผู้เล่นคนเดียวที่มีการคาดการณ์ฝั่งไคลเอ็นต์จะไม่ต้องการการแก้ไขเซิร์ฟเวอร์เนื่องจากไม่มีปัจจัยภายนอกที่มีอิทธิพลต่อการเคลื่อนไหวของเขา ดังนั้นต้นแบบของฉันในปัจจุบันมีผู้เล่นเพียงคนเดียวที่ซิงค์กับเซิร์ฟเวอร์โดยไม่ต้องทำการแก้ไขเซิร์ฟเวอร์ หากคุณคุ้นเคยกับระบบเครือข่ายเกมฉันคิดว่าคุณอาจข้ามส่วนบริบทแม้ว่าฉันอาจทำสิ่งผิดปกติไปพร้อมกัน ลูปไคลเอ็นต์ (หนึ่งครั้งต่อเฟรมหนึ่งครั้งทุกๆ ~ 16.67ms) ลูปไคลเอนต์แบบง่ายดูเหมือนว่า: ตรวจสอบอินพุตภายใน (WASD) และจัดทำแพ็กเกจเป็นการกระทำ (เช่นType=MoveLeft, Time=132.0902, ID=15) เราเก็บการกระทำที่บรรจุไว้เพื่อส่งในที่สุด นอกจากนี้เรายังนำการกระทำที่ต้องการไปใช้กับการจำลองทางฟิสิกส์ของเกมโดยตรง ตัวอย่างเช่นหากเรามีการMoveLeftดำเนินการเราจะใช้กำลังไปทางซ้ายกับความเร็วของผู้เล่น ตรวจสอบเพื่อส่งการกระทำ เพื่อป้องกันการใช้แบนด์วิดท์ของลูกค้าที่ไม่เหมาะสมให้ส่งการกระทำที่ทำแพคเกจในช่วงเวลาที่แน่นอนเท่านั้น (เช่น 30ms) ใช้การแก้ไขเซิร์ฟเวอร์ ณ จุดนี้จะจัดการกับเดลต้าและการแก้ไขที่ได้รับจากเซิร์ฟเวอร์และนำไปใช้กับการจำลองสถานการณ์ของเกม สำหรับคำถามนี้ไม่ได้ใช้ อัปเดตฟิสิกส์ท้องถิ่น ใช้วงฟิสิกส์ของผู้เล่นหลัก โดยพื้นฐานแล้วสิ่งนี้จะทำการทำนายการเคลื่อนไหวของผู้เล่น สิ่งนี้เป็นการเพิ่มแรงโน้มถ่วงให้กับความเร็วของผู้เล่นใช้ความเร็วของผู้เล่นกับตำแหน่งของเขาแก้ไขการชนกันตลอดทาง ฯลฯ ฉันควรระบุว่าการจำลองทางฟิสิกส์มักจะดำเนินการด้วยเดลต้าวินาทีคงที่ (เรียกหลายครั้งขึ้นอยู่กับวินาทีเดลต้าจริง) . ฉันข้ามรายละเอียดเฉพาะบางอย่างเกี่ยวกับฟิสิกส์และส่วนอื่น ๆ เพราะฉันรู้สึกว่าพวกเขาไม่จำเป็นสำหรับคำถามนี้ แต่อย่าลังเลที่จะแจ้งให้เราทราบหากพวกเขาจะเกี่ยวข้องกับคำถาม …

4
ตรวจจับ“ การกดปุ่มใด ๆ ”
ฉันพยายามอนุญาตให้ผู้เล่นกดปุ่มใดก็ได้เพื่อดำเนินการต่อจากหน้าหลัก ฉันสามารถทำสิ่งนี้ได้ด้วยการทำรายการของปุ่มและวนลูปผ่านสิ่งเหล่านี้และตรวจสอบว่าหนึ่งในนั้นหยุดทำงานหรือไม่ อย่างไรก็ตามฉันรู้สึกว่ารหัสนี้น่าเกลียดและสงสัยว่ามีวิธีที่ง่ายกว่าในการทำสิ่งที่ฉันไม่ได้คิดหรือ นี่คือโค้ดของฉันตอนนี้: if (GamePad.GetState(PlayerIndex.One).IsConnected) { var buttonList = new List<Buttons>() { {Buttons.A}, {Buttons.B}, {Buttons.Y}, {Buttons.X}, {Buttons.Start}, {Buttons.Back}, {Buttons.RightShoulder}, {Buttons.LeftShoulder}, {Buttons.RightTrigger}, {Buttons.LeftTrigger} }; foreach (var button in buttonList) { if (GamePad.GetState(PlayerIndex.One).IsButtonDown(button)) ExitMainMenu= true; } }
10 xna  monogame 

2
ปัญหาเกี่ยวกับคอมไพล์ในโครงการเอกภาพ
ฉันพยายามควบคุมเวอร์ชันโฟลเดอร์โครงการด้วย git เมื่อมาถึงดึงโครงการจากพื้นที่เก็บข้อมูลบางอย่างผิดปกติ: ดูเหมือนว่าสคริปต์จะหายไปและ prefab และชนิดขององค์ประกอบกราฟิกทั้งหมดดูเหมือนจะเป็นสีชมพู ใครบ้างรู้วิธีแก้ไขปัญหานี้หรือไม่ นี่คือ. gignignore ที่ฉันใช้ในขณะนี้: Temp/ Obj/ UnityGenerated/ Library/ ExportedObj/ *.svd *.userprefs *.csproj *.pidb *.suo *.sln *.user *.unityproj *.booproj .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes Icon? ehthumbs.db Thumbs.db ขอบคุณล่วงหน้า.
10 unity  git 

2
แสงที่ถูกต้องเกี่ยวกับร่างกายคืออะไร?
ฉันไม่พบข้อมูลใด ๆ ที่ครอบคลุมโดยใช้ Google ฉันสงสัยว่าแนวคิดหลักของการให้แสงที่ถูกต้องทางร่างกายคืออะไรและฉันจะอ่านได้ที่ไหน แสงที่ถูกต้องเกี่ยวกับร่างกายคืออะไร? พงษ์ส่องสว่างโดยทั่วไปแล้วร่างกายไม่ถูกต้อง?
10 lighting  pbr 

1
ฉันจะนำเงา 2D มาใช้ระหว่างเลเยอร์ได้อย่างไร
ฉันจะใช้เงา 2 มิติที่ถูกโยนโดยวัตถุในเลเยอร์อื่นได้อย่างไร ไม่ชอบแสงแบบไดนามิกในบทช่วยสอนที่รู้จักกันดีจาก Catalin Zima : แต่ชอบเงาของท่อในวิดีโอนี้ : และชอบเงาของแพลตฟอร์มและตัวละครในวิดีโอนี้ : ฉันต้องการใช้แสงชนิดเดียวกันในฉากที่มีหลายเลเยอร์และแสงจำนวนมากที่มีสีต่างกัน ฉันสามารถจินตนาการได้ว่าทำได้โดยการวาดสำเนาเลเยอร์สีดำเหนือเลเยอร์ที่อยู่ด้านหลังเลเยอร์นั้นและทำการปรับตามรูในเลเยอร์ที่เงาถูกส่ง แต่ฉันหวังว่าจะมีวิธีที่ใช้พิกเซลราคาประหยัดสำหรับวิธีนี้

3
ฉันจะทำสิ่งที่ฉันแฟลช / กะพริบบ่อยขึ้นเมื่อมันเข้าใกล้หายไปได้อย่างไร
ในเกมของฉันเมื่อคุณฆ่าศัตรูพวกเขาอาจทิ้งอะไรบางอย่างเช่นชุดสุขภาพหรือทอง ฉันต้องการให้สิ่งนี้มีเวลา จำกัด เพื่อที่ว่ามันจะหายไปในที่สุดหากคุณไม่มารับ ฉันต้องการให้ไอเท็มกระพริบบ่อยครั้งยิ่งการเข้าใกล้ "ความตาย" ใกล้เคียงยิ่งขึ้น คุณทำอัลกอริธึม "กะพริบบ่อยขึ้น" ได้อย่างไร

2
ฉันจะทำให้ภูมิประเทศแบนราบภายใต้วัตถุของเกมได้อย่างไร
ฉันมีสคริปต์ที่ทำให้วัตถุภูมิประเทศและวาดด้วยพื้นผิว แต่ฉันมีปัญหา เมื่อฉันพยายามวางวัตถุของเกม (เช่นวัตถุน้ำอย่างง่าย ๆ ที่เป็นเอกภาพ) ฉันใช้ Raycast เพื่อกำหนดความสูงที่ถูกต้องในการวางวัตถุของเกม ฉันจะแบนราบเกี่ยวกับภูมิประเทศใต้วัตถุเกมอย่างไรเพื่อไม่ให้เข้าไปในภูมิประเทศหรือออกไปเที่ยวในอากาศในกรณีของเนินเขา
10 unity 

1
วิธีทำให้แน่ใจว่าเกมจะแล้วเสร็จ
ฉันไม่แน่ใจว่ามีการอธิบายคำที่ถูกต้องสำหรับสิ่งที่ฉันกำลังมองหาดังนั้นขออภัยหากนี่เป็นคำถามที่ซ้ำกัน แต่มีคำศัพท์ / อัลกอริทึมสำหรับการทำให้แน่ใจว่าเกมนั้น "สมบูรณ์" ที่เกี่ยวข้องกับนัก scroller ที่ไม่มีที่สิ้นสุด สิ่งที่ฉันหมายถึงโดยสมบูรณ์คือถ้าฉันมีเกมที่ผู้ใช้ต้องกระโดดขึ้นบล็อกในขณะที่หน้าจอพยายามตามพวกเขาฉันจะมั่นใจได้อย่างไรว่ามีบล็อกใหม่ที่ผู้ใช้สามารถเข้าถึงได้ ทฤษฎีข้ามไป ฉันรู้ในทางทฤษฎีแล้วฉันจะตรวจสอบว่าผู้ใช้สามารถกระโดดได้สูงแค่ไหนและตรวจสอบให้แน่ใจว่ามีบล็อกอยู่ในอุ้งมือนั้น แต่มีอะไรอีกบ้างไหม คือการหลีกเลี่ยงการตรวจสอบราคาแพงเมื่อวางบล็อกใหม่เพื่อให้แน่ใจว่าไม่ทับซ้อนกัน ฯลฯ ฉันกำลังดู html5 / js โดยเฉพาะ แต่ฉันสงสัยว่ามีคำสำหรับอัลโกหรือประเภทเฉพาะที่ฉันสามารถตรวจสอบได้หรือไม่? ขอบคุณ

2
OpenGL รับร่างของวัตถุที่ทับซ้อนกันหลายรายการ
ฉันเพิ่งมีความคิดเกี่ยวกับเกมที่กำลังทำของฉันที่ทำด้วย opengl ใน c ++: ฉันต้องการมีโครงร่างขนาดใหญ่ (5-6 พิกเซล) บนวัตถุที่ทับซ้อนกันหลายอย่างเมื่อผู้เล่นชนะบางสิ่ง ฉันคิดว่าวิธีที่ดีที่สุดคือการใช้ stencil buffer แต่ไม่กี่ชั่วโมงที่ฉันพยายามทำการเรนเดอร์แบบปิดหน้าจอของ stencil buffer และฉันไม่สามารถบรรลุผลลัพธ์ใด ๆ มีเทคนิคอื่น ๆ ! นี่คือสิ่งที่ฉันต้องการได้รับ: ความคิดใด ๆ
10 opengl  outline 

1
ไปป์ไลน์การแสดงผลของเครื่องยนต์
ฉันพยายามสร้างเอ็นจิ้นเกม 2D โดยใช้ OpenGL ES 2.0 (iOS สำหรับตอนนี้) ฉันได้เขียนเลเยอร์แอปพลิเคชันใน Objective C และแยกตัวเองบรรจุ RendererGLES20 ใน C ++ ไม่มีการโทรเฉพาะ GL นอกสายแสดงภาพ มันทำงานได้อย่างสมบูรณ์ แต่ฉันมีปัญหาการออกแบบเมื่อใช้ shaders Shader แต่ละตัวมีคุณสมบัติและเครื่องแบบที่เป็นเอกลักษณ์ของตัวเองซึ่งจำเป็นต้องตั้งค่าก่อนการเรียกสายหลัก (glDrawArrays ในกรณีนี้) ตัวอย่างเช่นในการวาดรูปทรงเรขาคณิตฉันจะทำ: void RendererGLES20::render(Model * model) { // Set a bunch of uniforms glUniformMatrix4fv(.......); // Enable specific attributes, can be many glEnableVertexAttribArray(......); // Set a …

4
การทำแผนที่ปกติใช้งานได้จริงอย่างไร
ฉันพยายามเข้าใจแนวคิดของการทำแผนที่ปกติ แต่ฉันสับสนกับบางสิ่ง ในระยะสั้นฉันไม่แน่ใจว่าแผนที่ปกติขึ้นอยู่กับจุดชมวิวหรือไม่ (เช่นคุณจะได้รับแผนที่ปกติที่แตกต่างจากวัตถุเดียวกันเมื่อคุณหมุนรอบ ๆ หรือไม่) ประการที่สองฉันไม่เข้าใจว่าทำไมสีฟ้าจึงเป็นสีเด่นในแผนที่ปกติ ฉันคิดอย่างไรเกี่ยวกับบรรทัดฐานและความสัมพันธ์ของพวกเขากับสี RGB มีดังนี้ หน่วยทรงกลมแสดงถึงหน่วยปกติใด ๆ ที่เป็นไปได้ - กล่าวอีกนัยหนึ่งส่วนประกอบ X, Y และ Z ของเวกเตอร์ปกติหน่วยตั้งแต่ -1 ถึง 1 ส่วนประกอบของสี RGB ทั้งหมดอยู่ระหว่าง 0 ถึง 255 ดังนั้นจึงเหมาะสม ไปที่แผนที่ -1 (องค์ประกอบปกติ) ถึง 0 (องค์ประกอบสี), 0 ถึง 127 หรือ 128 และ 1 ถึง 255 ค่าใด ๆ ที่อยู่ระหว่างนั้นจะถูกประมาณเชิงเส้น การนำการแมปนี้ไปใช้กับบรรทัดฐานของวัตถุ 3 …

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