คำถามติดแท็ก data-driven

3
ฉันควรใช้รหัสฮาร์โค้ดเมื่อใดกับโหลดข้อมูลภายนอก
ฉันเขียนโค้ดหนึ่งพันหรือมากกว่านั้นเพื่อสร้างเกมตามพื้นที่ 2D ของฉันซึ่งสร้างเครือข่ายของระบบดาวที่สร้างขึ้นแบบสุ่มและเติมพวกมันด้วยการสุ่มเลือกดาวเคราะห์สถานีเรือและอาวุธ อาจมีหลายร้อยสถานี / เรือ / อื่น ๆ ที่เกมจะต้องใช้ - ดังนั้นนี่คือสิ่งที่ฉันสงสัย ฉันควรใช้เวลาในการสร้างตัวโหลดข้อมูลแบบ 'softcoded' ซึ่งจะเก็บข้อมูลทั้งหมดนี้ไว้ในไฟล์ XML (เช่น) และดังนั้นจะค่อนข้างง่ายกว่าที่จะแก้ไขในภายหลังหรือฉันควรจะไปกับสิ่งที่ฉันทำ ตอนนี้กำลังทำการฮาร์ดโค้ดวัตถุทั้งหมดไว้ในเอ็นจิ้นหลักของเกม ฉันเป็นคนเดียวในโครงการและอย่างที่ฉันพูดมันเป็นเพียงงานอดิเรกที่ฉันทำในเวลาว่างห่างจากมหาวิทยาลัย แต่ชุมชนจะแนะนำให้ลงทุนในการสร้างระบบพิเศษทั้งหมดในการจัดเก็บข้อมูลในไฟล์เพิ่มเติมหรือไม่ อะไรคือประโยชน์ของข้อมูล softcoding ในลักษณะเช่นนี้เมื่อเทียบกับ hardcoding ทุกอย่างผ่านทาง constructor? มีประโยชน์ระยะยาวในการมีไฟล์ภายนอกที่สามารถแก้ไขได้หรือไม่หากฉันไม่ต้องการให้เกมมี 'mods' จำเป็นต้องมีไฟล์ภายนอกหรือไม่ หากเป็นเพียงงานอดิเรกที่ฉันอาจยอมแพ้ในอีกไม่กี่สัปดาห์หรือหลายเดือนฉันควรเสียเวลากับเรื่องนี้ไหม?

