การพัฒนาเกม

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

4
ฉันต้องมีอะไรบ้างในการใช้เพลงที่มีลิขสิทธิ์ในเกมของฉัน
ฉันถามนักร้องของเพลงที่ฉันใช้และเขาก็เห็นด้วยกับฉันในการใช้เพลงของเขาหากฉันให้เครดิตเขา ฉันต้องการอะไรอีกเช่นข้อตกลงหรือลายเซ็น?
39 copyright  music 

4
ทำไมเรเดียนจึงเป็นที่ต้องการมากกว่าระดับในการพัฒนาเกม
ฉันค้นหาคำจำกัดความของเรเดียนและพบว่านักคณิตศาสตร์ชอบพวกเขาเพราะพวกเขามาจากไพแทนที่จะเป็นพลอย่างสมบูรณ์เช่นองศา อย่างไรก็ตามฉันไม่พบเหตุผลที่น่าสนใจที่จะใช้พวกเขาในการพัฒนาเกมอาจเป็นเพราะการขาดความเข้าใจทางคณิตศาสตร์ที่เกี่ยวข้องทั้งหมดของฉัน ฉันรู้ว่าฟังก์ชัน sin / cos / tan ส่วนใหญ่ในภาษาที่เรเดียน แต่บางคนก็สามารถสร้างฟังก์ชั่นห้องสมุดเป็นองศา (และหลีกเลี่ยงข้อผิดพลาดในการปัดเศษโดยธรรมชาติเมื่อใช้ pi) ฉันไม่ต้องการให้สิ่งนี้เป็นแบบสำรวจความคิดเห็นฉันต้องการได้ยินจากคนที่พัฒนาเกม (และการวิจัยทางคณิตศาสตร์ที่เกี่ยวข้อง) ซึ่งเรเดียนเสนอประสบการณ์ที่เหนือกว่าในระดับที่ต่างจาก "เราใช้เรเดียน เพราะเรามักจะใช้มัน "เพื่อประโยชน์ในการช่วยเหลือฉัน (และคนอื่น ๆ ) ที่จะเข้าใจในสิ่งที่ดีสำหรับพวกเขา

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


7
วิธีหนึ่งสามารถใช้โมดูล C ++ แบบถอดเปลี่ยนได้?
เวลาในการทำซ้ำอย่างรวดเร็วเป็นกุญแจสำคัญในการพัฒนาเกมมากกว่ากราฟิกและเครื่องยนต์ที่มีคุณสมบัติมากมายในความคิดของฉัน ไม่น่าแปลกใจนักพัฒนาขนาดเล็กจำนวนมากเลือกภาษาสคริปต์ วิธี Unity 3D ในการหยุดเกมและแก้ไขเนื้อหาและรหัสจากนั้นดำเนินการต่อและให้การเปลี่ยนแปลงมีผลในทันทีเป็นสิ่งที่ยอดเยี่ยมสำหรับเรื่องนี้ คำถามของฉันคือมีใครใช้ระบบที่คล้ายกันในเครื่องมือเกม C ++? ฉันได้ยินมาว่าเอ็นจิ้นระดับไฮเอนด์บางตัวทำได้ แต่ฉันสนใจที่จะค้นหาว่ามีวิธีในเครื่องยนต์หรือเกมที่ปลูกในบ้านหรือไม่ เห็นได้ชัดว่ามีการแลกเปลี่ยนและฉันไม่สามารถจินตนาการได้ว่าคุณสามารถคอมไพล์โค้ดของคุณใหม่ได้ในขณะที่เกมหยุดชั่วคราวให้โหลดใหม่และทำงานภายใต้ทุกสถานการณ์หรือทุกแพลตฟอร์ม แต่อาจเป็นไปได้สำหรับการโปรแกรม AI และโมดูลตรรกะระดับง่าย ไม่ใช่ว่าฉันต้องการทำในโครงการใด ๆ ในระยะสั้น (หรือระยะยาว) แต่ฉันอยากรู้
39 c++  hot-reload 

