การพัฒนาเกม

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

2
ข้อได้เปรียบของกลไกการเข้าถึงสถานะโดยตรงของ OpenGL คืออะไร
ฉันได้อ่านเกี่ยวกับ OpenGL 4.5 Direct State Access (DSA) ที่opengl.orgและไม่แน่ใจว่าฉันทำให้ถูกต้องหรือไม่ ดูเหมือนจะบอกเป็นนัยว่าวิธีเก่ามีประสิทธิภาพน้อยกว่า: glBind(something) glSetA(..) glSetB(..) glSetC(..) กว่าวิธีใหม่: glSetA(something, ..) glSetB(something, ..) glSetC(something, ..) จากลักษณะของมันตอนนี้แต่ละคนglSetมีการรวมglBind(something)ภายในของมันและถ้า OpenGL somethingที่ยังคงความเป็นรัฐที่เครื่องไม่สามารถใช้ประโยชน์จากการเปลี่ยนแปลงที่นำไปใช้กับสตรีมเดียว โปรดอธิบายเหตุผลเบื้องหลังและข้อดีของ DSA ใหม่
11 opengl 

1
วิธีการใช้ ripples ชนิดนี้ด้วยตัวแยกส่วน GLSL?
ดังนั้นฉันจึงได้นำส่วนการสะท้อนกลับมาใช้แล้ว: uniform sampler2D texture; uniform vec2 resolution; uniform vec3 overlayColor; void main() { vec2 uv = gl_FragCoord.xy / resolution.xy; if (uv.y > 0.3)// is air - no reflection or effect { gl_FragColor = texture2D(texture, vec2(uv.x, uv.y)); } else { // Compute the mirror effect. vec4 color = texture2D(texture, vec2(uv.x, 0.6 …

2
Unity UI square ที่เติมความกว้างหรือความสูง
ฉันกำลังพยายามสร้างบอร์ดด้วยข้อกำหนดนี้: มันจะเป็นรูปสี่เหลี่ยมจัตุรัส มันจะพอดีกับความกว้างหรือความสูงที่มีอยู่ มันจะอยู่กึ่งกลางในผืนผ้าใบ มันอาจถูกห่อไว้ในผืนผ้ากลางเพิ่มเติมตามความจำเป็น ฉันกำลังเล่นกับแองเคอร์ แต่ฉันไม่พบการรวมกันใด ๆ ที่จะทำอย่างนั้น ทางออกเดียวที่ฉันคิดได้ก็คือสคริปต์ "OnResize" ของคอนเทนเนอร์และตั้งค่าขนาดของบอร์ดโดยทางโปรแกรม นี่คือเค้าโครงดั้งเดิม (1) คือ BoardCanvas (2) คือคณะกรรมการ ฉันต้องการถ้าหน้าจอสูงขึ้นสี่เหลี่ยมก็จะโตขึ้น แต่ก็ยังเป็นสี่เหลี่ยมจัตุรัส: หรือลด: แต่ถึงแม้ว่าตัวอย่างก่อนหน้านี้จะถูกตัดไปที่ขอบด้านบนและด้านล่าง แต่ฉันก็ต้องการที่ถ้าพื้นที่แนวตั้งจะสูงกว่าความกว้างที่มีอยู่สี่เหลี่ยมจัตุรัสจะ จำกัด ขนาดของมันขึ้นอยู่กับเส้นขอบซ้ายและขวา: Q1:มีวิธีทำเช่นนี้กับสมอ / pivots หรือไม่? ไม่เป็นไรสำหรับฉันที่จะสร้างผืนผ้ากลางระหว่าง BoardCanvas และ Board เองถ้าใช้งานได้ Q2:ถ้าเป็นเช่นนั้นฉันควรวางตำแหน่งจุดยึดที่ไหน ฉันต้องการวัตถุระดับกลางหรือไม่ Q3:ถ้าไม่สคริปต์แก้ปัญหาคืออะไร? มี OnResize ใด ๆ บนผืนผ้าใบเพื่อจัดการ? ฉันไม่เห็นเหตุการณ์การปรับขนาดใด ๆ ในรายการ แต่บางทีฉันก็ไม่รู้จะหาได้ที่ไหน ฉันรู้สึกว่าการทดสอบในทุกเฟรมดูเหมือนว่าเกินความเป็นจริงการขับเคลื่อนของเหตุการณ์ดูเหมือนจะดีกว่า ขอบคุณ!

1
ในระบบวัสดุที่ใช้กราฟฉันจะสนับสนุนประเภทอินพุตและเอาต์พุตที่หลากหลายได้อย่างไร
ฉันพยายามที่จะตัดหัวของฉันรอบระบบวิธีวัสดุเช่นนี้ , นี้จะดำเนินการ ระบบที่มีลักษณะคล้ายกราฟที่ทรงพลังและเป็นมิตรต่อผู้ใช้เหล่านี้ดูเหมือนจะเป็นวิธีที่ใช้กันทั่วไปในการอนุญาตให้โปรแกรมเมอร์และโปรแกรมเมอร์ที่ไม่ใช่โปรแกรมเมอร์สร้างความแตกต่างอย่างรวดเร็ว อย่างไรก็ตามจากประสบการณ์ที่ จำกัด ของฉันกับการเขียนโปรแกรมกราฟิกฉันไม่แน่ใจว่าพวกเขาทำงานอย่างไร พื้นหลัง: ดังนั้นเมื่อฉันได้ตั้งโปรแกรมระบบการแสดงผล OpenGL อย่างง่ายมาก่อนฉันมักจะสร้างคลาสวัสดุที่โหลดรวบรวมและเชื่อมโยง shaders จากไฟล์ GLSL แบบคงที่ที่ฉันสร้างขึ้นด้วยตนเอง ฉันมักจะสร้างคลาสนี้เป็น wrapper ง่าย ๆ สำหรับการเข้าถึงตัวแปรชุด GLSL เป็นตัวอย่างง่ายๆลองนึกภาพว่าฉันมี Shader Vertex พื้นฐานและ Shader Fragment พื้นฐานพร้อม Texture2D แบบพิเศษสำหรับการส่งผ่านพื้นผิว คลาสวัสดุของฉันเพียงแค่โหลดและรวบรวมสองเฉดสีเหล่านั้นลงในวัสดุและจากจุดนั้นมันจะเปิดเผยอินเทอร์เฟซที่เรียบง่ายสำหรับการอ่าน / เขียนชุด Texture2D ของ shader นั้น เพื่อให้ระบบนี้มีความยืดหยุ่นเพิ่มขึ้นเล็กน้อยฉันมักจะเขียนด้วยวิธีที่อนุญาตให้ฉันพยายามส่งชุดชื่อ / ประเภทใด ๆ[เช่น: SetUniform_Vec4 ("AmbientColor", colorVec4); ซึ่งจะตั้งค่าเครื่องแบบ AmbientColor เพื่อเวกเตอร์ 4d โดยเฉพาะเรียกว่า "colorVec4" …

2
การเปิดตัวเกมอัปเกรด: เวลาปล่อยข้ามแพลตฟอร์ม
ฉันเพิ่งทำการอัปเกรดที่สำคัญสำหรับชื่อมือถือเก่าที่ไม่ได้เห็นการอัปเดตในรอบปี เนื้อหาใหม่มากมายสิ่งต่าง ๆ ดูดี น่าเศร้าที่วันนี้ใช้เวลาเฉลี่ย 12 วันในการรับการอัปเดตผ่านทางช่องอนุมัติของ iTunes แต่ใช้เวลาน้อยกว่า 2 ชั่วโมงในการถ่ายทอดสดบน Google Play ถ้าฉันวางรุ่นตอนนี้ฉันสามารถเข้าสู่ช่วงวันหยุดฤดูใบไม้ร่วงบน Android อย่างน้อยคน iOS จะต้องรอจนกว่าเวอร์ชั่นของพวกเขาจะได้รับการอนุมัติ แต่ฉันได้ยินจากสตูดิโออื่น ๆ ว่าพวกเขารอและเปิดตัวการอัปเดตทั้งสองในเวลาเดียวกันเพื่อเข้าถึง "ผลการทำงานร่วมกัน" ที่เรียกว่า socalled เนื่องจากเนื่องจาก (ที่ฉันเข้าใจ) ให้ความสนใจกับการอัปเดตที่รั่วไหลไปยังแพลตฟอร์มที่ทำมิเรอร์ แต่ ... ฉันแค่สงสัยในเรื่องนี้ เอฟเฟกต์นี้แข็งแกร่งจริงๆหรือไม่และคุณจะเลื่อนการเปิดตัวเป็นเวลาหลายสัปดาห์หรือไม่? และ googling สักหน่อยฉันมีเวลายากที่จะหาตัวเลขใด ๆ ที่สามารถสำรองกลยุทธ์นี้ได้ วิธีทำให้ตรงมากขึ้น: ถือแอปเปิดตัวค้างไว้จนกว่าทุกแพลตฟอร์มจะซิงค์กันจริง ๆ "คุ้มค่า" หรือไม่? Ofcouse ฉันจะระงับ PR-horses ของฉันไว้จนกว่าการอัปเกรดจะพร้อมสำหรับแพลตฟอร์มทั้งสอง แต่จริง ๆ แล้วมันแย่ขนาดนั้นหรือไม่ที่จะเปิดตัวแอพพลิเคชั่น "ก่อนกำหนด" บนแพลตฟอร์มเดียว …

2
KD-Tree กับ Quadtree แบบไดนามิกเต็มรูปแบบ?
ทำงานในเกมของฉันฉันมาถึงจุดที่ฉันต้องติดตามทุกหน่วยในโลกเพื่อที่ฉันจะได้ทำการตรวจสอบเพื่อนบ้านที่ใกล้ที่สุดเพื่อต่อสู้ เกมนี้เป็นเกมที่คล้ายกับ RTS โดยมีหน่วยอัตโนมัติขนาดเล็กหลายพันตัวเคลื่อนที่อยู่รอบ ๆ ฉันได้ดู KD-Trees และ Quadtrees (โดยเฉพาะ Point Quadtrees) ฉันยังคงพยายามที่จะเรียนรู้รายละเอียดเกี่ยวกับวิธีการทำงานของพวกเขา แต่จนถึงตอนนี้ Point Quadtrees ก็เหมาะสมกับฉันมากที่สุด อย่างไรก็ตามฉันได้รับความประทับใจว่า KD-Trees นั้นเร็วกว่าการค้นหาซึ่งสำคัญกับจำนวนคะแนนที่ฉันมีในต้นไม้ ในอีกกรณีหนึ่งในกรณีของฉันฉันจะติดตามหน่วยจำนวนมากที่เคลื่อนไหวตลอดเวลา จากเฟรมหนึ่งไปอีกเฟรมตำแหน่งของพวกเขาจะแตกต่างกันเสมอ Quadtrees นั้นเร็วกว่าที่จะปรับสมดุลได้ดีกว่า KD-Trees แต่ฉันไม่รู้ว่ามันจะใช้งานได้หรือไม่เมื่อคุณปรับสมดุลทุกจุดในต้นไม้ ฉันสงสัยว่ามันจะดีกว่าไหมในกรณีนี้ที่จะตัดต้นไม้แต่ละเฟรมและสร้างใหม่จากศูนย์แทนที่จะลองปรับสมดุลทุก ๆ จุดในต้นไม้ ถ้า Quadtree เร็วกว่าที่จะปรับสมดุลนั่นหมายความว่ามันเร็วกว่าในการสร้างจากศูนย์หรือไม่ ถ้าเป็นเช่นนั้นสิ่งนี้อาจมีความสำคัญต่อประสิทธิภาพมากกว่าความเร็วในการค้นหาของ KD-Tree ขึ้นอยู่กับว่าต้องสร้างภาระมากแค่ไหน แต่ฉันไม่รู้ ...
11 rts  quadtree  kd-tree 

2
ฉันจะใช้ตัวกรอง xBR หรือ hqx ใน XNA ได้อย่างไร
ฉันต้องการทำให้สัดส่วนของเกมของฉันสูงขึ้นด้วยหนึ่งในตัวกรอง hqx (hq2x, hq3x หรือ hq4x) หรือตัวกรอง xBRใน shader ฉันจะทำสิ่งนี้ใน XNA 4.0 และ SM3 ได้อย่างไร หมายเหตุด้านข้าง: คำถามนี้ได้รับการแก้ไขอย่างหนักเพื่อเป็นสิ่งที่เป็นอยู่ในปัจจุบัน
11 xna  2d  shaders  pixel  scale 

2
การแสดงสไปรต์เฉพาะจากสไปรต์ชีตโดยใช้ Phaser
ฉันกำลังพยายามสร้างเกมการ์ดโดยใช้ Phaser ซึ่งเป็นเฟรมเวิร์ก HTML5 JS เพราะฉันเป็นศิลปินที่แย่มากและไม่สามารถออกแบบของตัวเองได้ฉันจึงใช้สไปรต์แผ่นภาพเล่นไพ่ฟรีที่ฉันพบทางออนไลน์ ปัญหาคือฉันไม่สามารถหาวิธีแสดงบัตรแต่ละใบโดยใช้ Phaser ในกรอบก่อนหน้านี้ที่ฉันใช้ฉันสามารถสร้างสไปรต์ขนาดเล็กทีละตัวจากแผ่นสไปรต์ขนาดใหญ่ที่ฉันใช้ แต่ฉันไม่สามารถหาวิธีที่จะทำได้ใน Phaser ถ้าเป็นไปได้ ดังนั้นฉันจึงมองไปที่การโหลดภาพเป็นแผ่นสไปรต์ แต่ดูเหมือนว่าสไปรต์แผ่นโฆษณานั้นใช้สำหรับการเคลื่อนไหวเท่านั้นและคุณไม่สามารถแสดง 'กรอบ' ของสไปรต์แผ่นโฆษณาที่เฉพาะเจาะจงได้จริงๆ ฉันคิดว่าสิ่งที่ฉันต้องทำคือการโหลดภาพเป็น tilemap อย่างไรก็ตามภาพเฉพาะที่ฉันใช้ไม่ได้มาพร้อมกับไฟล์ json ที่ระบุรูปแบบ (ฉันไม่สามารถหาได้) เป็นสิ่งใหม่สำหรับ javascript ฉันมีปัญหาในการอ่านซอร์สโค้ดของ Phaser เพื่อดูว่าควรจัดรูปแบบไฟล์ json อย่างไร โดยสรุปแล้ววิธีที่ดีที่สุดในการแสดงการ์ดแต่ละแผ่นของ spritesheet การเล่นไพ่ใน Phaser เป็นเพราะฉันไม่มีไฟล์ json ที่ระบุข้อมูลแผนที่

4
การผสานรูปทรงเรขาคณิต / ตาข่ายโดยไม่สูญเสียผลประโยชน์
ใน three.js เราสามารถรวมรูปทรงเรขาคณิตเพื่อ จำกัด จำนวนการเรียกสายและเพิ่มประสิทธิภาพ ในการทดสอบอย่างง่าย ๆ ด้วยวัสดุชิ้นเดียวฉันสามารถวาด 50.000 คิวบ์ + เงา @ 60fps บน GPU GTX660 ของฉัน โดยไม่มีการผสานเรขาคณิต 5.000 ลูกบาศก์ทำให้เกิดปัญหาอยู่แล้ว ฉันสงสัยว่าจะรักษาประโยชน์ของการเรนเดอร์แต่ละลูกบาศก์ด้วยตัวเองได้อย่างไร ตัวอย่างเช่นวิธีการเลือกตาข่ายลูกบาศก์เมื่อทุกอย่างถูกรวมเป็นหนึ่งเดียว โดยค่าเริ่มต้นนั้นเป็นไปไม่ได้แน่นอน มีเทคนิคทั่วไปสำหรับปัญหานี้หรือไม่? หลังจากทั้งหมดฉันมีวัตถุตาข่าย unmerged ทั้งหมดแม้หลังจากการผสาน ดังนั้นจะต้องมีวิธีที่จะใช้พวกเขาสำหรับการเลือก? สิ่งที่ฉันต้องการทำสั้น ๆ SimCity เช่นเกมเพื่อการเรียนรู้ บ้านแต่ละหลังเป็นตาข่ายลูกบาศก์ ต้องการสร้างบ้าน 50,000 หลังและสามารถเพิ่มและลบบ้านได้ การเลือกเฮ้าส์ด้วยเคอร์เซอร์ของเมาส์ (การหยิบ) จะต้องเป็นไปได้
11 three.js 

1
ฉันจะกำหนดความเร็วของจุดสุดยอดและชิ้นส่วนแยกของฉันได้อย่างไร
ฉันต้องการทราบว่าฉันสามารถตรวจสอบเพื่อดูว่าจุดสุดยอดของฉันหรือชิ้นส่วน Shader ของฉันเป็นคอขวดในท่อแสดงผลของฉัน ฉันได้อ่านเกี่ยวกับการใช้glQueryCounterกับGL_TIMESTAMPเป้าหมายเพื่อรับจุดตรวจสอบสัญญาณนาฬิการะหว่างคำสั่ง OpenGL แต่สิ่งเหล่านี้ไม่ได้แยกความแตกต่างระหว่างประเภทของเฉดสี ตัวอย่างเช่นหากหนึ่งเฟรมบน GPU ใช้เวลาในการเรนเดอร์ 8 มิลลิวินาทีฉันสามารถบอกได้หรือไม่ว่าตัวแบ่งยอดใช้เวลา 7 มิลลิวินาทีและแฟรกเมนต์ตัวแบ่งใช้ 1 มิลลิวินาที

1
Tessellation vs Geometry Shader
แก้ไขให้ถูกต้องหากฉันผิด แต่ทั้ง Geometry Shader และงาน Tessellation Shader นั้นเป็นการสร้างจุดยอดในกราฟิคท่อ สิ่งที่ฉันอยากรู้คือพวกเขาแตกต่างกันอย่างไรและเมื่อใดที่ฉันควรใช้อันอื่น

2
วิธีการใช้การแปล, ระดับ, gizmos หมุนสำหรับจัดการการแปลงของวัตถุ 3 มิติ?
ฉันอยู่ในขั้นตอนการพัฒนาโปรแกรมแก้ไข 3D พื้นฐาน มันใช้ OpenGL สำหรับการเรนเดอร์โลก 3 มิติ ตอนนี้ฉากของฉันเป็นเพียงกล่องขนาดต่าง ๆ และฉันอยู่บนเวทีที่ฉันต้องการให้สามารถเลือกกล่องแต่ละกล่องแล้วย้าย / ปรับขนาด / หมุนเพื่อให้ได้การแปลงที่ฉันต้องการ ฉันจะแก้ปัญหาในการนำเครื่องมือ gizmos ของเครื่องมือเหล่านี้ (หรือที่จับหรือวิธีที่คนทั่วไปเรียกพวกเขา) และเลือกพวกเขาในแต่ละแกนเพื่อทำการเปลี่ยนแปลงในการแปลงด้วยเมาส์ของฉัน? เพื่อความชัดเจน: การวิจัยของฉันจนถึงขณะนี้แนะนำวิธีที่สะอาดที่สุดคือให้มีกล่องจัดแนวแกนต่อลูกศรใน Gizmo และอีกหนึ่งต่อตาราง (คนที่ย้ายวัตถุในเครื่องบินมากกว่าแกนเดียว) แล้วโยนรังสีจากเมาส์ วางตำแหน่งและดูว่ามันปะทะกับอะไร แต่นี่ก็ยังเป็นนามธรรมเกินไปสำหรับฉันฉันขอขอบคุณคำแนะนำเพิ่มเติมในวิธีการที่อัลกอริทึมนี้จะไป (pseudocode มากกว่าพอ)
11 opengl  3d 

4
เป็นไปได้หรือไม่ที่จะใช้ฟังก์ชั่น Steamworks ในเกม Java? อย่างไร?
ฉันมีเกมพื้นฐานที่ฉันต้องการที่จะกลายเป็นสิ่งที่ดีกว่าในที่สุด เกมเป็นจาวาทั้งหมดในตอนนี้ แต่ฉันต้องการใช้ Steamworks SDK ในเกมของฉัน (เพื่อให้สามารถมีความสำเร็จและเวิร์กช็อปและอื่น ๆ ) แต่ Steamworks ต้องใช้ C ++ เป็นไปได้ไหมที่เกม Java เต็มของฉันใช้ Steamworks SDK โดยไม่ต้องเขียนใหม่ใน C ++? ขณะนี้ฉันใช้ jMonkey Engine 3 สำหรับเกมของฉัน
11 java  steam 

2
ข้อกำหนดทางเทคนิคใดบ้างที่ควรกำหนดไว้สำหรับเพลง
ฉันกำลังเขียนเพลงสำหรับวิดีโอเกม ในบางจุดฉันจะต้องทำงานร่วมกับโปรแกรมเมอร์เพื่อกำหนดข้อกำหนดทางเทคนิคสำหรับไฟล์เสียงที่ฉันจะส่งมอบให้พวกเขา เราจะต้องพูดคุยเกี่ยวกับรายละเอียดอะไรบ้าง? ตัวอย่างเช่นคำถามสองสามข้อที่ฉันคิดว่าเราอาจต้องทำคือ: ไฟล์เสียงควรอยู่ในรูปแบบใด ไม่มีการบีบอัด? Lossless? อัด? อะไรคือความสมดุลระหว่างเสียงคุณภาพสูงและขนาดไฟล์เล็ก ดนตรีควรดังขนาดไหน ระดับเสียงเฉลี่ยของแต่ละเพลงควรเป็นอย่างไร สิ่งที่ควรเป็นระดับเสียงดัง การกระจายความถี่ควรทำอย่างไร? ตัวอย่างเช่นฉันควรสร้างจุดของการเขียนเพลงที่ไม่มีเสียงเบสมากเพื่อที่จะได้ยินโฟลลี่ย์เสียงต่ำได้ง่าย? คำถามที่ฉันคิดถึงคำถามสำคัญที่ต้องถามคืออะไร? มีคำถามอื่น ๆ ที่เราควรพูดคุยหรือไม่?
11 music 

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

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