3
วิธีการจัดโครงสร้างรหัสสำหรับอาวุธ / คาถา / พลังพิเศษมากมาย
ฉันเป็นโปรแกรมเมอร์ที่ไม่มีประสบการณ์ในการสร้างเกม "เหมือนโร๊คไลค์" ในเส้นเลือดของFTLโดยใช้ Python (ยังไม่มี PyGame ในขณะที่ฉันยังเกี่ยวข้องกับข้อความเท่านั้น) เกมของฉันจะมีอาวุธจำนวนมาก (ประมาณ 50 ดวงสำหรับผู้เริ่ม) ที่ให้ความสามารถพิเศษ ฉันกำลังดิ้นรนเพื่อทำความเข้าใจวิธีจัดโครงสร้างรหัสวัตถุในแบบที่ทรงพลัง (ในแง่ของการอนุญาตให้อาวุธมีเอฟเฟกต์ต่างกันอย่างรุนแรง) และขยายได้ (เพื่อให้ฉันสามารถเพิ่มอาวุธได้ง่ายขึ้นในภายหลังเช่นวางลงในโฟลเดอร์ ) สัญชาตญาณแรกของฉันคือการมีชั้นเรียน BasicWeapon และมีอาวุธต่าง ๆ ที่สืบทอดมาจากชั้นเรียนนั้น อย่างไรก็ตามนี่เป็นปัญหาสำหรับฉัน: ฉันต้องสร้างคลาส BasicWeapon ให้เปล่าโดยที่ไร้ประโยชน์ (คุณสมบัติเดียวที่อาวุธทั้งหมดมีเหมือนกันคือชื่อและประเภท (ปืนพกขวาน ฯลฯ ) หรือฉันต้องทำนายทุกอย่าง เอฟเฟกต์ที่ไม่ซ้ำใครที่ฉันจะได้รับและโค้ดที่เป็นพื้นฐานของ BasicWeapon เห็นได้ชัดว่าเป็นไปไม่ได้ แต่อดีตยังคงสามารถทำงานได้ อย่างไรก็ตามนั่นทำให้ฉันมีคำถาม: ฉันจะวางรหัสสำหรับอาวุธแต่ละชนิดได้ที่ไหน ฉันจะสร้าง plasmarifle.py, rocketlauncher.py, swarmofbees.py ฯลฯ และวางมันลงในโฟลเดอร์ที่เกมสามารถนำเข้าได้หรือไม่ หรือมีวิธีที่จะมีไฟล์สไตล์ฐานข้อมูล (อาจเป็นอะไรที่เรียบง่ายเหมือนกับสเปรดชีต Excel) ที่มีรหัสที่ไม่ซ้ำกันสำหรับอาวุธแต่ละอัน - โดยไม่ต้องหันไปใช้ eval …

3
เอ็นจิ้นเกมและการออกแบบที่ขับเคลื่อนด้วยข้อมูล
ฉันได้ยินเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยข้อมูลและได้ทำการค้นคว้าเกี่ยวกับมันมาระยะหนึ่งแล้ว ดังนั้นฉันได้อ่านหลายบทความเพื่อให้ได้แนวคิด หนึ่งในบทความคือData Driven Design ที่เขียนโดย Kyle Wilson. ตามที่เขาอธิบายดูเหมือนว่ารหัสแอปพลิเคชัน (เช่นรหัสสำหรับการควบคุมทรัพยากรเช่นหน่วยความจำเครือข่าย ... ) และรหัสเกมควรแยกจากกันและรหัสเกมตรรกะควรถูกขับเคลื่อนโดยแหล่งข้อมูลภายนอก ณ จุดนี้ฉันสามารถจินตนาการได้ว่าผู้พัฒนาจะเขียนตัวแก้ไขเกมซึ่งยอมรับข้อมูลภายนอกเกี่ยวกับวัตถุในเกม (เช่นข้อมูลตัวละครข้อมูลอาวุธข้อมูลแผนที่ ... ) การออกแบบสถานการณ์จะถูกเขียนสคริปต์โดยภาษาที่กำหนดเอง / เครื่องมือที่เขียนโดยโปรแกรมเมอร์เพื่อให้ผู้ออกแบบเกมสร้างปฏิสัมพันธ์ระหว่างในวัตถุในเกม ผู้ออกแบบเกมจะใช้ภาษาสคริปต์ที่มีอยู่ / กำหนดเองเพื่อเขียนสคริปต์สำหรับเกมหรือเครื่องมือลากแล้ววางเพื่อสร้างโลกของเกม ตัวอย่างของวิธีการใช้เครื่องมือที่ฉันคิดได้คือ World Editor ซึ่งโดยปกติจะบรรจุพร้อมกับเกมของ Bliizard อย่างไรก็ตามบทความอื่นต่อต้านการใช้ข้อมูลขับเคลื่อนการออกแบบ, การออกแบบกรณีกับข้อมูลขับเคลื่อน ผู้เขียนแนะนำว่าอย่าปล่อยให้การออกแบบเกมขับเคลื่อนโดยข้อมูลเพราะมันต้องใช้เวลามากกว่าในการพัฒนาเกมเนื่องจากผู้ออกแบบเกมมีภาระในการเขียนโปรแกรม แต่จะมีผู้เขียนโปรแกรมเกมเขียนโปรแกรมเกมอย่างอิสระจากแบบร่างและได้รับการตรวจสอบโดยผู้ออกแบบเกมหลังจากการเขียนโปรแกรมเกมเสร็จสิ้น เขาเรียกสิ่งนี้ว่าเป็นโปรแกรมเมอร์ สิ่งที่ฉันคิดว่าวิธีนี้คล้ายกับวิธีที่ฉันเคยทำ: ตรรกะของเกมเป็นแอปพลิเคชันตัวเองตามที่กล่าวถึงข้างต้นความคิดแอพพลิเคชั่นเป็นตัวแก้ไขเกมและเกมจริงได้รับการออกแบบตามเครื่องมือ สำหรับฉันแล้ววิธีแรกดูเหมือนจะสมเหตุสมผลมากกว่าเนื่องจากส่วนประกอบเกมสามารถนำกลับมาใช้ใหม่ได้หลายโครงการ ด้วยวิธีที่สองซึ่งตรงข้ามกับการออกแบบที่ขับเคลื่อนด้วยข้อมูลรหัสเกมเป็นของเกมนั้นเท่านั้น นี่คือเหตุผลที่ฉันคิดว่า Warcraft มีประเภทเกมมากมายเช่น Warcraft ดั้งเดิมและแผนที่ที่กำหนดเองต่าง ๆ และหนึ่งในเกมที่โด่งดังที่สุด: DOTA ซึ่งกำหนดแนวใหม่จริงๆ ด้วยเหตุนี้ฉันได้ยินคนเรียก World Editor …

1
ฉันจะจัดโครงสร้างระบบโหลดสินทรัพย์ที่ขยายได้อย่างไร
สำหรับเอนจิ้นเกมอดิเรกใน Java ฉันต้องการโค้ดเครื่องมือจัดการทรัพยากร / ทรัพยากรที่เรียบง่าย แต่มีความยืดหยุ่น เนื้อหาคือเสียงรูปภาพแอนิเมชั่นโมเดลพื้นผิวและอื่น ๆ หลังจากผ่านไปสองสามชั่วโมงของการค้นหาและการทดสอบโค้ดฉันยังไม่แน่ใจว่าจะออกแบบสิ่งนี้อย่างไร โดยเฉพาะฉันกำลังมองหาวิธีที่ฉันสามารถออกแบบผู้จัดการในลักษณะเพื่อให้เป็นนามธรรมว่ามีการโหลดประเภทสินทรัพย์ที่เฉพาะเจาะจงและการโหลดเนื้อหาที่ไหน ฉันต้องการให้สามารถรองรับทั้งระบบไฟล์และที่เก็บ RDBMS โดยไม่ต้องใช้โปรแกรมอื่น ๆ ที่จำเป็นต้องรู้ ในทำนองเดียวกันฉันต้องการเพิ่มเนื้อหาคำอธิบายภาพเคลื่อนไหว (FPS เฟรมที่จะแสดงภาพอ้างอิงภาพสไปรต์และอื่น ๆ ) นั่นคือ XML ฉันควรจะสามารถเขียนคลาสสำหรับสิ่งนี้ด้วยฟังก์ชันการทำงานเพื่อค้นหาและอ่านไฟล์ XML และสร้างและส่งคืนAnimationAssetคลาสด้วยข้อมูลนั้น ฉันกำลังมองหาการออกแบบที่ขับเคลื่อนด้วยข้อมูล ฉันสามารถค้นหาข้อมูลจำนวนมากเกี่ยวกับสิ่งที่ผู้จัดการสินทรัพย์ควรทำ แต่ไม่เกี่ยวกับวิธีการทำ ข้อมูลทั่วไปที่เกี่ยวข้องดูเหมือนจะส่งผลให้บางรูปแบบของการเรียนลดหลั่นกันหรือบางรูปแบบของผู้ช่วย อย่างไรก็ตามฉันไม่ได้เห็นตัวอย่างที่ชัดเจนที่ไม่เหมือนกับแฮ็กส่วนตัวหรือเป็นฉันทามติ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.