การพัฒนาเกม

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

3
UnityEngine.Random และ System.Random แตกต่างกันอย่างไร
ความแตกต่างระหว่างนี้คืออะไร int randomNumber = UnityEngine.Random.Range(0, 10); และนี่ // on top of the class private System.Random _rnd = new System.Random(); // inside a methode of the same class int randomNumber = _rnd.Next(0, 10); ฉันรู้ว่าSystem.Randomจะต้องมีการเริ่มต้นด้านบนของชั้นเรียนของคุณโดยUnityEngine.Randomไม่จำเป็นต้องมี ฉันรู้ว่ายังSystem.Randomทำงานร่วมกับ "นาฬิกา" ฝึกงานและหมายเลข "สุ่ม" จะขึ้นอยู่กับที่ คำถามของฉันตอนนี้มีความแตกต่างอื่น ๆ ระหว่างUnityEngine.RandomและSystem.Randomกับรหัสแม่มดจะดีกว่าที่จะใช้สำหรับโครงการความสามัคคี?
24 unity  c#  random 

3
วิธีที่ดีที่สุดในการปิดบังสไปรต์ 2D ใน XNA
ฉันกำลังพยายามปกปิดผีสางบ้าง แทนที่จะอธิบายเป็นคำฉันได้สร้างภาพตัวอย่าง: บริเวณที่สวมหน้ากาก (สีขาว) ทีนี้สไปรท์สีแดงที่ต้องถูกครอบตัด ผลสุดท้าย ตอนนี้ฉันทราบแล้วว่าใน XNA คุณสามารถทำสองสิ่งเพื่อบรรลุเป้าหมายนี้: ใช้ Buffer ฉลุ ใช้ Pixel Shader ฉันได้ลองทำพิกเซลเชดเดอร์ซึ่งทำสิ่งนี้เป็นหลัก: float4 main(float2 texCoord : TEXCOORD0) : COLOR0 { float4 tex = tex2D(BaseTexture, texCoord); float4 bitMask = tex2D(MaskTexture, texCoord); if (bitMask.a > 0) { return float4(tex.r, tex.g, tex.b, tex.a); } else { return float4(0, 0, …
24 xna  2d  hlsl  masking 

9
เมื่อทำการแมปพื้นผิวของทรงกลมด้วยกระเบื้องคุณจะจัดการกับการบิดเบือนขั้วโลกอย่างไร
มันง่ายที่จะจัดการกับวิธีการที่สถานที่ทำงานบนกริดคาร์ทีเซียนที่สะอาด มันเป็นแค่คณิตศาสตร์วานิลลา และคุณสามารถเพิกเฉยต่อเรขาคณิตของพื้นผิวทรงกลมสำหรับมันถ้าคุณต้องการที่จะตัดเสาหรืออะไรบางอย่าง แต่ฉันยังคงคิดไอเดียสำหรับเกมที่พื้นที่ขั้วโลกสำคัญ ARG ที่กำหนดรหัสตามภูมิศาสตร์และโร๊คไลค์และสิ่งของทั่วโลก ฉันต้องการที่ตั้งจตุรัส (ish?) - สามารถแสดงได้อย่างมีเหตุผลด้วยกระเบื้องสี่เหลี่ยมที่มีขนาดเท่ากันทั่วโลก นี่จะต้องเป็นปัญหาที่แก้ไขแล้วใช่มั้ย การแก้ปัญหาคืออะไร? การทางพิเศษแห่งประเทศไทย: ที่เส้นศูนย์สูตร - และสมมติว่าสถานที่ตั้งของคุณมีขนาดเล็กพอสมควรมันใกล้พอที่จะเป็นจริงที่คุณสามารถหนีไปได้โดยมีหนึ่งตารางในแถวเหนือและใต้ของแถวเส้นศูนย์สูตรมากที่สุด และคุณอาจหนีไปได้โดยเพียงแค่โบกมือให้ความแตกต่างเป็น 45 องศาหรือมากกว่านั้น แต่ในที่สุดคุณจะต้องมีสี่เหลี่ยมน้อยลงในแถวเส้นรอบวงของผู้คุมขั้วโลก ถ้าฉันลดความยาวของแถวทีละหนึ่งและชดเชยสแควร์สที 1/2 แล้วพวกเขาก็เหมือน hexes และมันค่อนข้างง่ายที่จะทำการเข้ารหัสเพื่อติดตามการเชื่อมต่อ แต่เมื่อคุณได้รับการป้องกันขั้วโลกมันจะรุนแรงขึ้นเรื่อย ๆ การฉายภาพพื้นผิวโลกบนพื้นผิวของลูกบาศก์กำลังดึงดูด แต่ฉันคิดว่าต้องมีวิธีแก้ปัญหาที่หรูหรากว่าที่ใช้อยู่แล้ว ถ้าฉันทำสิ่งที่ลูกบาศก์ (ไม่ตัดผ่าน geodesy) มีข้อดีและข้อเสียที่เกี่ยวข้องกับการวางเสาที่กึ่งกลางของใบหน้าหรือที่จุดสุดยอดของทั้งสามด้าน?

2
เหตุใดบางเกมที่ใช้รูปแบบที่แตกต่างแทนที่จะเป็นแบบดั้งเดิมเพื่อความโปร่งใส
เมื่อเร็ว ๆ นี้ฉันได้เห็นเกมสามมิติ (เช่น:) GTA IVเพื่อใช้การสั่งซื้อบางอย่างเพื่อจำลองความโปร่งใส / อัลฟ่า รูปหลายเหลี่ยมไม่โปร่งใสเหมือนปกติ แต่ให้แสดงพื้นผิวแบบ dithering ที่ค่อยๆสลับจากซ้ายไปขวาเพื่อจำลองความโปร่งใส: เอฟเฟกต์นี้ไม่ได้เป็นที่น่าพอใจ แต่ค่อนข้างน่าแปลกใจที่เห็นในตอนแรก (เทียบกับการผสมแอลฟาแบบดั้งเดิม) ยกเว้นเอฟเฟ็กต์ความสวยงามทางสายตาที่เกิดขึ้นมีเหตุผลอะไรบ้างที่เกมบางเกมทำเช่นนี้ (ประสิทธิภาพที่ดีขึ้นการประหยัดแบนด์วิดท์หรือสิ่งอื่นใดที่ฉันไม่ได้คิดถึง) ฉันค้นหาบนเว็บ แต่ไม่พบสิ่งใดเกี่ยวกับเทคนิคนี้

3
หนังสือฟิสิกส์ที่ดีสำหรับการพัฒนาเกมคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันกำลังมองหาหนังสือเริ่มต้นที่ดีเกี่ยวกับวิชาฟิสิกส์ในการพัฒนาเกม สิ่งที่เน้นเกม 2D น่าจะดีกว่า
23 2d  physics  books 

7
ฉันจะดักจับวัตถุด้วยการเคลื่อนที่เป็นวงกลมได้อย่างไร
ฉันกำลังสร้างเกมอวกาศ 2 มิติและต้องทำให้ยานอวกาศดักจับดาวเคราะห์ ฉันมีรหัสการทำงานสำหรับการสกัดกั้นเส้นตรง แต่ไม่สามารถหาวิธีคำนวณตำแหน่งของดาวเคราะห์ในวงโคจรเป็นวงกลมได้ เกมไม่ถูกต้องทางวิทยาศาสตร์ดังนั้นฉันจึงไม่กังวลเกี่ยวกับความเฉื่อยแรงโน้มถ่วงวงโคจรรูปไข่ ฯลฯ ฉันรู้ตำแหน่งยานอวกาศและความเร็วรวมถึงดาวเคราะห์วงโคจร (Radius) และความเร็ว

1
ฉันจะป้องกันไม่ให้โฆษณาที่ไม่เหมาะสมปรากฏในเกมของฉันได้อย่างไร
เกมของฉันใช้โฆษณา Unity และได้รับการออกแบบโดยคำนึงถึงผู้ชมที่เป็นสากล ด้วยเหตุนี้ฉันจึงไม่ต้องการให้มีโฆษณา 18+ รายการ (หรือโฆษณามากกว่า 13 รายการขึ้นอยู่กับสถานการณ์) โดยเฉพาะอย่างยิ่งเนื่องจากจะดึงดูดผู้ชมที่อายุน้อยกว่าด้วย จากนั้นคำถามของฉันคือฉันจะป้องกันไม่ให้โฆษณาที่ไม่เหมาะสมปรากฏตามอายุได้อย่างไร มีวิธีในการตั้งค่า จำกัด อายุหรือ จำกัด เนื้อหาของโฆษณา Unity หรือไม่ การตั้งค่าเฉพาะตามบรรทัดเหล่านั้นที่ฉันสามารถค้นหาได้คือการสลับ COPPA และนั่นจะทำให้เกิดปัญหาอื่น ๆ (ไม่ต้องพูดถึงว่ามันจะไม่ทำอะไรกับโฆษณา) ฉันได้ดูในแดชบอร์ดมาระยะหนึ่งแล้วและฉันพยายามค้นคว้ามาก่อน แต่ความจริงที่ว่าพวกเขาได้เปลี่ยนไปใช้หน้าบริการส่วนกลางเปลี่ยนเส้นทางการเชื่อมโยงเก่าทั้งหมด (ทำลายพวกเขาในกระบวนการ) จัดระเบียบการตั้งค่าในแดชบอร์ดและ 404d โพสต์คำถามที่พบบ่อยของพวกเขาในหัวข้อไม่ได้ช่วย การปิดกั้นโฆษณาตามการให้คะแนนจะใช้งานได้เช่นกันเพราะฉันจะต้องได้รับเพราะฉันกำลังเผยแพร่ไปยัง Google Play แก้ไข: ลิงค์ที่สองเพียง 404s บางครั้ง ฉันเพิ่งเกิดขึ้นทุกครั้งก่อนถามคำถามนี้ โชคไม่ดีฉันเดา

3
ฉันจะรู้ได้อย่างไรว่าฉันสรุปกราฟิก APIs แน่นเกินไป
เมื่อสร้าง renderer ที่รองรับ API กราฟิกหลายตัวโดยทั่วไปคุณต้องการทำให้โค้ดของคุณในไลบรารีระดับต่ำที่เชื่อมโยงกับ API กราฟิกบางประเภทเช่น OpenGL, Vulkan, D3D11 และอื่น ๆ พวกเขาทำงานแตกต่างกันมากดังนั้นการสร้าง API ทั่วไปที่ดีจึงเป็นสิ่งจำเป็น ฉันได้อ่านแล้วว่าโดยปกติคุณจะต้องการใช้ "แบ็คเอนด์" ที่ใช้ฟังก์ชั่นพื้นฐานสำหรับแต่ละ API ที่คุณต้องการสนับสนุนและ "ฟรอนต์เอนด์" ซึ่งเป็นสิ่งที่โปรแกรมเมอร์ใช้ในการวาดเนื้อหาบน จอภาพ ฉันจะรู้ได้อย่างไรว่าฉันทำสิ่งที่เป็นนามธรรมมากเกินไป?

4
เกม C ++ จัดการกับการจัดสรรหน่วยความจำล้มเหลวได้อย่างไร
ฉันตระหนักถึงหลายเกมที่เขียนด้วย C ++ แต่ไม่ได้ใช้ข้อยกเว้น เนื่องจากการจัดการกับความล้มเหลวในการจัดสรรหน่วยความจำใน C ++ นั้นโดยทั่วไปถูกสร้างขึ้นโดยมีstd::bad_allocข้อยกเว้นเกมเหล่านี้จะจัดการกับความล้มเหลวได้อย่างไร? พวกเขาเพียงแค่ผิดพลาดหรือมีวิธีการจัดการและกู้คืนจากข้อผิดพลาดออกจำ?

2
กล้องเทียบกับวิวพอร์ต
ฉันไม่มีความเข้าใจที่ชัดเจนว่าอะไรคือความแตกต่างระหว่างพิกัดกล้องกับพิกัดวิวพอร์ต ใครช่วยอธิบายหน่อยได้ไหม


1
ฉันจะทำให้ PagedGeometry grass รับเงาได้อย่างไร
ฉันทำสลับไป Ogre3D (v1.7) และเพื่อใช้PagedGeometry สิ่งที่ฉันพยายามทำคือสร้างฉากที่เรียบง่ายด้วยภูมิประเทศต้นไม้และหญ้า โดยสังเขปฉันต้องการบรรลุผลเช่นนี้ใน Ogre: โปร่งใส / คัตเอาท์ถูกนำมาใช้ในการสาธิต PagedGeometry แต่ฉันไม่สามารถหาวิธีแก้ปัญหาเกี่ยวกับวิธีการร่ายเงาบนหญ้าอย่างถูกต้องตามตัวอย่างด้านบน ฉันสามารถใช้เทคนิคใดในการทำสิ่งนี้ให้สำเร็จ

2
สิ่งที่จะส่งไปยังเซิร์ฟเวอร์ในเกม FPS แบบเรียลไทม์?
วิธีที่ถูกต้องในการบอกตำแหน่งของผู้เล่นท้องถิ่นของเราไปยังเซิร์ฟเวอร์คืออะไร? เอกสารบางฉบับบอกว่าเป็นการดีกว่าที่จะส่งอินพุตเมื่อใดก็ตามที่มีการผลิต และเอกสารบางอย่างบอกว่าลูกค้าส่งตำแหน่งในช่วงเวลาที่แน่นอน ด้วยวิธีการส่งอินพุต: ฉันควรทำอย่างไรหากผู้เล่นกดปุ่มทิศทางค้างไว้ มันหมายความว่าฉันต้องส่งแพคเกจไปยังเซิร์ฟเวอร์ในทุก ๆ เฟรม มันไม่มากเกินไปเหรอ? และยังมีการหมุนของผู้เล่นจากอินพุตของเมาส์ นี่คือตัวอย่าง: http://www.gabrielgambetta.com/fpm_live.html สิ่งที่เกี่ยวกับการส่งตำแหน่งในแนวทางช่วงเวลาคงที่ มันส่งข้อความน้อยเกินไปไปยังเซิร์ฟเวอร์ แต่มันยังลดการตอบสนอง แล้วทางไหนดีกว่ากัน?

3
เป็นเรื่องปกติหรือไม่ที่เกมจะใช้ CPU 100%?
ฉันเพิ่งใช้การจัดการอินพุตแบบมัลติเธรดในเอ็นจินเกมของฉันโดยที่โค้ดที่โพลระบบปฏิบัติการเพื่อรวบรวมข้อมูลจากมันและการประทับเวลาจะอยู่ในเธรดแยกต่างหากและแต่ละเฟรมในเธรดหลักฉันกินอินพุตที่รวบรวมไว้ เวลาของเกมลอจิก ทุกอย่างทำงานได้ แต่การตั้งค่านี้ใช้ CPU ของฉัน 100% ฉันมีสองคอร์และเพิ่มขึ้นถึง 100% ในขณะที่รันเกมของฉัน ฉันได้ตรวจสอบกับเกมอื่น ๆ เพื่อดูว่าพวกเขาทำเช่นนั้นหรือไม่ ยกตัวอย่างเช่น Skyrim และ Doom 3 นั้นใช้ได้กับซีพียูมากกว่า 60% เป็นที่ยอมรับหรือไม่สำหรับเกมที่ใช้อินพุตแบบมัลติเธรดเพื่อใช้ CPU 100%? ถ้าไม่เช่นนั้นมีเทคนิคอะไรบ้างที่เกมดังกล่าวใช้เพื่อลดการใช้ cpu โดยเธรดอินพุต?

7
การนำระบบเกียร์มาใช้ในเกมรถยนต์
ฉันกำลังพยายามสร้างเกมรถง่าย ๆ ที่มีการเปลี่ยนเกียร์แบบแมนนวล อย่างไรก็ตามฉันมีปัญหาเล็กน้อยในการเปลี่ยนเกียร์ นี่คือรหัสปัจจุบันของฉันสำหรับ "รถยนต์": int gear = 1; // Current gear, initially the 1st int gearCount = 5; // Total no. of gears int speed = 0; // Speed (km/h), initially 0 int[] maxSpeedsPerGear = new int[] { 40, // First gear max. speed at max. RPM 70, …
23 simulations  car 

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