การพัฒนาเกม

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

2
การออกแบบ Snake AI
ฉันยังใหม่กับ gamedev stackechange นี้ แต่เคยใช้เว็บไซต์คณิตศาสตร์และ cs มาก่อน ดังนั้นฉันจึงอยู่ในการแข่งขันเพื่อสร้าง AI สำหรับงูที่จะแข่งขันกับงูอีกสี่ตัวในรอบ 5 นาทีโดยมีกติกาเหมือนกับเกมงู Nokia แบบดั้งเดิมยกเว้นว่ามีงูห้าตัวบอร์ด 30x30 และมี จำนวนของอุปสรรคเล็ก ๆ บนสนาม เช่นเดียวกับเกมของ Nokia งูของคุณจะเติบโตขึ้นเมื่อคุณไปถึงผลไม้และหากคุณชนกับตัวเองงูอีกตัวหรือกำแพงที่คุณตาย เกมทำงานด้วยความล่าช้า 30ms ระหว่างการเคลื่อนไหวและเซิร์ฟเวอร์จะส่งสถานะเกมใหม่ทุก ๆ 50ms ซึ่งรหัสจะต้องวิเคราะห์และสิ่งที่ไม่และเอาท์พุทย้ายถัดไป ผู้ชนะคืองูที่ยาวที่สุดในทุกจุดของเกม เบรกเกอร์เน็คไทจะตัดสินโดยการฆ่า จนถึงตอนนี้สิ่งที่ฉันทำคือการใช้การค้นหากราฟ A * จากงูแต่ละตัวเพื่อตรวจสอบว่างูของฉันใกล้เคียงกับแอปเปิ้ลหรือไม่และถ้าเป็นก็จะไปที่แอปเปิ้ล ไม่เช่นนั้นฉันก็สร้างอัลกอริธึมเล็กน้อยเพื่อกำหนดพื้นที่ว่างเปล่าของกระดานซึ่งงูของฉันไปเพื่อคาดการณ์แอปเปิ้ลต่อไป นอกเหนือจากนี้ฉันมีการตรวจสอบความสามารถในการเอาตัวรอดเล็ก ๆ น้อย ๆ เพื่อให้แน่ใจว่างูของฉันไม่ได้เดินเข้าไปในกับดักที่ไม่สามารถออกไปได้และถ้ามันติดอยู่ฉันก็มีบางอย่างที่จะให้โอกาสที่ดีกว่า ... อย่างไรก็ตามฉันได้ทดสอบงูของฉันบนเซิร์ฟเวอร์ทดสอบและมันก็ค่อนข้างดี โดยทั่วไปแล้วกลยุทธ์ของฉันจะให้แอปเปิ้ลเมื่อมันเป็นสิ่งที่แน่นอนและหาพื้นที่เมื่อมันไม่ทำให้มันเติบโตเร็วกว่างูชนิดอื่น ๆ (งูบางตัวทำสิ่งที่คล้ายกัน แต่มักจะไปตรงกลางหรือมุม) บางครั้งมันชนะ เกมทดลองใช้งานเหล่านี้ แต่บ่อยกว่าไม่แพ้งูตัวเดียวที่ดูเหมือนจะมีความสามารถในการเอาตัวรอดได้ (งูของฉันเติบโตเร็วขึ้น …
9 ai  snake 

1
Xbox thumbstick ที่ใช้ในการหมุนสไปรต์สูตรพื้นฐานทำให้มัน“ ติด” หรือรู้สึก“ เหนียว” ที่ระยะ 90 องศา! คุณจะหมุนอย่างราบรื่นได้อย่างไร?
ฉันใช้สูตรพื้นฐานมากในการคำนวณมุมของเทพดา (ยานอวกาศ) ที่ควรจะหันหน้าไปทางบนพื้นฐานของ thumbstick Xbox คอนโทรลเลอร์เช่นคุณใช้ thumbstick เพื่อหมุนเรือ ในวิธีการอัพเดทหลักของฉัน: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); ในวิธีการวาดหลักของฉัน: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); อย่างที่คุณเห็นมันค่อนข้างเรียบง่ายฉันเอาเรเดียนปัจจุบันจากนิ้วหัวแม่มือและเก็บมันไว้ในทุ่นshuttleAngleแล้วใช้นี่เป็นอาร์กิวเมนต์มุมการหมุน (เป็นเรเดียน) สำหรับวาดรูปกระสวย ด้วยเหตุผลบางอย่างเมื่อฉันหมุน sprint มันให้ความรู้สึกเหนียวที่มุม 0, 90, 180 และ 270 องศา มันต้องการที่จะตั้งถิ่นฐานที่มุมเหล่านั้น มันไม่ให้การหมุนที่ราบรื่นและเป็นธรรมชาติเหมือนกับที่ฉันรู้สึกในเกมที่ใช้กลไกที่คล้ายคลึงกัน PS: ตัวควบคุม Xbox ของฉันไม่เป็นไร!
9 xna  c#  sprites  rotation  gamepad 

