การพัฒนาเกม

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

12
เครื่องมือในการสร้างแบบอักษรบิตแมปจากแบบอักษรจริง [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา คุณใช้เครื่องมือใดในการแปลงฟอนต์ ttf เป็นฟอนต์บิตแมป ต่อไปนี้เป็นรายการคุณสมบัติที่ฉันกำลังมองหา ฉันจะมีความสุขกับเครื่องมือใด ๆ จริง ๆ แต่สิ่งที่มีคุณสมบัติเหล่านี้จะดีกว่า เอาท์พุตแผนที่พื้นผิว power-of-2 parsible config file (ดังนั้นฉันไม่ต้องใช้ไลบรารีการแสดงผลของพวกเขา) ข้อมูลการจัดช่องไฟออก ข้ามแพลตฟอร์ม ไลบรารีการเรนเดอร์จะยอดเยี่ยมถ้ามันทำให้ฉันสามารถเรียก OpenGL ที่แท้จริงได้ แล้วคุณใช้เครื่องมืออะไร คุณมีความสุขกับมันไหม?
26 tools  fonts  pipeline 

5
จะออกแบบ AssetManager ได้อย่างไร
อะไรคือวิธีที่ดีที่สุดในการออกแบบ AssestManager ที่จะอ้างอิงถึงกราฟิกเสียง ฯลฯ ของเกม ควรเก็บสินทรัพย์เหล่านี้ไว้ในแผนที่คู่คีย์ / ค่าหรือไม่ เช่นฉันจะขอเนื้อหา "พื้นหลัง" และแผนที่ส่งคืนบิตแมปที่เกี่ยวข้องหรือไม่ มีวิธีที่ดีกว่านี้อีกไหม? โดยเฉพาะฉันเขียนเกม Android / Java แต่คำตอบได้ทั่วไป

2
ฉันจะสุ่มแบบ "สนุกสนาน" ได้อย่างไรเมื่อเทียบกับการสุ่มหลอก?
ฉันกำลังสร้างเกมที่แสดงปริศนาต่าง ๆ ตามลำดับ ฉันเลือกตัวต่อแต่ละตัวพร้อมหมายเลขหลอกเทียม สำหรับแต่ละตัวต่อจะมีหลากหลายรูปแบบ ฉันเลือกรูปแบบที่มีหมายเลขสุ่มเทียมอื่น และอื่น ๆ ในขณะที่สิ่งนี้ก่อให้เกิดการสุ่มแบบใกล้เคียงจริงนี่ไม่ใช่สิ่งที่ผู้เล่นต้องการ โดยทั่วไปผู้เล่นต้องการสิ่งที่พวกเขารับรู้และระบุว่าสุ่ม ดังนั้นไม่สุ่มจริงๆ คาดเดาไม่ได้ ให้ความคิดฉันสามารถจินตนาการวิธีแฮ็คในการทำมัน ตัวอย่างเช่นการกำจัดตัวเลือก N ล่าสุดจากชุดของความเป็นไปได้ชั่วคราวเมื่อเลือกตัวเลือกใหม่ หรือกำหนดความน่าจะเป็นที่เท่าเทียมกันทุกตัวเลือกลดความน่าจะเป็นของตัวเลือกให้เป็นศูนย์ในการเลือกจากนั้นเพิ่มความน่าจะเป็นทั้งหมดให้ช้าลงด้วยการเลือกแต่ละครั้ง ฉันคิดว่ามีวิธีการที่กำหนดไว้แล้ว แต่ฉันก็ไม่รู้คำศัพท์ดังนั้นฉันไม่สามารถหามันได้ ใครรู้บ้าง หรือมีใครแก้ปัญหานี้ด้วยวิธีที่ถูกใจ?
26 algorithm  random 

4
การทำแผนที่ UV และ UVW คืออะไร
พยายามเข้าใจแนวคิดพื้นฐาน 3 มิติบางอย่างในขณะนี้ฉันพยายามเข้าใจว่าพื้นผิวทำงานอย่างไร ฉันรู้ว่าการทำแผนที่ UV และ UVW เป็นเทคนิคที่ทำแผนที่พื้นผิว 2D ไปยังวัตถุ 3 มิติ - Wikipedia บอกฉันมาก ฉัน googled สำหรับคำอธิบาย แต่พบบทเรียนที่สมมติว่าฉันรู้แล้วว่ามันคืออะไร จากความเข้าใจของฉันแล้วแบบจำลองสามมิติแต่ละอย่างนั้นทำจากคะแนนและหลาย ๆ แต้มสร้างใบหน้าขึ้นมา? แต่ละจุดหรือใบหน้ามีพิกัดที่สองที่แมปไปยังตำแหน่ง ax / y ในพื้นผิว 2D หรือไม่? หรือวิธีการคลายเปิดใช้งานโมเดล? นอกจากนี้ W ใน UVW ทำอะไรได้จริงมันให้อะไรกับ UV? ตามที่ฉันเข้าใจแล้ว W แผนที่ไปที่พิกัด Z แต่ในสถานการณ์ใดฉันจะมีพื้นผิวที่แตกต่างกันสำหรับ X / Y เดียวกันและ Z ที่ต่างกันส่วน Z จะไม่ปรากฏให้เห็นหรือไม่ หรือฉันเข้าใจผิดอย่างนี้

9
การบีบอัดเดลต้าลดจำนวนข้อมูลที่ส่งผ่านเครือข่ายอย่างไร
เกมหลายเกมใช้เทคนิคการบีบอัดเดลต้าเพื่อลดการโหลดข้อมูลที่ส่ง ฉันไม่เข้าใจว่าเทคนิคนี้ลดภาระการโหลดข้อมูลได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันต้องการส่งตำแหน่ง โดยไม่ต้องบีบอัดเดลต้าผมส่งกับตำแหน่งที่แน่นอนของกิจการเช่นvector3 (30, 2, 19)ด้วยการบีบอัดเดลต้าผมส่งกับตัวเลขที่มีขนาดเล็กvector3(0.2, 0.1, 0.04) ฉันไม่เข้าใจว่ามันลดการโหลดข้อมูลอย่างไรถ้าทั้งสองข้อความมีvector3- 32 บิตสำหรับแต่ละ float - 32 * 3 = 96 บิต! ฉันรู้ว่าคุณสามารถแปลงแต่ละ float เป็น byte แล้วแปลงกลับจาก byte เป็น float แต่ทำให้เกิดข้อผิดพลาดที่แม่นยำซึ่งมองเห็นได้


6
ฉันจะสร้างสมการผลตอบแทนลดลงอย่างง่ายได้อย่างไร
มีสูตรสำหรับสมการส่งคืนที่ลดน้อยลง อย่างไรก็ตามสิ่งเหล่านี้มักจะเกี่ยวข้องกับการอธิบาย มีวิธีอื่นอีกไหมในการหาสมการดังกล่าว ยกตัวอย่างเช่นกรณีทดสอบต่อไปนี้ - หนึ่งฟาร์มผลิตอาหาร 10 ชนิดสำหรับทุก ๆ 10 ฟาร์มที่ผลิตอัตราการผลิตลดลง 5%

1
ฉันจะรันการทดสอบการใช้งานกับเกม Unity3D ได้อย่างไร
บริบท ฉันกำลังดำเนินการรหัสดั้งเดิมสำหรับเกมใน Unity3d และฉันต้องการเขียนการทดสอบการทำงานบางอย่างที่มีไว้สำหรับการถดถอยเพื่อให้แน่ใจว่าฉันจะไม่ทำสิ่งแตกต่างเมื่อนำสิ่งใหม่มาใช้หรือเมื่อทำการเปลี่ยนใหม่ ฉันรู้อยู่แล้วว่ามีชุดเครื่องมือทดสอบหน่วยสำหรับ Unity3d ที่มีอยู่เป็นสินทรัพย์ ฉันใช้มันเป็นชุดทดสอบหน่วยดังนั้นฉันจึงทดสอบโมเดลของฉัน (คลาส) ตัวอย่างการทดสอบประเภทใดที่ฉันกำลังคิด สำหรับ "การทดสอบการใช้งาน" ฉันหมายถึงสิ่งนี้: เรียกใช้โปรแกรม เมื่ออยู่ในฉากเมนูให้ยืนยันว่ามีปุ่มที่ระบุว่า "เริ่มต้น" คลิกมัน จากนั้นยืนยันว่ามีการโหลดฉากใหม่ ยืนยันพิกเซล XXX เป็นสีแดง คลิกในพิกัด XXX ยืนยันทันทีที่พิกเซลเปลี่ยนเป็นสีเขียว เป็นต้น คำถาม Q1:ฉันจะเขียนและเรียกใช้การทดสอบการใช้งานสำหรับเกมได้อย่างไร สิ่งนี้มักจะทำใน UnityTestTools (UTT) หรือไม่ Q2:ถ้า UTT มากกว่าสำหรับการทดสอบหน่วยแล้วมีชุดแยกต่างหากสำหรับการทดสอบการทำงานหรือไม่ อันไหน? หมายเหตุ: ฉันกำลังตั้งเป้าหมาย Android และทำงานอยู่ Unity5.3.1f1

3
สถานะใดที่ถูกเก็บไว้ใน OpenGL Vertex Array Object (VAO) และฉันจะใช้ VAO อย่างถูกต้องได้อย่างไร
ฉันสงสัยว่าสถานะใดที่เก็บไว้ใน OpenGL VAO ฉันเข้าใจว่า VAO มีสถานะที่เกี่ยวข้องกับข้อมูลจำเพาะของจุดยอดของจุดยอดบัฟเฟอร์ (แอตทริบิวต์ใดที่อยู่ในบัฟเฟอร์และบัฟเฟอร์ใดถูกผูกมัด ... ) เพื่อให้เข้าใจการใช้ VAO ที่ถูกต้องได้ดีขึ้นฉันต้องการทราบว่าพวกเขามีสถานะเป็นอย่างไร ฉันควรใช้ VAO อย่างไร จากตัวอย่างง่ายๆฉันเข้าใจว่าการใช้งาน VAO ที่ถูกต้องมีดังนี้: ติดตั้ง Generate VAO BindVAO ---- Specify vertex attributes ---- Generate VBO's ---- BindVBO's -------- Buffer vertex data in VBO's ---- Unbind VBO's Unbind VAO การกระทำ Bind VAO ---- Draw Unbind VAO จากนี้ฉันคิดว่าอย่างน้อยการผูกบัฟเฟอร์จุดสุดยอดและข้อมูลจำเพาะคุณลักษณะจุดสุดยอดจะถูกเก็บไว้ใน …
25 opengl  vao 

1
เหตุใดฉันจึงควรพิจารณาสร้างและใช้กลุ่มออบเจ็กต์แทนการสร้างวัตถุใหม่ในทันที
ฉันได้อ่านเกี่ยวกับรูปแบบนี้หลายครั้ง (จากมุมมองแนวปฏิบัติที่ดีที่สุด): การจัดสรรหน่วยความจำ : แทนที่จะสร้างวัตถุใหม่ในทันทีให้พิจารณาสร้างและใช้กลุ่มวัตถุเสมอ มันจะช่วยให้การกระจายตัวของหน่วยความจำน้อยลงและทำให้ตัวเก็บขยะทำงานน้อยลง อย่างไรก็ตามฉันไม่รู้ว่าที่จริงแล้วมันหมายถึงอะไร ฉันจะใช้มันได้อย่างไร ตัวอย่างเช่นฉันสามารถสร้างอินสแตนซ์ของการGameObjectใช้InstantiateUnity ได้หรือไม่ Instantiate(prefab, new Vector3(2.0F, 0, 0), Quaternion.identity); การใช้งานนี้หมดกำลังใจหรือไม่? มันหมายความว่าอะไร?

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

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

6
วิธีการทำให้แน่ใจว่าวัตถุหมุนได้เข้าเป้าด้วยปลายด้านขวา
ฉันกำลังทำงานกับอาวุธประเภทมีดขว้างปาที่ผู้เล่นมีเป้าหมายฟรีแล้วขว้างมีด มีดหมุนผ่านอากาศและในการปะทะกันหยุดหมุนและผู้ปกครองเองกับวัตถุที่มันชนกัน การหมุนถูกจัดการผ่านทางภาพเคลื่อนไหวในขณะที่เส้นทางของมีดถูกจัดการโดยฟิสิกส์ ปัญหาหนึ่งที่ฉันเผชิญคือทำอย่างไรเพื่อให้แน่ใจว่าเมื่อมีดชนกับศัตรูว่ามีดจะหันเข้าหาพวกเขา ในขณะที่สิ่งที่เกิดขึ้นบางครั้งก็คือมีดฝังอยู่ในมือของศัตรูก่อน ซึ่งไม่สมจริงอย่างเห็นได้ชัด ในเวลาเดียวกันฉันคิดว่ามันไม่มีเหตุผลที่จะมีดที่จะ "กด" ศัตรูถ้ามันชนใบมีดก่อนเนื่องจากอัตราที่มีดหมุนอยู่นอกเหนือการควบคุมของผู้เล่น ฉันได้ดูภาพจากกล้องที่คล้ายกันของ killcam ที่ช้ามาก ๆ และทุกครั้งที่มีการโยนอาวุธมันจะหมุนไปในอากาศและในที่สุดก็จะมีดาบที่ชี้ไปที่เป้าหมาย สำหรับเกมที่ระยะการขว้างปาสอดคล้องกันนี่จะค่อนข้างตรงไปตรงมา แต่ฉันไม่แน่ใจว่าจะทำนายได้อย่างไรเนื่องจากมีปัจจัยที่คาดเดาไม่ได้หลายอย่างที่เกี่ยวข้องเช่น ทิศทางของมีด, การหมุนของมีด, ตำแหน่งของศัตรู, ระยะทางจากศัตรู ฯลฯ หากเป็นไปได้ฉันไม่ต้องการใช้ตรรกะการทำนายที่ซับซ้อนเนื่องจากเกมจะเป็นอุปกรณ์ระดับต่ำ มีวิธี "ควันและกระจก" เพื่อแก้ปัญหานี้หรือไม่? ตัวอย่าง: https://youtu.be/0fav8lFpBko?t=42s

6
ฉันจะแนะนำแรงกดดันเวลาในการตัดสินใจของผู้เล่นได้อย่างไร
ฉันกำลังออกแบบเกมแฮ็คซึ่งผู้เล่นมักจะใช้เวลาคิดเกี่ยวกับวิธีเอาชนะอุปสรรคที่เขา / เธอเผชิญอยู่ในปัจจุบัน อย่างไรก็ตามฉันตัดสินใจว่านอกเหนือจากการหาวิธีแก้ปัญหาที่ชาญฉลาดแล้วการแฮ็คก็ควรรู้สึกหนักหน่วงและเกมต้องการวิธีการกดดันเวลาในการตัดสินใจของผู้เล่น ช่างแรกที่ฉันเพิ่มให้ฉันมั่นใจว่าฉันไปในทิศทางที่ถูกต้อง: บางครั้งผู้เล่นสามารถเรียกใช้การติดตามเครือข่ายซึ่งใช้เวลา X วินาทีและอาจเตะผู้เล่นออกจากเครือข่ายเว้นแต่เขา / เธอจะตอบสนองอย่างรวดเร็วเพียงพอและประสบความสำเร็จใน หลีกเลี่ยงการติดตาม ฉันต้องการเพิ่มกลไกอีกหนึ่งหรือสองอย่างที่จะทำให้ผู้เล่นตกอยู่ภายใต้แรงกดดันเวลา แต่ฉันติดอยู่เล็กน้อยและดูเหมือนจะเกิดขึ้นกับ 'Countdown' เช่น 'จะมีการลงโทษ (จะมีการลงโทษ) ใน (X) วินาทีเว้นแต่ (มีการดำเนินการบางอย่าง) 'แต่เห็นได้ชัดว่ากลศาสตร์ทั้งหมดนั้นจบลงด้วยการที่คล้ายกันมากเกินไป ในแง่นามธรรม - นั่นคือโดยไม่รู้กลไกเฉพาะใน ruleset ของฉัน - ฉันจะแนะนำแรงกดดันเวลาในการตัดสินใจของผู้เล่นได้อย่างไร

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

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