การทดสอบพัฒนาขับเคลื่อนมีผลต่อการพัฒนาเกมหรือไม่?


23

เมื่อได้รับการรับรอง Scrum ฉันมักจะชอบวิธีการ Agile ในขณะที่พัฒนาระบบและแม้แต่ใช้ผืนผ้าใบบางส่วนจากเฟรมเวิร์ก Scrum เพื่อจัดการงานประจำวันของฉัน

นอกจากนี้ฉันสงสัยว่า TDD เป็นตัวเลือกในการพัฒนาเกมหรือไม่ถ้าเป็นจริง?

ถ้าฉันเชื่อคำถาม GD นี้ TDD ไม่ค่อยได้ใช้ในการพัฒนาเกม
เหตุใด MVC & TDD จึงไม่ได้ใช้งานสถาปัตยกรรมเกมมากขึ้น?

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

นอกจากนี้กฎต่อการต่อสู้ของ Scrum ยังสนับสนุนให้มีการนัดพบที่กำหนดในขณะที่ทุกการกระทำในการต่อสู้ของ Scrum นั้นได้รับการบรรจุในกล่องเวลา! ดังนั้นฉันเห็นด้วยเมื่อในคำถามเชื่อมโยงข้างต้นพวกเขาบอกว่าจะหยุดพยายามสร้างระบบและเริ่มเขียนเกม มันค่อนข้างที่ Scrum พูดว่าพยายามอย่าสร้างระบบที่สมบูรณ์แบบก่อนอื่น: ทำให้มันทำงานได้ในตอนท้ายของ Sprint จากนั้นให้ปรับรหัสในขณะที่ทำงานใน Sprint ที่สองหากจำเป็น!

ฉันเข้าใจว่าหากไม่ใช่ทุกแผนกที่รับผิดชอบการพัฒนาเกมใช้ Scrum การต่อสู้กลายเป็นสิ่งที่ไร้ประโยชน์ แต่ลองพิจารณาสักครู่ว่าทุกแผนกใช้ Scrum ... ฉันคิดว่า TDD จะดีในการเขียนโค้ดที่ไม่มีข้อบกพร่องถึงแม้ว่าคุณไม่ต้องการเขียนระบบ / เกมที่สมบูรณ์แบบ

ดังนั้นคำถามของฉันมีดังต่อไปนี้:

TDD มีศักยภาพในการพัฒนาเกมหรือไม่?


การอภิปรายจากคำถามนี้จะเพิ่มอะไรนอกเหนือจากคำถามที่คุณเชื่อมโยง?

ฉันนำเสนอกรอบการต่อสู้ของการบริหารโครงการในการพัฒนาซอฟต์แวร์ Agile และโต้แย้งว่าสิ่งที่ Scrum ต้องการจากนักพัฒนาในช่วง Sprint จึงทำให้ TDD ทำงานได้เป็นตัวเลือก ฉันต้องการให้มุมมองของผู้อื่นเกี่ยวกับเรื่องนั้นจากมุมมองการแย่งชิงไม่ใช่เพียงภายใต้มุมมอง TDD หรือ MVC ฉันต้องการที่จะเข้าใจว่า TDD นั้นไม่เป็นไปได้อย่างไรเมื่อถูกโต้แย้งจากด้านนี้ของเหรียญนอกเหนือจากการพิจารณา TDD ว่าเป็นแนวทางแบบสแตนด์อโลน
Marcouiller จะ

@ จะ TDD == การออกแบบบนลงล่างหรือการออกแบบการทดสอบขับเคลื่อน? ฉันคิดบนลงล่างและจะให้คำตอบของการบริหารจัดการในระยะยาว แต่แล้วเห็นคำตอบอื่น ๆ ที่ถูกตีความ TDD ในทางที่ฉันไม่ได้เป็น ...
เจมส์

@James: ทดสอบการพัฒนาแบบขับเคลื่อน
ความวุ่นวาย

@James: ขออภัยในความสับสน! ฉันไม่รู้เกี่ยวกับความหมายอื่น ๆ ของคำย่อเนื่องจากสิ่งที่ฉันมีอยู่ในใจก็คือการพัฒนาซอฟต์แวร์ Agile ด้วย Scrum
Marcouiller จะ

คำตอบ:


11