18
เกมกลยุทธ์เปิดตามที่การกระทำเกิดขึ้นแบบเรียลไทม์ [ปิด]
เอาล่ะความคิดนี้ได้เกิดขึ้นเป็นครั้งที่ 3 ในการสนทนาตอนนี้และมันก็บั๊กฉันมาหลายปีแล้ว แนวคิดนี้เป็นเกมที่ผู้เล่นทุกคนตัดสินใจ / สั่งการออกหน่วยในขณะที่เกมอยู่ในสถานะหยุดชั่วคราวและการกระทำทั้งหมดจะถูกดำเนินการทันทีในเวลาจริง สิ่งนี้อาจอยู่ในระดับใดก็ได้ตั้งแต่ TRPG (เช่น Final Fantasy Tactics) ไปจนถึงการต่อสู้แบบชุลมุนขนาดเล็ก (เช่น Worms) ไปจนถึงเกมที่มีฐานและหลายหน่วย (เช่น Advance Wars) ไปจนถึงเกมประเภทเสี่ยง (เช่น Risk) ) ข้อเสียเปรียบหลักของสิ่งนี้ที่ฉันเห็นคือผู้เล่นไม่เห็นผลลัพธ์ของการกระทำทันที ในเกมวางแผนแบบเทิร์นเบสหรือเรียลไทม์ผู้ใช้คลิกที่ "การโจมตีที่หลอก" และมีการระเบิดในทันที อาจมีสถานการณ์แปลก ๆ (เช่นคุณส่งหน่วยของคุณไปสู่การโต้เถียงกันเรื่องหน่วยที่วิ่งไปในทิศทางตรงกันข้ามเช่น) แต่นั่นเป็นรายละเอียดระดับต่ำ นักออกแบบเกมที่ดีควรจะได้รับสิ่งเหล่านี้ ในที่สุดมันก็มีความยากลำบากโดยทั่วไปของเกมเทิร์นเบส แต่พวกเขาเสนอระดับความลึกทางยุทธวิธีที่เป็นไปไม่ได้ในเกมกลยุทธ์แบบเรียลไทม์และมีตลาดสำหรับพวกเขาอยู่เสมอ (TBSes ใหม่ ๆ ปรากฏขึ้นทุกปี) มีเกมใดบ้างที่ใช้กระบวนทัศน์นี้ ทำไมถึงไม่มีอะไรเพิ่มเติม สิ่งใดที่จำเป็นต่อการทำงานนี้ สิ่งที่อาจเป็นปัญหาที่คุณคาดการณ์ได้? เพื่ออธิบายชัดเจนฉันหมายถึงกลยุทธ์ที่บริสุทธิ์ คำสั่งนั้นป้อนเข้ามาล่วงหน้าและความละเอียดเป็นแบบเรียลไทม์ แต่มันไม่จำเป็นต้องใช้อินพุต "twitch" แบบเรียลไทม์โดยผู้เล่น แก้ไข: คำตอบของ Iainชี้ให้ฉันเห็นLaser …

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

