การพัฒนาเกม

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

6
การเรนเดอร์ tilemap ที่ไร้รอยต่อ (ภาพที่อยู่ติดกันแบบไร้ขอบ)
ฉันมีเอ็นจิ้นเกม 2D ที่ดึงแผ่นกระเบื้องโดยการวาดแผ่นจากภาพชุดไพ่ เนื่องจากตามค่าเริ่มต้นแล้ว OpenGL สามารถห่อทั้งพื้นผิว ( GL_REPEAT) และไม่ได้เป็นส่วนหนึ่งของมันเท่านั้นไทล์แต่ละอันจึงแยกออกเป็นพื้นผิวแยกต่างหาก จากนั้นพื้นที่ของไทล์เดียวกันจะแสดงผลติดกัน นี่คือสิ่งที่ดูเหมือนว่าเมื่อทำงานตามที่ตั้งใจไว้: อย่างไรก็ตามทันทีที่คุณแนะนำการปรับสัดส่วนแบบตะเข็บปรากฏ: ทำไมสิ่งนี้ถึงเกิดขึ้น ฉันคิดว่าเป็นเพราะการกรองเชิงเส้นเป็นการผสมผสานเส้นขอบของคณะสี่คน แต่มันก็ยังคงเกิดขึ้นกับการกรองแบบจุด วิธีแก้ปัญหาเดียวที่ฉันพบคือการรับประกันว่าการวางตำแหน่งและการปรับขนาดทั้งหมดจะเกิดขึ้นที่ค่าจำนวนเต็มและใช้การกรองแบบจุดเท่านั้น สิ่งนี้สามารถลดคุณภาพการมองเห็นของเกม (โดยเฉพาะการวางตำแหน่งพิกเซลย่อยไม่ทำงานอีกต่อไปดังนั้นการเคลื่อนไหวจะไม่ราบรื่น) สิ่งที่ฉันได้ลอง / พิจารณา: การลดรอยหยักจะลด แต่ไม่ได้กำจัดรอยตะเข็บทั้งหมด การปิดการทำแผนที่ไม่มีผล เรนเดอร์แต่ละแผ่นแยกกันและขับขอบ 1px - แต่นี่เป็นการลดประสิทธิภาพเนื่องจากมันไม่สามารถแสดงพื้นที่ของกระเบื้องได้ในคราวเดียวและสร้างสิ่งประดิษฐ์อื่น ๆ ตามขอบของพื้นที่โปร่งใส เพิ่มเส้นขอบ 1px รอบ ๆ รูปภาพต้นทางและทำซ้ำพิกเซลสุดท้าย - แต่จากนั้นจะไม่มีกำลังไฟสองอีกต่อไปทำให้เกิดปัญหาความเข้ากันได้กับระบบที่ไม่มีการสนับสนุน NPOT การเขียน shader ที่กำหนดเองเพื่อจัดการกับภาพที่มีการเรียงต่อกัน - แต่แล้วคุณจะทำอะไรที่แตกต่างออกไป? GL_REPEATควรจับพิกเซลจากด้านตรงข้ามของภาพที่ขอบและไม่เลือกความโปร่งใส เรขาคณิตอยู่ติดกันอย่างแน่นอนไม่มีข้อผิดพลาดในการปัดเศษจุดลอยตัว ถ้า Shader ส่วนจะเขียนยากที่จะกลับมามีสีเดียวกันตะเข็บหายไป ถ้าพื้นผิวมีการกำหนดให้GL_CLAMPแทนGL_REPEAT, ตะเข็บหายไป …

2
Billboarding คืออะไรและสามารถ / ควรใช้ในเกม 3D เพื่อสร้างเอฟเฟกต์พิเศษสำหรับเอฟเฟกต์การระเบิดอาวุธหรือไม่?
Billboarding คืออะไรและสามารถหรือควรใช้เพื่อสร้างเอฟเฟกต์พิเศษสำหรับเกม 3D เกี่ยวกับเอฟเฟกต์การระเบิดอาวุธ