1
แอ็คชั่นที่มุ่งเน้น AI: การหลีกเลี่ยงอัลกอริทึมใช้เวลานาน
Evasion กระบวนการหลบหลีกเป็นสิ่งที่ตรงกันข้ามกับการไล่ล่า แทนที่จะพยายามลดระยะทางไปยังเป้าหมายเราพยายามที่จะเพิ่มมัน ใช้เวลานานในขณะเดียวกันก็หลบเลี่ยงวัตถุหลายอย่างพร้อมกัน ฉันใช้ BFS ที่นี่ เพื่อให้เร็วขึ้นฉันควรใช้อัลกอริทึมอย่างไร

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

4
ภาพเคลื่อนไหวสไปรต์ใน openGL
ฉันกำลังประสบปัญหาในการนำแอนิเมชั่นสไปรท์มาใช้ใน openGL ES ฉัน googled มันและสิ่งเดียวที่ฉันได้รับคือการสอนการใช้งานผ่าน Canvas ฉันรู้วิธี แต่ฉันมีปัญหาในการใช้งาน สิ่งที่ฉันต้องการ: ภาพเคลื่อนไหวสไปรต์ในการตรวจจับการชน ฉันทำอะไร: ฟังก์ชั่นตรวจจับการชนกันทำงานได้อย่างถูกต้อง PS: ทุกอย่างทำงานได้ดี แต่ฉันต้องการใช้แอนิเมชั่นใน OPENGL เท่านั้น Canvas จะไม่ทำงานในกรณีของฉัน ------------------------ แก้ไข ----------------------- ตอนนี้ฉันมีแผ่นสไปรต์พูดข้างล่างมีพิกัดบางอย่าง แต่ผู้ประสานงาน (u, v) จะเริ่มจากที่ไหน? ฉันควรพิจารณาคุณ, v ประสานงานจาก (0,0) หรือจาก (0,5) และฉันควรเก็บไว้ในรูปแบบใดในรายการของฉัน .. ? ----> จากซ้ายไปขวาหรือ ----> จากบนลงล่าง ฉันจำเป็นต้องมีอาร์เรย์ 2D ในคลาสสไปรต์ของฉันหรือไม่ นี่คือภาพเพื่อความเข้าใจที่ดีขึ้น ฉันสมมติว่าฉันมีแผ่นสไปรต์ NxN โดยที่ N = …

3
การออกแบบที่อิงส่วนประกอบ: การจัดการการโต้ตอบกับวัตถุ
ฉันไม่แน่ใจว่าวัตถุทำสิ่งต่าง ๆ อย่างไรกับวัตถุอื่น ๆ ในการออกแบบส่วนประกอบ บอกว่าฉันมีObjชั้นเรียน ฉันทำ: Obj obj; obj.add(new Position()); obj.add(new Physics()); ฉันจะมีวัตถุอื่นได้อย่างไรไม่เพียง แต่เคลื่อนที่ลูกบอล แต่ใช้ฟิสิกส์เหล่านั้น ฉันไม่ได้กำลังมองหารายละเอียดการใช้งาน แต่ค่อนข้างเป็นนามธรรมว่าวัตถุสื่อสารกันอย่างไร ในการออกแบบตามเอนทิตีคุณอาจมี: obj1.emitForceOn(obj2,5.0,0.0,0.0); บทความหรือคำอธิบายใด ๆ เพื่อให้เข้าใจการออกแบบส่วนประกอบได้ดีขึ้นและวิธีการทำสิ่งพื้นฐานจะมีประโยชน์จริง ๆ