เป็นไปได้อย่างแน่นอนแม้ว่าโปรแกรมเมอร์เกมจำนวนมากยังไม่ได้ลงความเห็นหรือยังมีความเข้าใจที่ดีเกี่ยวกับวิธีทดสอบระบบที่ซับซ้อน ฉันยอมรับว่าตัวเองไม่ค่อยได้ใช้ยกเว้นระบบที่ไม่เกี่ยวข้องกับเกมที่ง่ายต่อการทดสอบ

คาดว่าจะใช้วัตถุจำลองมาก เนื่องจากการเชื่อมโยงระบบจำนวนมากเข้าด้วยกันมันจึงยากที่จะทดสอบแต่ละองค์ประกอบของสิ่งนั้น

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

อย่างไรก็ตามมีหลายสิ่งหลายอย่างที่ไม่จำเป็นต้องทดสอบหน่วยในความหมายดั้งเดิมของคำ แต่มีอยู่ว่า "การทดสอบ" สำหรับคุณสมบัติเฉพาะ สิ่งต่าง ๆ เช่นระดับการทดสอบสำหรับการนำทาง AI นั้นค่อนข้างทั่วไป แต่ไม่จำเป็นต้องเป็นสิ่งที่ง่ายที่สุดในการทำให้เป็นอัตโนมัติ

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


9
สิ่งเหล่านี้เป็นข้อเสนอที่ยอดเยี่ยมสำหรับการมีอยู่ของการทดสอบอัตโนมัติ

1
ความคิดเห็นที่น่าสนใจ Tetrad! ขอบคุณสำหรับเม็ดเกลือของคุณ คุณถามวิธีทดสอบภาพเคลื่อนไหวแบบภาพ? ยากที่จะบอกว่าสำหรับระบบสามมิติเนื่องจากฉันยังไม่เคยเขียนเกมเดียวบางทีหลังจากที่บางคนพัฒนาเกมเล็ก ๆ ไปสักสองสาม! นอกจากนี้ใน 2D ฉันมักจะเห็นวัตถุที่แสดงโดยเมทริกซ์และตัวแยกวิเคราะห์เมทริกซ์เพื่อแสดงภาพบนหน้าจอ ดังนั้นเพื่อให้แน่ใจว่าหลังจากกดปุ่มทิศทางแล้วข้อมูลที่ถูกต้องที่พบในสถานที่ที่เหมาะสมในเมทริกซ์ที่ได้อาจเป็นจุดเริ่มต้น ฉันยังไม่รู้เกี่ยวกับองค์ประกอบภาพของเกมมากพอและในปีนี้ฉันจะแน่ใจ! =)
Marcouiller จะ

ฉันกลับมาหลังจากการเข้ารหัสเพื่อบอกว่าฉันได้ตอบคำถามในสัปดาห์นี้ (ครั้งแรกของฉันใน GD! =)) ที่ต้องการความรู้เกี่ยวกับแนวคิดของ OOP สหกรณ์ต้องการที่จะย้ายงูบนKeys.Down, Keys.Leftฯลฯ นั่นจะบอกว่าเกมรู้ที่ผู้ใช้ต้องการงูที่จะไปและงูได้ไปที่เกมบอกว่ามัน แต่ที่เป็นเพียงงูที่รู้วิธี ที่จะย้ายไปในทิศทางที่แตกต่างดังนั้นจึงเป็นตำแหน่งในเกม เมื่อบอกเรื่องนี้แล้ว IMHO ทำให้Snakeชั้นเรียนเป็นแบบทดสอบได้! (จะดำเนินการต่อ ... )
Will Marcouiller

ไม่เพียงทดสอบได้ แต่ตอนนี้เป็นตัวเลือกที่ดีสำหรับ TDD ให้บอกว่างูเริ่มต้นที่ตำแหน่งVector2.Zeroด้วยความเร็ว10.0fบนทั้งแกน X และ Y ในเกม 2D นี้ คำถามแรกคือ: มันอยู่ในตำแหน่งเริ่มต้นที่ควรและวิธีการทดสอบหรือไม่ จากนั้นคุณคิดว่าPositionทรัพย์สินจะต้องเปิดเผยต่อสาธารณะ ประการที่สอง: วิธีที่จะทำให้มันย้าย? วิธีการเคลื่อนไหวควรจะดีเพื่อให้คุณเขียนทดสอบสำหรับวิธีทิศทางแต่ละMoveDown, MoveLeftและอื่น ๆ ตอนนี้ไปและเขียนประกาศวิธีการของคุณและดูว่าการทดสอบบ่น จากนั้นยืนยันตำแหน่งของงูอีกครั้ง
Will Marcouiller