4
“ การพัฒนาเครื่องมือคืออะไร”
ฉันได้ดูงานที่แตกต่างกันในอุตสาหกรรมเกมและงานที่ฉันเห็นโฆษณามากมายอยู่ในตำแหน่ง "Tool Developer" ฉันไม่รู้ว่านี่คืออะไร ใครช่วยอธิบายสิ่งนี้ให้ฉันหน่อยได้ไหม? และถ้าใครมีลิงค์ไปยังเนื้อหาที่จะช่วยให้ฉันเข้าใจมันมากกว่านี้ก็จะได้รับการชื่นชมอย่างมาก

3
ฉันจะรักษารูปแบบสี่เหลี่ยมเมื่อเพิ่มหรือลบหน่วยได้อย่างไร
ฉันมีบ็อตในรูปแบบสี่เหลี่ยมผืนผ้าที่มีแถวและคอลัมน์ ปัญหาเกิดขึ้นเมื่อบอทถูกเพิ่มหรือลบออกจากการสร้าง เมื่อสิ่งนี้เกิดขึ้นบอตจะต้องจัดเรียงตัวเองใหม่เพื่อให้การก่อตัวของรูปสี่เหลี่ยมผืนผ้ายังคงอยู่ในอัตราส่วนเดียวกันโดยประมาณและเป็นรูปสี่เหลี่ยมเท่าที่จะทำได้ ทำอย่างไร ความคิดบางอย่าง: เมื่อบอตถูกเพิ่มหรือลบให้ใช้จำนวนบอทใหม่ทั้งหมดและอัตราส่วนภาพคงที่ที่ต้องการเพื่อคำนวณความกว้างและความสูงใหม่ของการก่อตัวที่ใกล้เคียงที่สุดกับอัตราส่วนภาพนั้น จากนั้นจึงสลับสับเปลี่ยนบ็อตให้พอดีกับมิติใหม่ เมื่อบอทถูกลบออกให้ย้ายบอทที่อยู่ด้านหลังเข้าไปในที่ของมันและทำต่อไปจนกว่าจะถึงจุดสิ้นสุดของการก่อตัว จากนั้นให้ทำการจัดอันดับย้อนหลังให้มากที่สุดเท่าที่จะทำได้โดยการสับบอทในอันดับหลัง ความคิดที่แตกต่างอย่างสิ้นเชิงคือการเลียนแบบโครงสร้างของโมเลกุลที่อยู่ร่วมกัน ทำให้บอททุกคนต้องการล้อมรอบด้วยบ็อตอีกสี่ตัวด้วยการดึงดูดบอทที่อยู่ใกล้ที่สุดทั้งสี่และป้องกันส่วนที่เหลือ ขับไล่บ็อตทั้งหมด (รวมถึงสี่) ที่อยู่ใกล้เกินไปเพื่อให้แน่ใจว่าแยกโดยใช้กฎหมายกำลังสองผกผัน คุณต้องการแรงเพิ่มเติมในการสร้างรูปร่างของโครงสร้างทั้งหมด แต่มันฟังดูแพงมาก UPDATE : ดังนั้นเมื่อพิจารณาถึงคำตอบของซาร่าห์ฉันจึงมีฟังก์ชั่นทั่วไปที่ดีซึ่งให้มิติที่ดี แรกฉันแก้ไขสมการด้านล่างพร้อมกันสำหรับความกว้างและความสูงแล้วปัดคำตอบ width/height=aspect ratio of your choice width*height=number of bots สิ่งนี้จะช่วยให้คุณได้สัดส่วนจำนวนเต็มที่ใกล้เคียงที่สุดกับอัตราส่วนนั้นสำหรับจำนวนบอทของคุณ สี่เหลี่ยมจัตุรัสที่ใกล้เคียงที่สุดจะครึ่งหนึ่งมีขนาดใหญ่เกินไปและครึ่งเวลาเล็กเกินไป (แน่นอนว่าบางครั้งมันอาจจะถูกต้อง แต่ใครสนใจพวกนั้น) ในกรณีที่รูปสี่เหลี่ยมผืนผ้ามีขนาดใหญ่เกินไปเล็กน้อยไม่จำเป็นต้องทำสิ่งใด อันดับหลังจะจบลงด้วยการเกือบเต็มซึ่งเป็นอุดมคติ ในกรณีที่สี่เหลี่ยมผืนผ้าเป็นเล็ก ๆ น้อย ๆที่มีขนาดเล็กเกินไปคุณมีปัญหาเพราะที่เล็กล้นขนาดเล็กจะต้องไปในการจัดอันดับของตัวเองสร้างขึ้นตำแหน่งที่มีเพียงไม่กี่บอทกับมันซึ่งไม่ได้ดูสวย นอกจากนี้ยังมีกรณีที่ความแตกต่างมีขนาดใหญ่(ใหญ่กว่าความกว้างครึ่งหนึ่ง) ซึ่งในกรณีนี้จะเพิ่มหรือลบอันดับหนึ่งเพื่อสร้างความแตกต่างเล็ก ๆ จากนั้นเมื่อสี่เหลี่ยมผืนผ้าเล็กเกินไปให้เพิ่มหนึ่งคอลัมน์เพื่อทำให้ใหญ่ขึ้นอีกหน่อย หลังจากทำแล้วดูเหมือนว่าอันดับหลังจะมีอย่างน้อยครึ่งบอทมากพอ ๆ กับอันดับอื่น ๆ UPDATE เมื่อคุณได้มิติแล้วให้เปรียบเทียบกับมิติปัจจุบัน หากด้านหน้าของมิติใหม่ใหญ่กว่าสำหรับทุก ๆ …