1
ทำไมรหัสการตรวจจับการเต้นผิดเพี้ยนนี้จึงล้มเหลวในการบันทึกการเต้นบางอย่างอย่างถูกต้อง?
ฉันสร้างคลาส SoundAnalyzer นี้เพื่อตรวจจับการเต้นในเพลง: class SoundAnalyzer { public SoundBuffer soundData; public Sound sound; public List<double> beatMarkers = new List<double>(); public SoundAnalyzer(string path) { soundData = new SoundBuffer(path); sound = new Sound(soundData); } // C = threshold, N = size of history buffer / 1024 B = bands public void PlaceBeatMarkers(float C, …
38 c#  audio 

2
ทำไมเราถึงใช้ทฤษฎีบทพีทาโกรัสในเกมฟิสิกส์?
ฉันเพิ่งเรียนรู้ว่าเราใช้ทฤษฎีบทพีทาโกรัสมากในการคำนวณทางฟิสิกส์ของเราและฉันเกรงว่าฉันจะไม่เข้าใจ นี่คือตัวอย่างจากหนังสือเพื่อให้แน่ใจว่าวัตถุไม่เคลื่อนที่เร็วกว่าMAXIMUM_VELOCITYค่าคงที่ในระนาบแนวนอน: MAXIMUM_VELOCITY = <any number>; SQUARED_MAXIMUM_VELOCITY = MAXIMUM_VELOCITY * MAXIMUM_VELOCITY; function animate(){ var squared_horizontal_velocity = (x_velocity * x_velocity) + (z_velocity * z_velocity); if( squared_horizontal_velocity <= SQUARED_MAXIMUM_VELOCITY ){ scalar = squared_horizontal_velocity / SQUARED_MAXIMUM_VELOCITY; x_velocity = x_velocity / scalar; z_velocity = x_velocity / scalar; } } ลองทำสิ่งนี้กับตัวเลข: วัตถุพยายามย้าย 5 หน่วยใน x …

6
เสียงล่าช้าสูงสุดก่อนที่ผู้เล่นจะสังเกตเห็น?
เมื่อมีเหตุการณ์ในเกมความล่าช้าสูงสุดในการสร้างเสียงที่ผู้เล่นจะต้องเชื่อมโยงเสียงกับเหตุการณ์นั้นคืออะไร (และไม่เข้าใจความล่าช้า)
38 audio 

6
ทำไมต้องใช้ตัวเลขสุ่มเมื่อพูดถึงรางวัลและสถิติ
เกมหลายเกมใช้หมายเลขสุ่มสำหรับสิ่งต่าง ๆ เช่นความเสียหายจากการโจมตียกเค้าทองหรือสัตว์ประหลาดชนิดที่ถูกวางไข่ เห็นได้ชัดว่าตัวเลขสุ่มช่วยให้คุณสามารถสร้างเนื้อหาเพื่อให้เกมเล่นซ้ำได้มากขึ้น แต่ฉันกำลังพูดถึงสิ่งที่เฉพาะเจาะจง ตัวอย่างเช่น: ใน DOTA เมื่อคุณฆ่าสัตว์ประหลาดคุณจะได้รับทองคำจำนวนสุ่มระหว่าง x และ y โดยที่ x และ y ไม่เปลี่ยนแปลง เมื่อคุณโจมตีสิ่งใดก็ตามคุณมีโอกาสที่จะสร้างความเสียหายภายในระยะเช่น 52-60 วิธีที่จะทำให้ทองคำลดลงคงที่เกมเปลี่ยน? ฉันรู้สึกว่าตัวเลขสุ่มเพิ่มการเล่นเกม แต่ฉันมีปัญหาในการเข้าใจว่าทำไม ไม่มีใครรู้เหตุผลว่าทำไมตัวเลขสุ่มสามารถทำให้การเล่นเกมดีขึ้นเมื่อใช้กับสิ่งต่าง ๆ เช่นความเสียหายหรือปล้นทรัพย์ ฉันหวังว่าจะได้คำตอบที่ไม่เชื่อว่าจะเป็นเรื่องดี

1
ฉันจะสร้างอนุภาคที่ตอบสนองต่อผู้เล่นและศัตรูได้อย่างไร
ขณะนี้ฉันกำลังสร้างเกมด้วยเอ็นจิ้นเกมของฉันซึ่งฉันเขียนด้วย C ++ และฉันใช้ directx SDK ล่าสุด เกมดังกล่าวเป็นเกมยิงอวกาศจากบนลงล่าง (ด้วยการหมุนที่น่าสนใจมาก) และฉันกำลังมองหาเนบิวลาเอฟเฟกต์ที่ผู้เล่นจะต้องบินผ่าน ฉันอยากลองทำเล็บที่สัมผัสได้ดีกับอนุภาคหลายร้อยชิ้นที่เคลื่อนตัวออกจากทางของผู้เล่นขณะที่มันแล่นเข้าหาพวกมัน ค่อนข้างคล้ายกับว่าอนุภาคเคลื่อนที่ผ่านวิถีของผู้เล่นใน Geomtry Wars บน XBLA อย่างไร ฉันเป็นโปรแกรมเมอร์ที่มีประสบการณ์เมื่อพูดถึง C ++ อย่างไรก็ตามฉันไม่รู้ว่าจะเริ่มใช้เอฟเฟกต์นี้ได้อย่างไร ใครบ้างมีความคิดเจ๋ง ๆ หรือตัวเลือกการออกแบบที่ฉันอาจต้องการดู? อย่าลังเลที่จะตอบระดับความลึกที่คุณต้องการ
38 c++  directx  particles 

2
SpriteBatch ของ XNA ทำงานอย่างไร
เพื่อให้แม่นยำยิ่งขึ้นถ้าฉันต้องการสร้างฟังก์ชันการทำงานนี้ใหม่อีกครั้งตั้งแต่เริ่มต้นใน API อื่น (เช่นใน OpenGL) สิ่งที่จำเป็นต้องทำ ฉันมีความคิดทั่วไปเกี่ยวกับบางขั้นตอนเช่นวิธีจัดเตรียมเมทริกซ์การฉายภาพ orthographic และสร้างรูปสี่เหลี่ยมสำหรับการโทรแต่ละครั้ง อย่างไรก็ตามฉันไม่คุ้นเคยกับกระบวนการแบทช์เอง ล่ามทั้งหมดถูกเก็บไว้ในบัฟเฟอร์จุดสุดยอดเดียวกันหรือไม่ มันต้องการบัฟเฟอร์ดัชนีหรือไม่? พื้นผิวแตกต่างกันอย่างไร ถ้าเป็นไปได้ฉันจะขอบคุณถ้าคุณสามารถแนะนำฉันผ่านกระบวนการตั้งแต่เมื่อ SpriteBatch.Begin () ถูกเรียกจนกระทั่ง SpriteBatch.End () อย่างน้อยที่สุดเมื่อใช้โหมด Deferred เริ่มต้น
38 xna  spritebatch 

7
GUI - yae หรือเปล่า [ปิด]
ฉันทำงานเกี่ยวกับการพัฒนาแอพพลิเคชั่นที่มีระบบ GUI "คงไว้" มากมาย (ด้านล่างเพิ่มเติมเกี่ยวกับสิ่งที่ฉันหมายถึง) เช่น MFC, QT, Forms, SWING และเฟรมเวิร์ก GUI บนเว็บหลายปีที่ผ่านมา ฉันมักจะพบแนวคิดของระบบ GUI ที่ซับซ้อนและเงอะงะมากเกินไป จำนวนกิจกรรมการติดต่อกลับผู้ฟังสำเนาข้อมูลบางสิ่งบางอย่างที่ทำให้เป็นสตริง - การแปลง (และอื่น ๆ ) เป็นแหล่งที่มาของข้อผิดพลาดและปวดหัวเสมอเมื่อเทียบกับส่วนอื่น ๆ ในแอปพลิเคชัน (แม้จะใช้การเชื่อมโยงข้อมูล / รุ่น "ถูกต้อง") ตอนนี้ฉันกำลังเขียนเกมคอมพิวเตอร์ :) ฉันทำงานกับ GUI หนึ่งจนถึงขณะนี้: Miyagi (ไม่เป็นที่รู้จัก แต่โดยทั่วไปแล้วความคิดเดียวกันกับระบบอื่น ๆ ทั้งหมด) มันช่างน่ากลัว สำหรับสภาพแวดล้อมการแสดงผลแบบเรียลไทม์เช่นเกมฉันรู้สึกว่าระบบ GUI ที่ "คงไว้" นั้นล้าสมัยกว่าเดิม อินเทอร์เฟซผู้ใช้โดยทั่วไปไม่จำเป็นต้องมีการจัดวางอัตโนมัติหรือมีหน้าต่างที่ปรับขนาดได้แบบทันที แต่พวกเขาต้องการโต้ตอบอย่างมีประสิทธิภาพมากกับข้อมูลที่เปลี่ยนแปลงอยู่เสมอ (เช่นตำแหน่ง 3 มิติของโมเดลในโลก) …
38 gui 