หลังจากMoveDownวิธีการโทร! เนื่องจากคุณรู้ว่าPositionคุณสมบัติได้รับการทดสอบอย่างละเอียดนั่นคือสมาชิกที่คุณสามารถนับได้! คุณอาจคาดเดาความต่อเนื่องที่นี่! ;-) กล่าวได้ว่าองค์ประกอบภาพไม่สามารถทดสอบได้แน่นอน แต่งูควรมีลักษณะเหมือนงูทั้งหมดขึ้นอยู่กับประเภทของงูที่คุณต้องการในเกม ศิลปินวาดงูควรพิสูจน์ความพึงพอใจมากพอกับ / วาดรูปงูซึ่งไม่ได้ผ่านการทดสอบ TDD แน่นอน! แต่ตำแหน่งของมันเมื่อเทียบกับวัตถุอื่น ๆ สามารถและระดับที่แสดงถึงงูนี้เช่นกัน ในความเป็นจริง TDD
Will Marcouiller

11

ฉันไม่คิดว่า TDD มีความเหมาะสมที่จะเป็นพื้นฐานสำหรับการพัฒนาเกม การทดสอบหน่วยอัตโนมัติเป็นส่วนหนึ่งของระเบียบวิธี แต่มีข้อกังวลหลัก ๆ หลายประการเกี่ยวกับการพัฒนาเกมที่เป็นอัตวิสัยและไม่สามารถทดสอบด้วยเครื่องสำหรับการทดสอบเพื่อเป็นตัวขับเคลื่อนการพัฒนา คุณจะเขียนบททดสอบเพื่อดูว่าช่างเกมสนุกหรือไม่? ระดับนั้นดึงดูดสายตาหรือไม่? ถึงแม้ระดับจะใช้เวลาผู้เล่นทั่วไปประมาณ 15 นาทีให้เสร็จสมบูรณ์? TDD เหมาะสมกับสถานการณ์ที่สามารถวัดปริมาณของโครงการในแง่ของการปฏิบัติตามข้อกำหนดและนั่นไม่ใช่การพัฒนาเกม


3
คุณหมายถึงอะไรเมื่อคุณพูดว่าการพัฒนาเกมไม่ได้เป็นไปตามข้อกำหนด ประเด็นของฉันคือคุณต้องรู้ว่าคุณเขียนเกมแบบไหนเมื่อคุณต้องการเขียน เช่นข้อกำหนดคุณสมบัติจะต้องเขียนเป็นคุณสมบัติหรือสิ่งที่คล้ายกัน; มาดูตัวอย่างสินค้าใน Scrum กัน คุณรู้เรื่องราวของผู้ใช้ที่คุณจะต้องพัฒนาในเกมของคุณเพื่อให้คุณเขียนเกมที่คาดหวัง! จากนั้นอีกตัวอย่างหนึ่งคุณอาจต้องตรวจจับการชนในเกมต่อสู้นี่เป็นสิ่งที่พิสูจน์ได้! ไม่ว่าเกมจะสนุกไปกับเรื่องราวหรือมากกว่าการเขียนโปรแกรม IMHO
Marcouiller จะ

@ Will Marcouiller: ฉันไม่ได้หมายความว่าเราไม่มีข้อมูลจำเพาะหรือไม่สามารถวัดการปฏิบัติตามข้อกำหนดได้ แต่สิ่งที่สำคัญน้อยกว่าเกี่ยวกับโครงการสามารถระบุได้อย่างมีความหมายมากกว่าในการพัฒนารูปแบบอื่น ๆ คุณสามารถเขียน "เกมน่าสนุก" ลงในสเป็คของคุณ แต่นั่นไม่ใช่สเปคที่มีความหมายทางเทคนิค คุณสามารถและควรทดสอบสิ่งที่สามารถทดสอบได้ แต่ประเด็นของ TDD คือการทดสอบไม่ได้เป็นเพียงส่วนหนึ่งของกระบวนการ แต่เป็นพื้นฐานทั้งหมดของกระบวนการความคิดพื้นฐานและฉันไม่เห็นว่าการ jibing นั้นดีมาก สนามส่วนตัว
ความวุ่นวาย