12
ฉันจะมั่นใจได้อย่างไรว่าชิ้นส่วนของรหัสทำงานเพียงครั้งเดียว
ฉันมีรหัสบางอย่างที่ฉันต้องการเรียกใช้เพียงครั้งเดียวแม้ว่าสถานการณ์ที่เรียกรหัสนั้นอาจเกิดขึ้นหลายครั้ง ตัวอย่างเช่นเมื่อผู้ใช้คลิกเมาส์ฉันต้องการคลิกสิ่ง: void Update() { if(mousebuttonpressed) { ClickTheThing(); // I only want this to happen on the first click, // then never again. } } อย่างไรก็ตามด้วยรหัสนี้ทุกครั้งที่ฉันคลิกเมาส์สิ่งที่ได้รับการคลิก ฉันจะทำให้มันเกิดขึ้นเพียงครั้งเดียวได้อย่างไร

2
การใช้ C ++ 11 สำหรับการพัฒนา Game Engine ข้ามแพลตฟอร์ม
หมายเหตุ:นี่ไม่ใช่คำถาม 'ให้ความเห็นของคุณ' เกี่ยวกับ C ++ 03 และ C ++ 11 เอ็นจิ้นเกมของเราเขียนด้วย C ++ 03 ออกแบบมาเพื่อรวบรวมบน Windows, OSX และ iOS การสนับสนุน Linux มีการวางแผนสำหรับ (มาก) ในอนาคตอันใกล้ ประสบการณ์ของเรามี จำกัด เมื่อพูดถึงคอนโซลซึ่งเป็นสาเหตุที่ฉันถามคำถามนี้ ขณะนี้เรากำลังถกเถียงกันว่าการเปลี่ยนไปใช้ C ++ 11 และการใช้คุณสมบัติที่ไม่เข้ากันได้ของมาตรฐาน C ++ 11 อาจมีปัญหาในอนาคตอันใกล้นี้หรือไม่เมื่อเราจำเป็นต้องย้ายเครื่องยนต์ของเราไปยังคอนโซลคอนโซลปัจจุบัน คอมไพเลอร์ที่สนับสนุนโดยคอนโซลบางตัวยังไม่สนับสนุน C ++ 11 ใช่ไหมเราไม่รู้ ... ) ดังนั้นนักพัฒนาเกมที่มีประสบการณ์ในหลายแพลตฟอร์มและคอนโซลคุณคิดว่าเราควรติดกับ C ++ 03 จนกว่าคอนโซลรุ่นใหม่จะมาถึงและทุกคนส่วนใหญ่เปลี่ยนไปใช้มาตรฐาน C ++ …


4
ทำไม MMORPG ยังคงใช้เซิร์ฟเวอร์หลายเครื่อง
MMORPGs, MOBA บางอย่างเช่น League of Legends หรือ StarCraft 2 มักจะบังคับให้คุณเลือกเซิร์ฟเวอร์ โดยปกติแล้วพวกเขาคือ US, EU และ SEA ใน MMORPG หลายแห่งต่อสถานที่ ฉันเห็นได้ว่ามีความจำเป็นเมื่อสองสามปีที่แล้ว แต่ตอนนี้ด้วย AWS และข้อเสนอที่คล้ายกันซึ่งทำให้คุณสามารถปรับขนาด "พลังงานของเซิร์ฟเวอร์" ได้อย่างราบรื่นทำไมจึงยังมีเซิร์ฟเวอร์แยกกัน รถไฟแห่งความคิดของฉันเป็นเช่นนี้ (ใช้ Star Wars: The Old Republic เป็นตัวอย่าง): - คุณมักจะอยู่บนดาวเคราะห์ดวงหนึ่งเสมอ "อินสแตนซ์" ที่แยกได้จากดาวเคราะห์ดวงอื่น - หากมีคนจำนวนมากเกินไปบนดาวเคราะห์ดวงเดียว SW: TOR สร้างตัวอย่างใหม่ของโลกและทำให้ผู้เล่นอยู่ในนั้น - หากคุณออกจากโลก / สลับอินสแตนซ์คุณมีหน้าจอโหลด เหตุใดเกมจึงไม่สามารถสร้างอินสแตนซ์สำหรับโลกนี้ได้ ตัวอย่างนี้ (และมีเพียงอันนี้เท่านั้น) ที่มีข้อมูลปัจจุบันของคุณในฐานข้อมูลและจัดการผู้เล่น x …
18 architecture  mmo 

3
ไฟล์โครงการ libgdx ใดที่ฉันสามารถละเว้นจากการควบคุมเวอร์ชันได้
ในโครงการ libgdx ที่สร้างขึ้นโดยอัตโนมัติไฟล์ใดที่ฉันสามารถบอก Git (หรือระบบควบคุมการแก้ไขอื่น ๆ ) ให้ละเว้นได้อย่างปลอดภัย? ฉันกำลังพิจารณาสิ่งเหล่านี้: *-android/.settings/ *-android/bin/ *-desktop/.settings/ *-desktop/bin/ *-html/.settings/ *-html/gwt-unitCache/ *-html/war/WEB-INF/classes/ *-html/war/WEB-INF/deploy/ *-html/war/assets/ *-html/war/ */.settings/ */bin/ ฉันหายไปบ้างไหม มีรายการที่สมบูรณ์ที่ไหนสักแห่ง?

1
ฉันจะตรวจจับหิ้ง ledges ได้อย่างไร
ในเกมของฉันฉันต้องการให้ตัวละครของฉันสามารถคว้าและนำมาไว้บนหิ้งได้และสามารถดึงตัวเองขึ้นมาได้ถ้ามีที่ว่างให้ทำ ฉันจะตรวจสอบได้อย่างไรว่ามีหิ้งและถ้าตัวละครมีพื้นที่เพียงพอที่จะปีนขึ้นไป
18 physics 

7
ฉันต้องการวัตถุจุดและเวกเตอร์หรือไม่ หรือเพียงแค่ใช้วัตถุ Vector เพื่อแสดงว่าเป็นจุดหรือไม่
การสร้างส่วนประกอบของเครื่องยนต์ที่ฉันกำลังพัฒนาพร้อมกับเพื่อน (จุดประสงค์การเรียนรู้) ฉันมาถึงข้อสงสัยนี้ ตอนแรกเรามีตัวสร้าง Point ดังต่อไปนี้: var Point = function( x, y ) { this.x = x; this.y = y; }; แต่พวกเขาเราเริ่มเพิ่มคณิตศาสตร์เวกเตอร์ลงไปและพวกเขาตัดสินใจเปลี่ยนชื่อเป็น Vector2d แต่ตอนนี้วิธีการบางอย่างค่อนข้างสับสน (อย่างน้อยในความคิดของฉัน) เช่นต่อไปนี้ซึ่งใช้ในการสร้างบรรทัด: //before the renaming of Point to Vector2, the parameters were startingPoint and endingPoint Geometry.Line = function( startingVector, endingVector ) { //... }; ฉันควรสร้างนวกรรมิกเฉพาะสำหรับวัตถุ Point …

2
ฉันจะสร้างตาข่ายนำทางสำหรับตารางย่อยได้อย่างไร
ฉันยังไม่ได้เริ่มเขียนโปรแกรมสำหรับอันนี้ แต่ฉันต้องการที่จะดูว่าฉันจะทำอย่างไรต่อไป สมมติว่าฉันมีตารางของกระเบื้องขนาดเท่ากันทั้งหมดที่ผ่านได้และบางอันไม่มี ฉันจะสร้างโครงข่ายการนำทางของรูปหลายเหลี่ยมจากกริดนี้ได้อย่างไร ความคิดของฉันคือการนำกระเบื้องที่ไม่สามารถผ่านได้และขยายเส้นจากขอบเพื่อสร้างรูปหลายเหลี่ยม ... นั่นคือทั้งหมดที่ฉันได้รับ คำแนะนำใด ๆ?

2
วิธีผสมผสานกล้องสองตัวเมื่อเดินทางผ่านพอร์ทัลใน Unity3D
ก่อนที่ฉันจะมาถึงคำถามของฉันฉันรู้ว่าวิธีแก้ปัญหาที่ชัดเจนที่สุดคือการใช้ rect port view ปกติ แต่ฉันต้องการรูปทรงที่ซับซ้อนมากกว่า rectangle และฉันได้ดูการใช้ rect port view และดูเหมือนจะไม่ เป็นทางออกของฉัน แก้ไข: บางคนสับสนกับคำถามของฉันให้ฉันเข้าไปดูรายละเอียดอีกสักหน่อย สิ่งที่เกิดขึ้นคือเมื่อผู้เล่นย้ายไปยังพอร์ทัลหนึ่งฉันสร้างตัวควบคุม FPS ของโคลนและย้ายออกจากที่อื่น มันให้กล้องสองตัวกับฉันและมุมมองที่คุณเห็นทางด้านขวาด้านบน มันเป็นเพียงการแสดงกล้องหนึ่งตัวและตัดผ่านพอร์ทัล สิ่งที่ฉันต้องการคือสิ่งที่คล้ายกับสิ่งนี้ที่กล้องผสมผสานเพื่อสร้างภาพลวงตาของการเปลี่ยนแปลงที่ราบรื่น สิ่งที่ฉันต้องการจะทำคือลบทุกอย่างจากภาพตัวตรวจสอบสีเขียวไปทางซ้ายในภาพด้านล่างและแทนที่ด้วยกล้องตัวอื่น วิธีนี้ทำให้คุณได้รับมุมมองของกล้อง A ที่พุ่งออกมาจากพอร์ทัลผสมผสานกับมุมมองของกล้อง B ที่พุ่งออกมาจากพอร์ทัลอื่นเพื่อให้ได้ภาพที่สมบูรณ์หนึ่งภาพ และในขณะที่คุณเคลื่อนที่ผ่านพอร์ทัลการเปลี่ยนแปลงที่ตัดจะเหมาะสม ฉันออกแบบระบบพอร์ทัลฉันมีทุกอย่างลงรวมถึงการให้ผู้เล่นเลื่อนผ่านพอร์ทัลได้อย่างราบรื่น ปัญหาหลักของฉันตอนนี้คือการทำให้เอฟเฟกต์การผสมผสานของกล้องทำงานได้ดี ฉันต้องการกล้องสองตัวที่ผสมผสานกันอย่างไร้รอยต่อราวกับว่าคุณแหย่ผ่านหน้าประตู และมันไม่เพียงแค่เป็นสี่เหลี่ยมมันต้องจับคู่ แต่ผู้เล่นมองผ่านพอร์ทัล เป้าหมายที่ดีที่สุดของฉันในตอนนี้คือการฉายหน้ากากลึกลงไปในแต่ละพอร์ทัลจากนั้นสร้างกล้องจากพอร์ทัลที่คุณกำลังเดินทางให้ลึกเท่านั้น จากนั้นก็ผสมกล้องสองตัวเข้าด้วยกัน ปัญหาหลักของฉันคือการหาวิธีที่ฉันทำสิ่งนี้วิธีการทำให้กล้องตัวที่สองแสดงเฉพาะสิ่งที่อยู่นอกพอร์ทัล หากคุณสามารถให้ความคิดกับฉันหรืออธิบายว่าฉันจะทำอย่างไรกับ shader หน้ากากแบบลึกที่จะช่วยได้มาก ฉันจะดำเนินการต่อในเรื่องนี้และอัปเดตเมื่อฉันฝ่าฝืน
18 c#  unity  camera  valve  portals 

6
Vector3 ควรสืบทอดจาก Vector2 หรือไม่
ฉันกำลังสร้างคู่ของชั้นเรียนVector2(X & Y) และVector3(X, Y และ Z) แต่ผมไม่ทราบว่าจะทำให้การVector3สืบทอดมาจากVector2หรือไม่ว่าการดำเนินการอีกครั้งตัวแปรสมาชิกm_xและm_yอีกครั้ง? ข้อดีและข้อเสียของแต่ละด้านคืออะไร แก้ไข:ฉันใช้ C ++ (VS2010)
18 c++  architecture 

2
ฉันสามารถหาเทมเพลตนโยบายความเป็นส่วนตัวฟรีได้ที่ไหน
ฉันมาถึงจุดสำคัญในการพัฒนาที่ฉันคิดว่าฉันควรดูแลบางสิ่งที่ "ปิดก้นของฉัน" โดยเฉพาะฉันกำลังมองหาตัวอย่างหรือเทมเพลตฟรีสำหรับคำว่า "ข้อกำหนดในการให้บริการ / ใช้" และ "นโยบายความเป็นส่วนตัว" จริง ๆ แล้วฉันมีปริญญาทางด้านกฎหมายและมีความรู้เกี่ยวกับทรัพย์สินทางปัญญาสัญญา ฯลฯ อย่างไรก็ตามมันจะดีกว่าเสมอที่จะไม่พลิกโฉมวงล้อด้วยเอกสารสำเร็จรูปประเภทอุตสาหกรรมเหล่านี้ ฉันไม่พบคำตอบนี้ที่ใดก็ได้บนไซต์นี้หรือไซต์ StackExchange อื่น ๆ ในบรรดาไซต์ที่ดูถูกกฎหมายฉันพบเฉพาะแม่แบบที่จ่ายเงินเท่านั้น ไม่มีใครรู้เว็บไซต์ที่ดีที่มีแม่แบบเหล่านี้ได้ฟรีหรือไม่ ฉันสามารถแก้ไขเกมทั่วไปได้ถ้าจำเป็น แต่มันจะเป็นการดีที่สุดถ้ามีบางเกมที่เหมาะสำหรับเกมออนไลน์ UPDATE ทรัพยากรที่มีแนวโน้มที่ฉันพบมี: ตัวสร้างนโยบายความเป็นส่วนตัวของ TRUSTe: http://www.truste.com/technology/#labs ฉันคิดว่าคุณควรจะจ่ายเพื่อใช้ตราประทับ TRUSTe หรืออะไรบางอย่าง แต่นั่นไม่ได้หยุดคุณจากการใช้สิ่งนี้เป็นจุดเริ่มต้น ฉันเดาว่ามันอาจช่วยอ่าน TOS แรกของพวกเขา (LoL) TOS กฎหมายแม่น้ำ / นโยบายความเป็นส่วนตัวกำเนิด: http://terms-of-service-generator.legalriver.com/ http://privacy-policy-generator.legalriver.com/ สำหรับตอนนี้ฉันจะเริ่มต้นด้วยสิ่งเหล่านี้และทำใหม่ตามความต้องการของฉัน จะยังคงชอบที่จะได้ยินถ้าใครรู้ดีกว่าหนึ่งเหมาะกับเกมออนไลน์

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