การพัฒนาเกม

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

5
Ledge ไต่แอนิเมชันและการเคลื่อนไหว (platformer 2d)
การดิ้นรนเพื่อตัดสินใจเกี่ยวกับการใช้งานกลไกไต่ระดับบนสำหรับนักฟิสิกส์ 2d platformer อะไรคือวิธีที่ดีที่สุดในการทำสิ่งนี้โดยไม่ซับซ้อนเกินไป? จนถึงตอนนี้ฉันเข้าใจ (มือสมัครเล่นที่นี่ไม่ใช่มืออาชีพ) มีตัวเลือกไม่กี่อย่าง ได้แก่ : ใช้แรงควบคุมกับร่างกายที่แข็งบนแกน y จนกระทั่งตำแหน่งรูตอยู่เหนือตำแหน่งมือจากนั้นใช้แรงกดบนแกน x มากพอเพื่อให้ตัวละครยืนอยู่บนแพลตฟอร์ม ในขณะเดียวกันก็ซิงค์สิ่งนี้กับภาพเคลื่อนไหวปีน ข้อสังเกต : การเคลื่อนไหวนั้นง่ายที่นี่และยังสามารถควบคุมได้ด้วยข้อต่อแบบเลื่อนปริซึม แต่ฉันไม่แน่ใจว่าฉันจะเก็บอนิเมชั่น (กระดูกสันหลัง) ให้สอดคล้องกับการเคลื่อนไหวได้อย่างไร แอนิเมชั่นการเคลื่อนไหวของรูทที่ขับเคลื่อนตำแหน่งรากของตัวละคร ส่งผ่านร่างแข็งเกร็งเมื่อเสร็จสิ้นและหวังว่า box2d ยังคงสามารถตอบสนองได้อย่างทันเวลาต่อการชนใด ๆ หากวัตถุใด ๆ ที่ตกลงมาจากท้องฟ้า ข้อสังเกต : ฟังดูง่ายกว่าที่จะเคลื่อนไหวจริง แต่ไม่แน่ใจว่าฉันจะเจอปัญหาใด ๆ เกี่ยวกับกระดูกสันหลังรันไทม์, box2d หรือใหม่กว่าลงมาบนแพลตฟอร์มที่เคลื่อนย้ายสายและแพลตฟอร์มความสูงที่หลากหลาย ใช้ IK ข้อ จำกัด โดยทางโปรแกรมในมือเพื่อล็อคพวกเขาในสถานที่และดำเนินการต่อเพื่อหมุนกระดูกด้วยตนเองหรือใช้ภาพเคลื่อนไหวที่กำหนดไว้ล่วงหน้าขนาดเล็ก (ไม่กี่คีย์ / เฟรม) ในขณะที่ใช้แรงที่จำเป็นกับร่างกายแข็งในเวลาเดียวกัน ข้อสังเกต : ดูเหมือนว่าสิ่งนี้จะให้การควบคุมสูงสุดแก่ผู้เล่น แต่ดูเหมือนจะซับซ้อนสำหรับฉันที่จะใช้งานในระดับของฉันไม่แน่ใจว่าจะเริ่มตรงไหน …
11 2d  libgdx  box2d  spine 

6
คุณจะย้ายสไปรต์ด้วยการเพิ่มทีละพิกเซลย่อยได้อย่างไร
พิกเซลเปิดหรือปิด จำนวนขั้นต่ำที่คุณสามารถเคลื่อนย้ายสไปรท์คือพิกเซลเดียว ดังนั้นวิธีที่คุณทำให้สไปรต์เคลื่อนที่ช้ากว่า 1 พิกเซลต่อเฟรม? วิธีที่ฉันทำคือเพิ่มความเร็วให้กับตัวแปรแล้วทดสอบว่ามีค่าถึง 1 (หรือ -1) ถ้าเป็นเช่นนั้นฉันจะย้ายสไปรต์และรีเซ็ตตัวแปรเป็น 0 เช่น: update(dt): temp_dx += speed * dt temp_dy += speed * dt if (temp_dx > 1) move sprite reset temp_dx to 0 if (tempy_dy > 1) move sprite reset temp_dy to 0 ฉันไม่ชอบวิธีการนี้เพราะรู้สึกว่าโง่และการเคลื่อนไหวของสไปรต์นั้นดูกระตุกมาก ดังนั้นคุณจะใช้การเคลื่อนไหวย่อยพิกเซลในทางใด