2
@ Will Marcouiller ฉันไม่เห็นด้วยอย่างยิ่งที่ความสนุกของเกมจะลดลง ความสนุกทั้งหมดในเกมนี้มาจากการเล่นเกมเนื้อเรื่องเป็นเพียงโบนัส
AttackHobo

1
@ Will: ไม่เขากำลังบอกว่าความสนุกที่ผู้ใช้มาจากเกมนั้นไม่สามารถระบุได้ผ่านการทดสอบอัตโนมัติและเกมนั้นมีหลายสิ่งหลายอย่างที่สามารถทดสอบได้โดยการส่งเกมไปสู่มือผู้บริโภค
DeadMG

1
@DeadMG: มันเป็นความจริงมากกว่าที่ทุกคนต้องการ แต่ประเด็นของฉัน (ไม่จำเป็นต้องเป็น AttackHobo) เกี่ยวข้องกับความจริงที่ว่ากระบวนการพัฒนานั้นต้องรวมการทดสอบโดยนักออกแบบและผู้ผลิตและผู้พัฒนาและผู้ทดสอบและไม่สามารถวัดได้ในหน่วย การทดสอบนั้นเกี่ยวข้องกับคุณภาพของประสบการณ์และความรู้สึกและสไตล์และเอฟเฟกต์ความงามที่เกมสร้างขึ้น เพื่อบอกผู้คนว่าพวกเขากำลังทำ TDD เมื่อมันเป็นส่วนสำคัญของการพัฒนาโดยพื้นฐานแล้วพวกเขาแค่โกหกพวกเขา
ความวุ่นวาย

6

เป็นเรื่องยากที่จะคิดออกสิ่งที่คุณถามเนื่องจากชื่อเรื่องเกี่ยวกับ TDD ล้วนๆ แต่ดูเหมือนว่าคุณกำลังทำให้ Scrum เป็นส่วนหนึ่งของคำถามด้วยเช่นกันและเมื่อฉันเข้าใจแล้วก็ไม่จำเป็นต้องมีอีก

ถ้าฉันเชื่อคำถาม GD นี้ TDD ไม่ค่อยได้ใช้ในการพัฒนาเกม

ถูกต้อง. ฉันไม่คิดว่าฉันเคยได้ยินเรื่องนี้มาก่อนในการฝึกฝนในอุตสาหกรรมเกม (แต่ฉันก็ไม่เคยได้ยินเรื่องที่ใช้นอกอุตสาหกรรมเกม - โดยเฉพาะบุคคล)

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

เกมไม่จำเป็นต้องทำงานอย่างไม่มีที่ติ ดังนั้นจึงมีความสำคัญน้อยกว่ามากเกี่ยวกับความถูกต้องของรหัส TDD ไม่รับประกันความถูกต้องของรหัส แต่บางคนรู้สึกว่ามันลดความไม่ถูกต้อง ฉันยังไม่เห็นข้อพิสูจน์ในเรื่องนี้

นอกจากนี้กฎต่อการต่อสู้ของ Scrum ยังสนับสนุนให้มีการนัดพบที่กำหนดในขณะที่ทุกการกระทำในการต่อสู้ของ Scrum นั้นได้รับการบรรจุในกล่องเวลา!

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

ฉันคิดว่า TDD นั้นดีในการเขียนโค้ดที่ไม่มีข้อบกพร่องถึงแม้ว่าคุณไม่ต้องการเขียนระบบ / เกม "สมบูรณ์แบบ"

หากพิสูจน์แล้วว่า TDD เขียนโค้ดได้ดีกว่าวิธีอื่นใช่

มีข้อพิสูจน์เรื่องนี้หรือไม่? ความจริงที่ว่าอุตสาหกรรมอาจใช้มันไม่ได้พิสูจน์ อุตสาหกรรมเป็นที่รู้จักกันดีในการผลิตรหัสที่ไม่ดีซึ่งส่งช้า การไม่มีตัวอย่างของโครงการ TDD สำคัญ ๆ ที่ล้มเหลวหรือทำงานช้าอาจเป็นเพราะมันเป็นแนวทางใหม่และมีเพียงไม่กี่คนที่ทำโครงการดังกล่าวเสร็จ (และรายการที่ทำงานช้า ... อาจยังทำงานอยู่)