5
เส้นตรงสามารถเรียกว่ารูปหลายเหลี่ยมได้หรือไม่?
ตามคำจำกัดความของรูปหลายเหลี่ยมถ้าจุดแรกและจุดสุดท้ายของเส้นเชื่อมต่อนั้นเรียกว่ารูปหลายเหลี่ยม ดูภาพด้านล่าง ฉันมี P1, .... P5 Polyline ถ้าฉันวาดเส้นจาก P5 ถึง P1 มันจะถูกเรียกว่ารูปหลายเหลี่ยมหรือไม่? ฉันสับสนที่นี่

2
ฉันต้องกังวลเกี่ยวกับการแสดงผลแบบ quad-based ในสถานการณ์จริงหรือไม่?
ส่วนใหญ่ในบทแรกของหนังสือแบบสุ่มเกี่ยวกับเทคนิคการแรสเตอร์และการเรนเดอร์ฉันพบวลีบางอย่างเกี่ยวกับระบบการเรนเดอร์แบบสามเหลี่ยมและแบบสี่ภาค ฉันไม่เคยเจอ GPU หรือไปป์ไลน์แบบ quad-based ฉันต้องกังวลเกี่ยวกับเรื่องนั้นเมื่อต้องจัดการกับ OpenGL 3.0+ หรือว่าเป็นเพียงแค่ของดั้งเดิม
9 opengl  gpu 