1
ฉันจะนำ GPU มาสร้างสกินที่น่าเชื่อถือใน Android ได้อย่างไร?
ฉันพยายามทำให้ตัวละครน่าสนใจทำงานบน Android แนวคิดนี้ค่อนข้างวานิลลา: ฉันมีเมทริกซ์ที่น่าสนใจและด้วยจุดสุดยอดแต่ละอันฉันจะส่งดัชนีเมทริกซ์ได้ถึงสี่และน้ำหนักที่สอดคล้องกันสี่ประการ ฉันรวมพวกมันไว้ในส่วนยอดและนำไปใช้กับจุดสุดยอดแต่ละอัน นี่คือสิ่งที่ฉันกำลังทำในจุดสุดยอดในเกม iOS ของฉัน (ไม่ต้องสนใจมาตรฐาน): attribute vec4 in_pos; attribute vec4 in_normal; attribute vec2 in_texture_coords; attribute vec4 in_bone_index; attribute vec4 in_bone_weight; varying vec2 fs_texture_coords; uniform mat4 world_view_projection; uniform mat4 bones[@bind_matrix_count]; void main() { // Skinning vec4 transformed_pos = ((in_pos * bones[int(in_bone_index.x)]) * in_bone_weight.x) + ((in_pos * bones[int(in_bone_index.y)]) …

2
Shader ที่“ ตัด” รูผ่านรูปทรงเรขาคณิตทั้งหมด
ฉันจะสร้าง shader ที่ "ตัด" ผ่านรูปทรงเรขาคณิตทั้งหมดโดยแสดงเฉพาะพื้นหลังการล้างใน Unity ได้อย่างไร ตัวอย่าง: นั่นเป็นปริซึมในห้องกล่องสีขาวขนาดใหญ่ พื้นผิวของปริซึมเป็นเพียงการแสดงท้องฟ้าของฉาก (ท้องฟ้าเต็มไปด้วยดวงดาว) ฉันใช้กล้องหลายตัวซึ่งไม่มีประสิทธิภาพเลย ... ต้องมีวิธีการที่มีเพียงเฉดสีเท่านั้น ฉันจะทำสิ่งนี้ได้อย่างไร

1
เปลี่ยนเทพดาของวัตถุในเอกภาพ
ภายในโค้ดสคริปต์ของฮีโร่ (วัตถุ) ฉันต้องการเพิ่มความเป็นไปได้ในการเปลี่ยนสไปรต์ ดังนั้นผู้เล่นกดปุ่ม space และ sprite เปลี่ยนเป็น sprite อื่น ๆ ที่เพิ่มเข้าไปในโครงการ คุณสามารถให้รหัสตัวอย่างแก่ฉันเพื่อทำสิ่งนี้ได้หรือไม่
11 c#  2d  unity  sprites 

2
ฉันจะใช้ไทล์ที่สร้างตามขั้นตอนใน libgdx ได้อย่างไร
ฉันกำลังสร้างเกม Zelda-esque บนลงล่างแบบง่าย ๆ ใน libgdx และฉันต้องการใช้ดันเจี้ยนแบบเรียงต่อกันที่สร้างตามขั้นตอนคล้ายกับสิ่งนี้ Libgdx มีคลาสที่เรียกว่า TiledMap ซึ่งดูเหมือนว่าจะเหมาะกับความต้องการของฉันอย่างไรก็ตามเอกสารนอกเอกสารอย่างเป็นทางการแสดงให้เห็นว่า TiledMaps สามารถใช้ร่วมกับไฟล์. tmx หรือในคำอื่น ๆ ที่ออกแบบไว้ล่วงหน้าแผนที่ ฉันทำ Googling ในปริมาณที่พอใช้แล้วฉันก็เลยขอให้ที่นี่เป็นทางเลือกสุดท้ายหวังว่าจะมีใครบางคนมีประสบการณ์การใช้ libgdx เพื่อสร้างแผนที่ย่อยแบบไดนามิก แก้ไข: ฉันสามารถใช้StaticTiledMapTiles ได้หรือไม่ร่วมกับบทช่วยสอนที่ฉันเชื่อมโยงกับข้างต้นเพื่อบรรลุเป้าหมายได้หรือไม่ ขอบคุณ!

3
ออมทรัพย์รัฐเกมโร๊คไลค์?
ฉันกำลังทำงานกับ roguelike พื้นฐานโดยใช้ HTML5 และ jQuery และฉันเจอปัญหา วิธีที่เกมยืนอยู่ในขณะนี้ระบบจะบันทึกสถานะของเกมทุกครั้งที่ผู้ใช้เคลื่อนที่ระหว่างพื้น - เพื่อลดค่าใช้จ่าย อันตรายของสิ่งนี้คือถ้าผู้ใช้ประสบปัญหาพวกเขาสามารถปิดหน้าต่างและกลับสู่เกมได้ที่จุดเริ่มต้นของชั้นปัจจุบัน สิ่งนี้จะช่วยลดความยากลำบากของเกมได้อย่างมาก (และเกือบจะเอาชนะจุดประสงค์ของโร๊คไลค์) - แต่มันก็ไม่มีเหตุผลที่จะรักษาสถานะของเกมด้วยการเคลื่อนไหวหรือการโจมตีของผู้เล่นทุกคน ฉันได้ค้นคว้าวิธีการบันทึกสถานะเกมในหน้าต่างเบราว์เซอร์ปิด แต่ฉันไม่พอใจกับพวกเขา คำถามของฉันคือ: สมมติว่า "การบันทึกสถานะเกม" หมายถึงคำขออาแจ็กซ์ / โพสต์ที่หนักหน่วงปานกลางฉันจะป้องกันพฤติกรรมการโกงนี้ได้อย่างไร มีวิธีการที่รู้จักกันในการหาจำนวนการเปลี่ยนแปลงที่เพิ่มขึ้น / ขั้นตอนเป็นแผนที่ 2d ซึ่งต่างจากการบันทึกสถานะแผนที่ทั้งหมดหรือไม่? โปรดทราบว่าฉันไม่ได้ขอ "วิธีที่มีประสิทธิภาพมากที่สุด" - ฉันกำลังมองหาวิธีการที่มีอยู่เพื่อแก้ไขการขาดประสบการณ์ของฉัน

4
ระบบและการแสดงผล
Okey สิ่งที่ฉันรู้จนถึงตอนนี้; เอนทิตีประกอบด้วยส่วนประกอบ (data-storage) ซึ่งเก็บข้อมูลเช่น; - พื้นผิว / สไปรต์ - Shader - ฯลฯ จากนั้นฉันก็มีระบบตัวแสดงภาพที่วาดทั้งหมดนี้ แต่สิ่งที่ฉันไม่เข้าใจก็คือการออกแบบโหมดแสดงภาพควรเป็นอย่างไร ฉันควรมีองค์ประกอบหนึ่งรายการสำหรับ "ประเภทภาพ" แต่ละรายการหรือไม่ องค์ประกอบหนึ่งที่ไม่มี shader หนึ่งชิ้นที่มี shader เป็นต้น เพียงแค่ต้องป้อนข้อมูลบางอย่างใน "วิธีที่ถูกต้อง" เพื่อทำสิ่งนี้ เคล็ดลับและข้อผิดพลาดที่ต้องระวัง

2
วิธีจัดโครงสร้างสถานะเกมในระบบที่ยึดเอนทิตี / ส่วนประกอบ
ฉันทำเกมที่ออกแบบมาพร้อมกับกระบวนทัศน์นิติบุคคลองค์ประกอบว่าระบบที่ใช้ในการติดต่อสื่อสารระหว่างส่วนประกอบตามที่อธิบายไว้ที่นี่ ฉันได้มาถึงจุดในการพัฒนาของฉันที่ฉันต้องเพิ่มรัฐเกม (เช่นหยุดเล่นระดับเริ่มต้นรอบเริ่มเกมมากกว่า ฯลฯ ) แต่ฉันไม่แน่ใจว่าจะทำอย่างไรกับกรอบของฉัน ฉันได้ดูตัวอย่างโค้ดนี้ในสถานะเกมที่ทุกคนดูเหมือนจะอ้างอิง แต่ฉันคิดว่ามันไม่เหมาะกับกรอบงานของฉัน ดูเหมือนว่าแต่ละรัฐจัดการรูปวาดของตนเองและปรับปรุง เฟรมเวิร์กของฉันมี SystemManager ที่จัดการการอัพเดตทั้งหมดโดยใช้ระบบ ตัวอย่างเช่นนี่คือคลาส RenderingSystem ของฉัน: public class RenderingSystem extends GameSystem { private GameView gameView_; /** * Constructor * Creates a new RenderingSystem. * @param gameManager The game manager. Used to get the game components. */ public RenderingSystem(GameManager gameManager) { super(gameManager); …

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

3
การออกแบบแผนที่ทั้งหมดกับการออกแบบอาร์เรย์แบบเรียงต่อกัน
ฉันกำลังทำงานกับ RPG 2 มิติซึ่งจะแสดงแผนที่ดันเจี้ยน / เมืองปกติ (สร้างขึ้นล่วงหน้า) ฉันกำลังใช้ไทล์แล้วฉันจะรวมกันเพื่อทำแผนที่ แผนเดิมของฉันคือการรวบรวมกระเบื้องโดยใช้ Photoshop หรือโปรแกรมกราฟิกอื่น ๆ เพื่อให้ได้ภาพที่ใหญ่กว่าที่ฉันสามารถใช้เป็นแผนที่ได้ แต่ผมได้อ่านในหลายสถานที่ที่ผู้คนพูดเกี่ยวกับวิธีที่พวกเขาใช้อาร์เรย์เพื่อสร้างแผนที่ของพวกเขาในเครื่องยนต์ (เพื่อให้คุณให้อาร์เรย์ของกระเบื้อง x ไปที่เครื่องยนต์ของคุณและจะรวบรวมพวกเขาเป็นแผนที่) ฉันเข้าใจได้ว่ามันเสร็จสิ้นแล้ว แต่ดูเหมือนว่าจะมีความซับซ้อนมากขึ้นในการนำไปใช้และฉันไม่สามารถเห็นข้อได้เปรียบที่ชัดเจน วิธีที่พบมากที่สุดคืออะไรและอะไรคือข้อดี / ข้อเสียของแต่ละวิธี?
11 tiles  maps 

2
ฉันจะอ่านเกี่ยวกับเทคนิคที่ใช้ในเกมยุค NES ได้ที่ไหน [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันสนุกกับการอ่านเกี่ยวกับเทคนิคที่ใช้ในเกมยุค NES มีบล็อกหรือเว็บไซต์ที่ทุ่มเทให้กับหัวข้อนี้หรือไม่? ตัวอย่างเช่นนี่คือบทความที่พูดถึง Pac-Man และอีกเรื่องเกี่ยวกับการเคลื่อนไหวใน The Legend of Zelda
11 blog 

1
ปัญหาการตรวจจับการชนวงกลม -line
ขณะนี้ฉันกำลังพัฒนาโคลนการฝ่าวงล้อมและฉันได้ตีสิ่งกีดขวางบนถนนในการตรวจจับการชนกันระหว่างลูกบอล (วงกลม) และอิฐ (รูปหลายเหลี่ยมนูน) ทำงานอย่างถูกต้อง ฉันใช้การทดสอบการตรวจจับการชนกันของข้อมูลเส้นวงกลมโดยที่แต่ละบรรทัดแสดงถึงและขอบบนก้อนอิฐรูปหลายเหลี่ยมนูน ส่วนใหญ่แล้วการทดสอบแบบ Circle-Line นั้นทำงานได้อย่างถูกต้องและจุดของการชนนั้นได้รับการแก้ไขอย่างถูกต้อง การตรวจจับการชนกันทำงานอย่างถูกต้อง อย่างไรก็ตามในบางครั้งรหัสตรวจจับการชนของฉันคืนเท็จเนื่องจากการเลือกปฏิบัติเชิงลบเมื่อลูกบอลตัดกับก้อนอิฐ การตรวจหาการชนกันล้มเหลว ฉันตระหนักถึงความไร้ประสิทธิภาพด้วยวิธีนี้และฉันใช้กล่องที่จัดเรียงตามแนวแกนเพื่อลดจำนวนอิฐที่ทดสอบ ความกังวลหลักของฉันคือถ้ามีข้อบกพร่องทางคณิตศาสตร์ในรหัสของฉันด้านล่าง /* * from and to are points at the start and end of the convex polygons edge. * This function is called for every edge in the convex polygon until a * collision is detected. */ …


2
เหตุใดมูลค่าการโอนย้ายของ glUniformMatrix4fv ใน webgl / OpenGL ES จึงเป็นเท็จ
เหตุใดมูลค่าการโอนย้ายของ glUniformMatrix4fv ใน webgl / OpenGL ES จึงเป็นเท็จ ข้อมูลจำเพาะ OpenGL ESบอกว่าค่าการแปลงจะต้องเป็นเท็จหรือสร้าง INVALID_VALUE ทำไมจึงมีพารามิเตอร์
11 opengl-es  webgl 

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