TDD มีศักยภาพในการพัฒนาเกมหรือไม่?

ทำงานได้? แน่นอน. เป็นประโยชน์? ยังไม่ได้รับการพิสูจน์


1
น่าเสียดายที่ TDD และ Scrum ยังคงเข้าใจผิดอยู่ และนี่เป็นความจริงสำหรับโครงการที่มีอยู่ซึ่งจะไม่ช่วยเร่งแก้ไขข้อผิดพลาดหรืออย่างอื่น Scrum เป็นกรอบในการพัฒนาระบบที่ซับซ้อนเหมือนเกมที่ดูเหมือนจะเป็น Scrum สนับสนุนการแก้ไขข้อผิดพลาดจาก Sprint ไปยังที่อื่นเพื่อไม่ให้เกิดการสะสม TDD วางคุณไว้ที่ด้านข้างของผู้ใช้ โดยผู้ใช้ฉันหมายถึงโปรแกรมเมอร์เพื่อนร่วมงานที่จะใช้รหัสของคุณ มันบังคับให้คุณคิดว่ามันควรจะใช้เพื่อทำให้รหัสของคุณง่ายต่อการใช้สำหรับผู้อื่น ดังนั้นจึงนำไปสู่การออกแบบที่ดีขึ้นตามประสบการณ์ ทุกคนพูดว่าคุณมีมุมมองที่น่าสนใจในเรื่อง
Marcouiller จะ

1
การบังคับให้บักไม่สะสมเพียงทำให้คุณสมบัติลื่น - คุณไม่สามารถสร้างเวลาได้อย่างน่าอัศจรรย์ ความเข้าใจของฉันคือการแย่งชิงกันไม่มีวิธีการใดที่เฉพาะเจาะจงกับข้อบกพร่อง สำหรับ TDD บังคับให้คุณคิดว่าคนอื่นจะใช้รหัสของคุณอย่างไรไม่ใช่วิธีเดียวที่จะทำเรื่องนั้น ดังนั้นจึงไม่จำเป็นต้องดีกว่าและไม่จำเป็นต้องใช้เวลาอย่างมีประสิทธิภาพมากที่สุด
Kylotan

1
FYI, Noel Llopis ใช้ TDD สำหรับเกมอินดี้ของเขาและ High Moon Studios บริษัท เก่าของเขาใช้มันอย่างกว้างขวาง ยังไม่ได้รับการอ้างอิงขอโทษ
tenpn

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

(ดำเนินการต่อ ... ) ฉันได้ตอบคำถามแรกของฉันในสัปดาห์นี้เกี่ยวกับชั้นเรียนที่ GD OP ต้องการเรียนรู้วิธีทำให้ผีสางของเขาเคลื่อนไปตามปุ่มกดทิศทาง รู้สึกสบายใจกับแนวคิดของ OOP ฉันคิดว่าบางทีฉันควรใช้คลาสเพื่อพัฒนาเกมแรกของฉันโดยใช้ XNA ที่กล่าวว่าSpacecraftชั้นของฉันกลายเป็นชั้นเรียนที่ทดสอบได้อย่างสมบูรณ์ด้วยวิธีการและคุณสมบัติ นี่คือประเภทของสิ่งที่ IMHO สามารถทดสอบได้อย่างสมบูรณ์โดยใช้ TDD สมมติว่าคุณต้องการยานอวกาศจากนั้นคุณเขียนการทดสอบสำหรับสิ่งที่คุณต้องการเพื่อทำการทดสอบครั้งละหนึ่งครั้ง
Marcouiller จะ

4

ขอโทษสำหรับภาษาอังกฤษที่ไม่ดีของฉันและขอโทษสำหรับมุมมองที่ลำเอียงของฉัน: ฉันไม่ใช่นักออกแบบเกม แต่เป็น coder