5
ส่งคืนรหัส multiTouch ที่ถูกต้อง
ฉันใช้เวลานับไม่ถ้วนในการอ่านบทเรียนและดูคำถามทุกข้อที่เกี่ยวข้องกับมัลติทัชจากที่นี่และ Stackoverflow แต่ฉันก็ไม่สามารถหาวิธีที่จะทำอย่างถูกต้อง ฉันใช้การวนซ้ำเพื่อรับของpointerIdฉันฉันไม่เห็นคนจำนวนมากทำเช่นนี้ แต่มันเป็นวิธีเดียวที่ฉันจัดการเพื่อให้มันทำงานได้ค่อนข้างดี ฉันมีจอยสติ๊กสองอันบนหน้าจอหนึ่งอันสำหรับการเคลื่อนไหวและอีกอันหนึ่งสำหรับควบคุมการหมุนของสไปรท์และมุมที่เขายิงเช่นใน Monster Shooter ทั้งสองทำงานได้ดี ปัญหาของฉันคือเมื่อฉันย้ายสไปรท์ของฉันในเวลาเดียวกันกับการถ่ายภาพ Im การtouchingPointเคลื่อนไหวของฉันถูกตั้งค่าไว้ที่การtouchingPointยิงของฉันเนื่องจากxและyสูงกว่าการtouchingPointยิงของฉัน ( moving-stickทางด้านซ้ายของหน้าจอshooting-stickทางด้านขวา) เทพดาของฉันเพิ่มความเร็วสิ่งนี้ทำให้เกิดการเปลี่ยนแปลงความเร็วที่ไม่พึงประสงค์สำหรับสไปรต์ของฉัน นี่คือวิธีที่ฉันแก้ไขมันด้วยความช่วยเหลือของคุณ! นี่คือสำหรับทุกคนที่อาจพบปัญหาที่คล้ายกัน: public void update(MotionEvent event) { if (event == null && lastEvent == null) { return; } else if (event == null && lastEvent != null) { event = lastEvent; } else { lastEvent …

3
ความรู้ที่จำเป็นในการเขียนไลบรารี่แอนิเมชั่น (IK & FK) คืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันไม่สามารถหาไลบรารี่ที่ดีสำหรับแอนิเมชั่นได้ห้องสมุดที่ฉันพบนั้นเก่าและหยุดแล้ว แต่ฉันสังเกตว่าห้องสมุดนั้นค่อนข้างเล็กดังนั้นฉันจึงคิดที่จะเขียนโค้ดด้วยตัวเอง: ฉันควรเริ่มจากตรงไหน ? พื้นฐานของสิ่งนี้คืออะไร? มีหนังสือเกี่ยวกับเรื่องนี้หรือไม่? หมายเหตุเพิ่มเติมบางประการเกี่ยวกับรูปแบบไฟล์ที่ดีสำหรับแอนิเมชั่นก็เป็นที่นิยมเช่นกัน ฉันใช้ C ++

2
ทำไมไฟของฉันถึงไม่ต่อเนื่อง?
ฉันสร้างโมเดลลูกบาศก์พื้นผิวพื้นฐานด้วย Blender เพื่อฝึกการสร้างแบบจำลองจากนั้นฉันก็นำเข้าสู่ Unity หลังจากที่ฉันวางหลอดไฟมันก็ดูน่าเกลียด แสงไม่ต่อเนื่องบนแถวของพื้นผิวก้อน: อะไรคือสิ่งที่แปลกมากขึ้นไฟบนบล็อกที่ทำให้การขึ้นชั้นเป็นอย่างต่อเนื่อง ผมทำอะไรผิดหรือเปล่า? นี่คือสิ่งที่ดูเหมือนว่าไม่มีพื้นผิว: ถ้าฉันไม่รู้ว่านี่เป็นลูกบาศก์ที่สมบูรณ์แบบฉันจะบอกว่ามันมีเส้นโค้งเล็กน้อยบนพื้นผิว ฉันพยายามทำให้พื้นผิวจางลง แต่มันก็ไม่ได้ช่วย: ฉันเพียงแค่ส่งออกโมเดลจาก Blender และไม่ได้ตั้งค่ามาตรฐานหรืออะไรแบบนั้น อย่างไรก็ตามฉันยังไม่ได้ทำอะไรเป็นพิเศษกับโมเดลอิฐปูพื้น ตรวจสอบบรรทัดฐานและพวกเขาดูเหมือนจะชี้ไปในทิศทางที่ถูกต้อง นอกจากนี้ฉันไม่เห็นความแตกต่างระหว่างสองรุ่นจริงๆ บนแผงพื้นผิวฉันยังตั้งค่าการฉายภาพให้แบน: ฉันตรวจสอบพาเนลที่แตกต่างกันในเครื่องปั่นและตัวเลือกเดียวที่เกี่ยวข้องกับปกติในแผง "ข้อมูลวัตถุ" คือ "Auto Smooth" และมันถูกปิดโดยปริยาย:

2
มีสิ่งใดเทียบเท่ากับ linked2portal_door ของ Portal 2 ในเอนจิ้นอื่นหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันต้องการฟังก์ชั่นของlinked_portal_doorที่อยู่ใน Portal 2 ฉันค้นหาเล็กน้อยใน UDK และทำให้คนส่วนใหญ่พยายามเลียนแบบปืนพอร์ทัล ไม่มีใครรู้ว่า UDK, CryEngine, Unity3D หรือเอนจิ้นอื่นมีอะไรที่คล้ายกันบ้างไหม? ฉันไม่ได้ต่อต้านการใช้ซอร์สฉันแค่อยากรู้ว่าตัวเลือกของฉันคืออะไร
9 portals 

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

3
มีการบรรยาย (หรืออย่างน้อยก็ไม่ใช่ spatiotemporal) ที่เน้นกลไก / กรอบงานหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา แก้ไข (2): เนื่องจากมีสองคำตอบและฉันไม่ได้ยอมรับคำตอบใด ๆ ฉันคิดว่าฉันจะกระตุ้นสิ่งที่ฉันควรพิจารณาคำตอบที่นี่: มีบางสิ่งบางอย่างที่แนะนำวิธีการดังกล่าวจะเป็นไปไม่ได้ / ไม่มีประโยชน์หรือ หรืออ้างอิงถึงการวิจัย (ฟิลด์) หรือตัวอย่างของระบบดังกล่าวอย่างน้อยทั่วไปนอกเหนือจากเกมผจญภัยข้อความ / นิยายเชิงโต้ตอบ ในขณะที่ฉันจะไม่เสแสร้งฉันได้ทำการตรวจสอบที่ลึกกว่านี้ฉันสังเกตว่าเอ็นจิ้นเกม / เฟรมเวิร์กทั้งหมดที่ฉันดูดูเหมือนจะเป็นอะไรที่เหมือนกับเอ็นจิ้นกราฟิคที่น่ายกย่องในแง่ที่ว่าพวกเขาพูดถึงรูปร่าง / เอนทิตี้ หรือปริภูมิแบบยุคลิดแบบสามมิติด้วยอาจเป็นรูปแบบหนึ่งของรูปแบบการทำงานพร้อมกัน "ซ่อนตัว" อนุญาตให้มีการระบุรูปแบบของตรรกะที่ติดอยู่กับ "เอนทิตี้" เหล่านี้ เกม "กฏ" และการบรรยายจะถูกเขียนด้วยวิธี ad-hoc (เทียบกับเอ็นจิ้น) ทางด้านบนของสิ่งเหล่านี้ เห็นได้ชัดว่าคำอธิบายข้างต้นค่อนข้างง่าย (ใช้เครื่องมือพิเศษเช่นเครื่องยนต์อินฟินิตี้ซึ่งรวมถึงรูปแบบของการสืบเสาะ / ระบบการเล่าเรื่อง) และฉันรู้ว่าแบบจำลองนี้ทำงานได้ค่อนข้างดี (ผู้คนจำนวนมากดูเหมือนจะใช้มัน) . ฉันสงสัยว่าสิ่งใดที่พยายามสร้างเอ็นจิ้น / เฟรมเวิร์กที่ใช้ความคิดเช่น (ระดับสูง) คำอธิบายเกี่ยวกับกฎของเกม / ตรรกะหรือการเล่าเรื่อง …

1
การรันทั้งเซิร์ฟเวอร์และไคลเอนต์ภายในกระบวนการเดียวกัน
คำถาม ฉันเพิ่งเริ่มทำงานกับLidgrenและระบบเครือข่ายเป็นครั้งแรกและฉันได้ตระหนักว่ามันเป็นไปได้ที่จะเรียกใช้ทั้งเซิร์ฟเวอร์และไคลเอนต์ภายในกระบวนการเดียวกัน การฝึกฝนนี้ไม่สนับสนุนด้วยเหตุผลใด ๆ หรือไม่? บริบท เหตุผลที่ฉันถามก็เพราะฉันคิดว่าทฤษฎีนี้อาจทำให้ฉันสามารถเล่นทั้งโหมดผู้เล่นคนเดียวและโหมดผู้เล่นหลายคนในแบบเดียวและแบบเดียวกันซึ่งจะเป็นประโยชน์อย่างมาก ตามแนวความคิดของฉันนี่คือการแจกแจงที่ฉันมีอยู่ในใจ: Singleplayer - 1 เซิร์ฟเวอร์ + 1 ไคลเอนต์ในกระบวนการเดียวกัน การสื่อสารมีความเร็วแค่ไหน? Multiplayer - เหมือนกับ singleplayer สำหรับโฮสต์ + 1 aditional client สำหรับผู้เล่นอื่น โฟลว์การดำเนินการที่ฉันนึกภาพนั้นมีไว้สำหรับให้ลูกค้ารับการป้อนข้อมูลของผู้ใช้และส่งการแจ้งเตือนไปยังเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะตรวจสอบความถูกต้องและเผยแพร่การดำเนินการที่จะดำเนินการโดยลูกค้าทั้งหมด ไม่สำคัญว่าจะมีลูกค้าเพียงรายเดียว (เช่นผู้เล่นคนเดียว) หรือลูกค้าหลายราย (เช่นผู้เล่นหลายคน)

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