15
การออกแบบ MMORPG สำหรับผู้เล่นที่มีเวลา จำกัด
ฉันเชื่อว่ามีตลาดที่สำคัญของผู้เล่นที่จะเพลิดเพลินไปกับการสำรวจและการโต้ตอบของ MMORPG แต่ไม่มีเวลาสำหรับการวิ่งมาราธอนที่ไม่สิ้นสุดซึ่งเป็นส่วนหนึ่งของ MMORPG เฉลี่ย MMORPGs ทั้งหมดเกี่ยวกับการปฏิสัมพันธ์ระหว่างผู้เล่น แต่เมื่อผู้เล่นที่แตกต่างกันมีเวลาในการลงทุนในเกมต่างกันผู้ที่มีเวลาน้อยกว่าจะใช้เวลาไม่นานพวกเขาก็จะขาดเพื่อนที่อยู่ในระดับพลังและไม่สามารถโต้ตอบกับพวกเขาได้อีก วิธีหนึ่งในการแก้ไขปัญหานี้คือการจำกัดความก้าวหน้าที่ผู้เล่นสามารถทำได้ต่อวันดังนั้นมันจึงไม่สมเหตุสมผลที่จะเล่นมากกว่าหนึ่งหรือสองชั่วโมงต่อวัน แต่บางครั้งผู้เล่นทั่วไปที่คึกคักที่สุดก็ชอบที่จะใช้เวลาช่วงบ่ายวันอาทิตย์ในการเล่นวิดีโอเกม เพียงแค่หยุดพวกเขาหลังจากสองชั่วโมงก็น่าผิดหวังจริงๆ นอกจากนี้ยังสร้างแรงกดดันให้ใช้ขีด จำกัด ความก้าวหน้ารายวันทุกวันเพราะมิฉะนั้นผู้เล่นจะรู้สึกอยากเสียอะไร ความกดดันนี้จะเป็นอันตรายสำหรับนักเล่นเกมทั่วไป มีอะไรอีกบ้างที่จะทำให้ระดับการเล่นระหว่างผู้เล่นที่เล่น 40+ ชั่วโมงต่อสัปดาห์และผู้ที่เล่นมากกว่า 10 ไม่ได้? แก้ไข:ขอบคุณสำหรับคำตอบทั้งหมดของคุณ พวกเขาล้วนเป็นแรงบันดาลใจและให้ความคิดที่น่าสนใจแก่ฉัน ฉันตัดสินใจว่าสิ่งแรกที่ฉันจะทำคือช่างทำส่วนที่เหลือดังนั้นฉันจึงยอมรับคำตอบของ Orin MacGregor แต่ฉันก็ตอบคำถามอื่นด้วย เมื่อคุณมีความสนใจในร่างแรกของฉันสำหรับช่างที่เหลือคุณสามารถอ่านได้ในบล็อกการพัฒนาของฉัน: http://ontraindevelopment.blogspot.com/2012/10/rest-system.html
38 game-design  mmo 

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