ฉันคิดว่ามีความเข้าใจผิดบางอย่างในการสนทนานี้ ฉันจะพูดคุยเกี่ยวกับ TDD ในรูปแบบทั่วไปที่เรียกว่า BDD การพัฒนาพฤติกรรมที่ขับเคลื่อนไม่ได้เป็นวิธีการทดสอบโครงงาน (การทดสอบนั้นคล้ายผลข้างเคียง) BDD เป็นวิธีการออกแบบวิธีการทำ refactor และซอฟต์แวร์ในระหว่างการผลิต (ดูคำขวัญ KISS บางอย่าง "รักษาคุณภาพใน", "ทดสอบก่อน, ทดสอบบ่อยครั้ง") และไม่ได้อยู่คนเดียว BDD เป็นสิ่งที่ตรงกันข้ามกับกระบวนการซอฟต์แวร์แบบดั้งเดิมเช่นกระบวนการน้ำตกหรือวิธีการวนซ้ำอื่น ๆ เพื่อสร้างซอฟต์แวร์

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

ความคิดสุดท้ายคือ imho คือไม่เพียงออกแบบเกมเท่านั้น แต่การเขียนโค้ดทั้งหมดเป็นศิลปะ


4

นี่เป็นกรณีศึกษาจากคนที่คิดว่า TDD และ gamedev ผสมผสานกันได้ดี:

http://powertwenty.com/kpd/downloads/TestDrivenDevelopmentInPython.pdf

เป็นที่ยอมรับว่าเป็นโครงการขนาดเล็กใน Pygame แต่ให้ความคิดว่าส่วนใดบ้างที่สามารถทดสอบด้วยเกมกราฟิกและไม่สามารถทำได้ ฉันรู้สึกประหลาดใจมากที่ TDD สามารถทำได้ในสถานการณ์นี้


1
หากไม่มีการเปรียบเทียบกับกลุ่มควบคุมที่ทำโครงการเดียวกัน (โคลนเกมอาเขตที่มีอยู่เล็กน้อยในภาษาระดับสูงมาก) มันไม่ได้พูดอะไรเลยว่า TDD นั้นมีประสิทธิภาพหรือไม่ แค่บอกว่าเขาใช้ TDD

3

ไม่การพัฒนาระบบขับเคลื่อนทดสอบไม่เหมาะสำหรับการพัฒนาเกม แน่นอนว่าคุณสามารถเขียนการทดสอบสำหรับบางส่วนที่คุณต้องการทดสอบได้ แต่กระบวนการพัฒนาเกมนั้นแตกต่างจากการทดสอบระบบขับเคลื่อนที่ต้องมีข้อกำหนดที่แน่นอนก่อนที่ความคืบหน้าจะเริ่มขึ้น

เกมไม่ค่อยมีข้อกำหนดที่แน่นอนเมื่อเริ่มต้น และถ้าพวกเขาทำพวกเขามักจะเปลี่ยนแปลงและพัฒนาในระหว่างกระบวนการพัฒนา

การออกแบบเกมเป็นศิลปะคุณไม่สามารถทดสอบได้โดยเฉพาะเมื่อรู้ว่าศิลปะดีหรือไม่สมบูรณ์


คุณไม่คิดว่าปัจจัยความสนุกควรได้รับการพิจารณาเมื่อวิเคราะห์เกมตัวเองการวิเคราะห์การทำงานหรือสิ่งที่คล้ายกัน? คุณอาจตั้งค่าชุดของคุณสมบัติที่รวมกันจะทำให้เกมสนุกกับการเล่นและคุณลักษณะนี้เป็นบททดสอบ! ฉันแค่พยายามแสดงความคิดเห็นที่แตกต่างออกไปเพื่อให้ข้อมูลเชิงลึกเกี่ยวกับหัวข้อและข้อโต้แย้งที่คุณคิดขึ้นมา ขอบคุณสำหรับการสนับสนุนของคุณ! =)
Marcouiller จะ

3
การพัฒนามากมายเกิดขึ้นเพื่อปรับแต่งสิ่งเล็ก ๆ น้อย ๆ และดูว่าพวกเขาสนุกแค่ไหนในการเล่น คุณไม่สามารถทดสอบสิ่งเหล่านั้นได้เว้นแต่ว่ามันจะถูกสร้างด้วยหิน 100% และการทดสอบระบบหลังจากเสร็จสิ้นไม่ใช่ TDD เป็นการทดสอบ แต่ไม่ใช่การพัฒนาที่ขับเคลื่อนโดยการทดสอบ
AttackHobo

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