การพัฒนาเกม

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

4
การตอบสนองรูปสี่เหลี่ยมผืนผ้าชนกัน
ฉันมีปัญหาในการรับสี่เหลี่ยมที่เคลื่อนย้ายได้เพื่อชนกับสี่เหลี่ยมมากกว่าหนึ่ง ฉันกำลังใช้SFMLและมันมีฟังก์ชั่นintersectsที่ใช้งานง่ายที่เรียกว่าซึ่งใช้เวลา 2 สี่เหลี่ยมและส่งกลับจุดตัด ฉันมีเวกเตอร์ที่เต็มไปด้วยรูปสี่เหลี่ยมผืนผ้าซึ่งฉันต้องการให้สี่เหลี่ยมที่เคลื่อนย้ายได้ของฉันชนกัน ฉันวนลูปผ่านสิ่งนี้โดยใช้รหัสต่อไปนี้ (p คือสี่เหลี่ยมที่เคลื่อนที่ได้) IsCollidingWithส่งกลับค่าบูล แต่ยังใช้ SFML intersectsเพื่อหาจุดแยก while(unsigned i = 0; i!= testRects.size(); i++){ if(p.IsCollidingWith(testRects[i]){ p.Collide(testRects[i]); } } และCollide()รหัสจริง: void gameObj::collide( gameObj collidingObject ){ printf("%f %f\n", this->colliderResult.width, this->colliderResult.height); if (this->colliderResult.width < this->colliderResult.height) { // collided on X if (this->getCollider().left < collidingObject.getCollider().left ) { this->move( -this->colliderResult.width …

12
ฉันจะสร้างวิดีโอเกมได้อย่างไรหากฉันไม่ชอบการเขียนโปรแกรม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังเรียนรหัส C ++ ในโรงเรียนของฉัน (วิชาเอกคือการเขียนโปรแกรมคอมพิวเตอร์) จริงๆแล้วคะแนนของฉันไม่ค่อยดีนักและงานที่มอบหมายก็ยากจริงๆ บางครั้งฉันรู้สึกเศร้าที่ฉันจะใช้เวลา 8-10 ชั่วโมงต่อวันในการเขียนโค้ด (ซึ่งเป็นเรื่องเครียด) ในอนาคตสำหรับงานของฉัน แต่ฉันยังต้องการสร้างวิดีโอเกม บางทีนี่อาจเป็นเหตุผลเดียวที่ฉันกำลังเรียนหลักสูตรเครียดเหล่านี้ทั้งหมด ฉันมักจะเขียนพล็อตเรื่องตัวละครโลกแห่งเกมสมมติ ... ครั้งหนึ่งฉันคิดว่าฉันควรศึกษาเทคโนโลยีด้านศิลปะเช่นการออกแบบเกมและไม่ใช่เทคโนโลยีคอมพิวเตอร์เช่น C ++, C # ฯลฯ อย่างไรก็ตามนักออกแบบเกมยอดนิยม (หรือผู้กำกับ) เช่น Kojima, Miyamoto และอื่น ๆ เคยเป็นโปรแกรมเมอร์ที่ดี บริษัท ที่ดำเนินการมอบหมายโปรแกรมเมอร์ให้กรรมการเพราะพวกเขาเข้าใจวิธีการทำเกม ฉันพยายามหาวิทยาลัยหรือมหาวิทยาลัยอื่น ๆ ที่พวกเขาสอนโปรแกรมออกแบบเกม อย่างไรก็ตามหนึ่งบทความที่มีอันดับ 10 โรงเรียนออกแบบเกมในอเมริกาเหนือดูเหมือนไม่น่าไว้วางใจเพราะ บริษัท สำรวจทำคะแนนจากนักเรียนหลายคน …

1
พื้นที่หน้าจอสู่อวกาศโลก
ฉันกำลังเขียนเกม 2D ที่โลกของเกมของฉันมีแกนxวิ่งจากซ้ายไปขวาแกนyวิ่งจากบนลงล่างและแกนzออกจากหน้าจอ: ในขณะที่โลกของเกมของฉันอยู่บนลงล่างเกมจะแสดงผลในลักษณะเอียงเล็กน้อย: ฉันกำลังทำงานในการฉายจากอวกาศโลกไปยังพื้นที่หน้าจอและในทางกลับกัน ฉันมีงานเดิมดังนี้: var viewport = new Viewport(0, 0, this.ScreenWidth, this.ScreenHeight); var screenPoint = viewport.Project(worldPoint.NegateY(), this.ProjectionMatrix, this.ViewMatrix, this.WorldMatrix); NegateY()วิธีขยายไม่ตรงกับสิ่งที่ดูเหมือนตั้งแต่ XNA ของYแกนวิ่งล่างขึ้นบนแทนบนลงล่าง ภาพหน้าจอด้านบนแสดงว่าสิ่งนี้ทำงานได้ทั้งหมด โดยทั่วไปฉันมีหลายจุดในพื้นที่ 3 มิติที่ฉันแสดงในพื้นที่หน้าจอ ฉันสามารถแก้ไขคุณสมบัติกล้องแบบเรียลไทม์และดูว่ามันเคลื่อนไหวไปยังตำแหน่งใหม่ได้อย่างไร เห็นได้ชัดว่าเกมจริงของฉันจะใช้สไปรท์แทนที่จะเป็นจุดและตำแหน่งกล้องจะได้รับการแก้ไข แต่ฉันแค่พยายามทำให้คณิตศาสตร์ทั้งหมดเข้าที่ก่อนที่จะถึงสิ่งนั้น ตอนนี้ฉันพยายามที่จะแปลงกลับในทางอื่น นั่นคือกำหนดxและyในพื้นที่หน้าจอด้านบนกำหนดจุดที่สอดคล้องกันในพื้นที่โลก ดังนั้นถ้าฉันชี้เคอร์เซอร์ไปที่มุมล่างซ้ายของรูปสี่เหลี่ยมคางหมูสีเขียวฉันต้องการอ่านพื้นที่โลก (0, 480) Zประสานงานที่ไม่เกี่ยวข้อง หรือค่อนข้างพิกัดzจะเป็นศูนย์เสมอเมื่อทำแผนที่กลับสู่อวกาศโลก เป็นหลักฉันต้องการใช้ลายเซ็นวิธีการนี้: public Vector2 ScreenPointToWorld(Vector2 point) ฉันพยายามหลายสิ่งหลายอย่างเพื่อให้การทำงานนี้ แต่ฉันไม่มีโชค ความคิดล่าสุดของฉันคือฉันต้องโทรหาViewport.Unprojectสองครั้งด้วยค่าที่ใกล้เคียง / ไกลzคำนวณผลลัพธ์Ray, ทำให้เป็นมาตรฐานแล้วคำนวณจุดตัดของเครื่องหมายRayด้วยPlaneที่แสดงถึงระดับพื้นดินของโลก อย่างไรก็ตามฉันติดอยู่ในขั้นตอนสุดท้ายและไม่แน่ใจว่าฉันทำสิ่งที่ซับซ้อนเกินไปหรือไม่ …
10 xna  c#  matrix  projection  screen 

3
มีข้อได้เปรียบในการใช้ DX10 / 11 สำหรับเกม 2D หรือไม่?
ฉันไม่คุ้นเคยกับชุดคุณลักษณะที่แนะนำโดยฮาร์ดแวร์ระดับ DX10 / 11 ฉันคุ้นเคยกับขั้นตอนใหม่ที่เพิ่มเข้ากับไปป์ไลน์กราฟิกที่ตั้งโปรแกรมได้เช่น geometry shader, compute shader และขั้นตอน tessellation ใหม่ ฉันไม่เห็นว่าสิ่งเหล่านี้สร้างความแตกต่างให้กับเกม 2D ได้อย่างไร มีเหตุผลที่น่าสนใจไหมที่จะเปลี่ยนไปใช้ DX10 / 11 (หรือ OpenGL ที่เทียบเท่า) สำหรับเกม 2D หรือมันจะฉลาดกว่าที่จะยึดติดกับ DX9 โดยพิจารณาว่าส่วนแบ่งที่สำคัญของตลาดยังคงใช้เทคโนโลยีเก่า (เช่น กุมภาพันธ์ 2555 การสำรวจบน Steam แสดงรายการผู้ใช้ประมาณ 17% ที่ยังใช้ Windows XP อยู่ใช่ไหม?
10 2d  graphics  directx 

1
ทางออกที่มีประสิทธิภาพสำหรับการแบ่งพื้นที่หลายคน?
คำถามนี้ค่อนข้างยุ่งยาก แต่ฉันจะพยายามทำให้ชัดเจน ช่วยบอกว่าฉันกำลังสร้างเกมออนไลน์ (ไม่ใช่ MMO-scale) แต่นั่นก็รองรับผู้เล่นให้มากที่สุดเท่าที่จะทำได้ในแนวทางเซิร์ฟเวอร์ที่เชื่อถือได้ ผมต้องการที่ยิ่งใหญ่ของโลกที่มีจำนวนมากของศัตรู AI จำลอง ฉันรับทราบถึงกลยุทธ์สองสามประการในการประหยัด CPU ของเซิร์ฟเวอร์โดยแบ่งย่อยพื้นที่และไม่ประมวลผลสิ่งที่ไม่ต้องการการประมวลผล ฉันแบ่งโลกแล้วตามภูมิภาคซึ่งจะต้องใช้เวลาโหลดและการเปลี่ยนภาพเล็กน้อยซึ่งฉันคิดว่าเป็นสิ่งสำคัญในการรักษาคุณภาพของการเล่นเกมเมื่อเล่นในพื้นที่ ฉันไม่ได้คาดหวังว่าผู้เล่นจะอยู่ในมากกว่าหนึ่งหรือสองภูมิภาค ปัญหาคือภูมิภาคสามารถมีขนาดใหญ่และมี NPC จำนวนมากในเวลาเดียวกัน ฉันจะจัดการสิ่งนี้โดยไม่กระทบต่อประสบการณ์ของผู้เล่นได้อย่างไร วิธีการเช่นเซิร์ฟเวอร์เดียวต่อภูมิภาคและเหมือนกันไม่ได้อยู่ในตาราง ฉันส่วนใหญ่กำลังมองหาโครงสร้างข้อมูลเพื่อเก็บพยุหะศัตรูและแม้แต่ NPC ที่สงบสุข ในการสรุปคำถามโปรดทราบว่ามียานพาหนะอยู่ดังนั้นจึงรวดเร็วในการเดินทางภายในภูมิภาคซึ่งมีอิทธิพลต่อ "เมื่อ" ถึงการเลือกพื้นที่

6
มี (ครอบครัวของ) ฟังก์ชั่นเสียงรบกวนไม่ลดลง monotonically (s)?
ฉันต้องการฟังก์ชั่นในการเคลื่อนไหววัตถุที่เคลื่อนที่จากจุด A ไปยังจุด B เมื่อเวลาผ่านไปเช่นถึงจุด B ในเวลาที่กำหนด แต่ตำแหน่งของมันในเวลาใดก็ได้จะถูกรบกวนแบบสุ่มอย่างต่อเนื่อง แต่ไม่ย้อนกลับ วัตถุเคลื่อนที่ไปตามเส้นตรงดังนั้นฉันต้องการเพียงมิติเดียว ในทางคณิตศาสตร์นั่นหมายความว่าฉันกำลังมองหา f (x) ต่อเนื่อง, x ∈ [0,1], เช่นนั้น: f (0) = 0 f (1) = 1 x <y → f (x) ≤ f (y) ที่คะแนน "มากที่สุด" f (x + d) - f (x) ไม่มีความสัมพันธ์ที่ชัดเจนกับ d (ฟังก์ชั่นไม่ได้เพิ่มขึ้นอย่างสม่ำเสมอหรือคาดการณ์ได้ฉันคิดว่ามันก็เทียบเท่ากับการบอกว่าไม่มีอนุพันธ์ระดับใดคงที่) โดยหลักการแล้วฉันอยากได้ครอบครัวที่มีฟังก์ชั่นเหล่านี้โดยระบุสถานะเมล็ดพันธุ์ ฉันต้องการเมล็ดพันธุ์อย่างน้อย 4 บิต …

5
วิธีการเขียนวิดีโอเกม [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นนักเขียนที่ยอดเยี่ยมที่มีความสามารถในการสร้างตัวละครโลกและโครงเรื่องที่มีเอกลักษณ์และน่าดึงดูด ด้วยเหตุผลบางอย่างฉันกำลังเรียนวิทยาศาสตร์คอมพิวเตอร์ แต่ฉันรู้ว่าการเขียนนิยายเป็นการโทรที่แท้จริงของฉัน ฉันจะหางานระดับเริ่มต้นหรือฝึกงานที่พัฒนาเรื่องราวตัวละครและบทสนทนาสำหรับวิดีโอเกมได้อย่างไร นั่นจะเป็นงานในฝันของฉันและฉันรู้ว่าฉันสามารถทำการแสดงที่ยอดเยี่ยม มีเคล็ดลับใดบ้างในการหาโอกาส? Google ค้นพบงานออกแบบเกมมากมาย แต่ฉันคิดว่ามันแตกต่างกัน ฉันไม่พบสิ่งที่เกี่ยวข้องกับการเขียน ขอบคุณ!
10 jobs 

2
ฉันจะขอให้ผู้ใช้สัมผัสกับเกมฟรีได้อย่างไร?
ดังนั้นฉันมีเกมที่มีผู้ใช้งานเพียงไม่กี่คน แต่มีผู้ใช้จริงน้อยมาก มันเป็นเกมฟรีในตลาด Android รองรับผ่านโฆษณา ฉันเล่นกับความคิดของการ popping up ประกาศให้ผู้ใช้เป็นระยะกระตุ้นให้พวกเขาทำสิ่งที่ชอบ: ดูโฆษณาที่นำเสนอ เขียนคำวิจารณ์เชิงบวกใน Android Marketplace ส่งเสริมให้เพื่อนเล่น ตอนนี้ฉันได้ตั้งค่าในเวอร์ชันที่ไม่เผยแพร่เพื่อทำสิ่งนี้ทุกๆ 5 เกมเมื่อผู้ใช้เล่นอย่างน้อย 10 เกมยกเว้นว่าพวกเขาคลิกโฆษณาเป็นระยะ ฉันไม่ได้บอกให้ผู้ใช้รู้สิ่งนี้ฉันไม่ต้องการให้พวกเขาคลิกที่โฆษณาเพื่อให้ป๊อปอัปหยุด โดยพื้นฐานแล้วฉันต้องการแรงบันดาลใจเพิ่มเติมจากผู้ใช้เล็กน้อยเพื่อไปยังระดับต่อไปและฉันแจ้งให้พวกเขารู้ว่าฉันต้องการอะไรจากพวกเขา นี่จะเป็นการช่วยฉันออกมาหรือฉันจะฝังตัวเองมากกว่านี้อีกหรือเปล่า? ขอบคุณ!

2
วิธีการใดดีกว่า: การอัพเดทเล็ก ๆ น้อย ๆ หรือการอัพเดทครั้งใหญ่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งเปิดตัวอัลฟ่าฟรีที่เผยแพร่ต่อสาธารณชนเป็นครั้งแรกสำหรับนักยิงจากบนลงล่าง: Dread ฉันกำลังพยายามตัดสินใจว่ากำหนดการวางจำหน่ายการอัพเดทขนาดเล็กรายสัปดาห์ / รายสัปดาห์นั้นดีกว่าการอัพเดทขนาดใหญ่รายเดือนแบบดั้งเดิมหรือนานกว่านั้นหรือไม่ ตารางบ่อยขึ้นหมายถึงว่าผู้เล่นจะมีงานสร้างใหม่ให้เล่นบ่อยขึ้น แต่งานสร้างใหม่มีแนวโน้มที่จะมีการแก้ไขข้อบกพร่อง / เพิ่มฟีเจอร์ไม่กี่ครั้งเท่านั้น ผู้เล่นจะเบื่อกับการอัพเดทอย่างต่อเนื่องหรือพวกเขาจะรู้สึกผูกพันมากขึ้นเพราะพวกเขามีส่วนร่วมในกระบวนการพัฒนามากขึ้นหรือไม่? ฉันคิดว่าเนื่องจากลักษณะเกมของฉันค่อนข้างทดลองอาจเป็นเรื่องดีที่ผู้คนจะมีโอกาสแนะนำการปรับแต่งคุณสมบัติใหม่ในช่วงวัยทารก แต่ฉันไม่ต้องการคำติชมของฉันที่มีต่อการตัดสินใจของฉัน คุณมีความคิด / ประสบการณ์เกี่ยวกับเรื่องนี้อย่างไร?

2
พื้นผิว Projective และแสงรอการตัดบัญชี
ในคำถามก่อนหน้านี้ฉันถามว่าเป็นไปได้ไหมที่จะทำพื้นผิวแบบ Projective ด้วยแสงที่เลื่อนออกไป ตอนนี้ (มากกว่าครึ่งปีต่อมา) ฉันมีปัญหากับการใช้งานสิ่งเดียวกัน ฉันพยายามที่จะใช้เทคนิคนี้ในการส่งผ่านแสง (โปรเจ็กเตอร์ของฉันไม่มีผลต่ออัลเบโด้) ฉันมีโปรเจ็กเตอร์นี้ดูเมทริกซ์การฉาย: Matrix projection = Matrix.CreateOrthographicOffCenter(-halfWidth * Scale, halfWidth * Scale, -halfHeight * Scale, halfHeight * Scale, 1, 100000); Matrix view = Matrix.CreateLookAt(Position, Target, Vector3.Up); สถานที่halfWidthและhalfHeightเป็นครึ่งหนึ่งของความกว้างและความสูงของพื้นผิวPositionคือตำแหน่งของโปรเจ็กเตอร์และtargetเป็นเป้าหมายของโปรเจ็กเตอร์ ดูเหมือนว่าจะโอเค ฉันกำลังวาดรูปสี่เหลี่ยมเต็มหน้าจอด้วย shader นี้: float4x4 InvViewProjection; texture2D DepthTexture; texture2D NormalTexture; texture2D ProjectorTexture; float4x4 ProjectorViewProjection; sampler2D depthSampler = …

2
มันคุ้มค่าหรือไม่ที่จะใช้สระอนุภาคในภาษาที่มีการจัดการ?
ฉันจะใช้พูลวัตถุสำหรับระบบอนุภาคของฉันใน Java จากนั้นฉันพบสิ่งนี้ใน Wikipedia ในการใช้ถ้อยคำใหม่กล่าวว่ากลุ่มวัตถุไม่คุ้มค่าที่จะใช้ในภาษาที่ได้รับการจัดการเช่น Java และ C # เนื่องจากการจัดสรรใช้เวลาเพียงสิบการดำเนินการเมื่อเทียบกับหลายร้อยในภาษาที่ไม่มีการจัดการเช่น C ++ แต่อย่างที่เรารู้กันดีว่าทุกคำสั่งอาจทำให้ประสิทธิภาพของเกมแย่ลง ตัวอย่างเช่นพูลของไคลเอ็นต์ใน MMO: ไคลเอ็นต์จะไม่เข้าและออกจากพูลเร็วเกินไป แต่อนุภาคอาจได้รับการต่ออายุหลายสิบครั้งในหนึ่งวินาที คำถามคือ: มันคุ้มค่าหรือไม่ที่จะใช้กลุ่มวัตถุสำหรับอนุภาค (โดยเฉพาะกลุ่มที่ตายและสร้างใหม่อย่างรวดเร็ว) ในภาษาที่มีการจัดการหรือไม่?

2
Breakout Collision: ตรวจจับด้านข้างของการชน
ฉันกำลังเขียนโคลน breakout (เกมแรกของฉัน) และฉันติดอยู่กับวิธีที่ฉันคิดออกว่าด้านใดของก้อนอิฐที่ถูกกระแทก ฉันมีวิธีตรวจจับการชนกันที่มีลักษณะดังนี้: DetectCollision(Object a, Object b) x = distance(a.x, b.x); y = distance(a.y, b.y); if (x is smaller than the combined width & y is smaller is than combined height { return true; } return false; มันใช้งานได้ดี แต่ฉันต้องรู้ด้านของการชนและตำแหน่งที่สัมพันธ์กับศูนย์กลางเพื่อตอบสนองอย่างถูกต้อง ฉันใช้เวลาสองสามวันที่ผ่านมาสอดแนม แต่ก็หายไป

5
การพัฒนาสำหรับ iOS บน Linux [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ฉันกำลังมองหาเครื่องมือหรือไลบรารีเพื่อพัฒนาเกมสำหรับ iOS บน Linux ระดับสูง, ระดับต่ำ, GUI, ไม่มี GUI ไม่สำคัญมากนัก ฉันกำลังมองหาอะไรจริงๆ ฉันไม่ได้พูดถึงการปรับใช้กับ iOS จาก Linux หรืออะไรทำนองนั้น ฉันแค่ต้องการทำงานเป็นกลุ่มบน Linux ด้วยการเปลี่ยนแปลงเล็กน้อยเพื่อให้ทำงานบน iOS แก้ไข: ใช่ฉันมีสิทธิ์เข้าถึง Mac แต่มีข้อ จำกัด ดังนั้นฉันจึงต้องการที่จะทำงานในโครงการบนกล่อง Ubuntu ปกติของฉัน นอกจากนี้ฉันยังอยู่ในโปรแกรมนักพัฒนาที่ชำระเงินแล้วดังนั้นฉันจึงสามารถปรับใช้กับอุปกรณ์ iOS จาก Mac ได้
10 ios  iphone  linux 

2
วาดเส้นกว้างหนึ่งพิกเซลในพื้นที่ 3 มิติ
ฉันต้องการวาดเส้นในพื้นที่ 3 มิติที่กว้างเสมอหนึ่งพิกเซลบนหน้าจอไม่ว่ากล้องจะอยู่ไกลแค่ไหน (และเช่นเดียวกันสำหรับจุดเดียวเกินไป) มีคำแนะนำใด ๆ เกี่ยวกับวิธีที่ฉันสามารถทำได้?
10 xna 

3
เป็นวิธีที่ดีในการเล่นเสียงเมื่อเกิดอะไรขึ้น? เสียงนี้เป็นอย่างไร
ดังนั้นฉันจึงคิดว่าชั้นหินใหญ่ของฉันจะมีเวลามากแค่ไหน ตัวอย่างเช่นในวิธีการCharacterของชั้นเรียนJumpหนึ่งอาจมีการอ้างอิงไปยังวัตถุที่มีผลกระทบเสียงและเล่นที่ โดยตัวมันเองนั้นดี แต่เมื่อคำนึงถึงฟิสิกส์การเคลื่อนไหวการชน ฯลฯ วิธีการกระโดดนั้นมีขนาดใหญ่มากและCharacterชั้นเรียนมีการพึ่งพาสิ่งต่างๆมากมาย ถึงกระนั้นนี่อาจจะใช้ได้ อย่างไรก็ตามถ้าหากเราไม่ต้องการให้เสียงเล่นอีกต่อไปเมื่อตัวละครกระโดด ตอนนี้เราต้องค้นหาบรรทัดของรหัสที่ระบุในระเบียบที่ยุ่งเหยิงของJumpรหัสและแสดงความคิดเห็นหรืออะไรก็ตาม ดังนั้น .. ฉันกำลังคิด .. จะเกิดอะไรขึ้นถ้ามีAudioSystemคลาสบางประเภทและทั้งหมดนี้คือการสมัครรับกิจกรรมแบบสุ่มที่สนใจในคลาสอื่น ๆ ตัวอย่างเช่นCharacterคลาสอาจมีJumpedเหตุการณ์ (คงที่ด้วยฉันคิดว่า) ที่ยกขึ้นภายในCharacterชั้นเรียนในวิธีการ จากนั้นCharacterชั้นเรียนก็จะไม่รู้อะไรเกี่ยวกับเอฟเฟกต์เสียงเล็กน้อยที่เล่นเมื่อตัวละครกระโดด AudioSystemก็จะเป็นชั้นขนาดใหญ่ที่โปรแกรมเมอร์ที่จะล่าถอยไปที่จะขอขึ้นผลกระทบเสียงกับเหตุการณ์บางอย่างที่เกิดขึ้นในเกมที่ผ่านการใช้เหตุการณ์ที่เกิดขึ้นคง แล้วถ้ามันมีขนาดใหญ่เกินไปก็อาจจะแยกออกจากกันใน subclasses เช่นEffectsAudioSystem, BackgroundAudioSystem, AmbientAudioSystemและอื่น ๆ จากนั้นในตัวเลือกสำหรับเกมหนึ่งสามารถมีช่องทำเครื่องหมายเพื่อเปิดใช้งานหรือปิดการใช้งานเสียงเหล่านี้และสิ่งที่จะต้องทำคือการปิดการใช้งานระบบที่มีธงบูลีนที่เรียบง่ายและเดียว ความคิดเกี่ยวกับระบบนี้สามารถขยายไปสู่สิ่งต่าง ๆ เช่นฟิสิกส์ภาพเคลื่อนไหวและอื่น ๆ จนถึงจุดที่เกมส่วนใหญ่ตอบสนองจากการกระทำของผู้เล่นถูกเชื่อมโยงผ่านระบบที่ซับซ้อนและแยกชิ้นส่วนเหล่านี้ ตกลงดังนั้นคำถามของฉันอาจคลุมเครือเล็กน้อย แต่สิ่งที่เสียงแบบนี้? ฉันไม่เคยได้ยินเกี่ยวกับระบบแบบนี้มาก่อนเลย ทั้งหมดนี้อยู่ในหัวของฉันตอนนี้โดยไม่ต้องมีการเข้ารหัสใด ๆ ดังนั้นบางทีมันอาจเป็นหนึ่งใน "ข้อตกลงที่ดีในทางทฤษฎี แต่ไม่ใช่ในทางปฏิบัติ" ระบบประเภทนี้จะทำงานกับเกมที่มีขนาดใหญ่กว่าหรือในที่สุดมันจะพังและกลายเป็นระเบียบมากกว่าเดิม
10 c#  architecture  sound 

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