การพัฒนาเกม

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

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

1
ฉันอยู่ในเส้นทางที่ถูกต้องด้วยสถาปัตยกรรมองค์ประกอบนี้หรือไม่?
ฉันเพิ่งตัดสินใจปรับปรุงสถาปัตยกรรมเกมของฉันเพื่อกำจัดลำดับชั้นของระดับลึกและแทนที่ด้วยองค์ประกอบที่กำหนดค่าได้ ลำดับชั้นแรกที่ฉันกำลังแทนที่คือลำดับชั้นของรายการและฉันต้องการคำแนะนำเพื่อให้ทราบว่าฉันอยู่ในเส้นทางที่ถูกต้องหรือไม่ ก่อนหน้านี้ฉันมีลำดับขั้นที่ทำสิ่งนี้: Item -> Equipment -> Weapon -> Armor -> Accessory -> SyntehsisItem -> BattleUseItem -> HealingItem -> ThrowingItem -> ThrowsAsAttackItem ไม่จำเป็นต้องบอกว่ามันเริ่มยุ่งเหยิงและสิ่งเหล่านี้ไม่ใช่วิธีแก้ปัญหาง่าย ๆ สำหรับรายการที่จำเป็นต้องมีหลายประเภท (เช่นอุปกรณ์บางอย่างใช้ในการสังเคราะห์ไอเท็มอุปกรณ์บางอย่างสามารถโยนได้ ฯลฯ ) จากนั้นฉันพยายาม refactor และวางฟังก์ชันการทำงานลงในคลาสไอเท็มพื้นฐาน แต่ฉันก็สังเกตเห็นว่ารายการนั้นมีข้อมูลที่ไม่ได้ใช้ / ฟุ่มเฟือยจำนวนมาก ตอนนี้ฉันกำลังพยายามทำส่วนประกอบเช่นสถาปัตยกรรมอย่างน้อยก็สำหรับไอเท็มของฉันก่อนที่จะพยายามทำเช่นนั้นกับคลาสเกมอื่น ๆ ของฉัน นี่คือสิ่งที่ฉันกำลังคิดสำหรับการตั้งค่าส่วนประกอบ: ฉันมีคลาสไอเท็มพื้นฐานที่มีสล็อตสำหรับส่วนประกอบต่าง ๆ (เช่นสล็อตคอมโพเนนต์อุปกรณ์สล็อตคอมโพเนนต์การแพทย์ ฯลฯ รวมถึงแผนที่สำหรับคอมโพเนนต์โดยพลการ) ดังนั้นสิ่งนี้: class Item { //Basic item properties …

3
มีไลบรารีกราฟิกเวกเตอร์ C ++ ข้ามแพลตฟอร์มที่ดีหรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังสร้างเกมและต้องการใช้กราฟิกแบบเวกเตอร์ ฉันเริ่มเขียนโค้ดอีกครั้งโดยใช้ไคโรและการแสดงนั้นยอดเยี่ยมมาก ฉันกำลังมองหาห้องสมุดที่แตกต่าง มันต้องเป็น C ++ และข้ามแพลตฟอร์ม (เช่นไม่มี Direct2D) มีอีกคำถามที่มีคนถามมาก่อนหน้านี้ แต่ไม่มีคำตอบที่เหมาะสม จะต้องมีบางอย่าง ... ?
9 c++  graphics  vector 

2
เป็นไปได้ไหมที่ทำให้ภาพเบลอปลอมเป็นภาพ?
ฉันใช้ libGDX สำหรับเกม Android เท่าที่ฉันสามารถบอกได้มันไม่มี API สำหรับการเบลอ อ่านบน Wikipedia ดูเหมือนว่าภาพพร่ามัวเกิดจากการตั้งค่าแต่ละพิกเซล RGB เป็นค่าเฉลี่ยของค่าที่อยู่ติดกัน ซึ่งดูเหมือนจะเป็นไปไม่ได้อย่างง่ายดายใน libGDX - การตั้งค่าข้อมูลพิกเซล ดังนั้นคำถามของฉันง่าย: เป็นไปได้หรือไม่ที่จะปลอม (เบลอ) โดยใช้ภาพเท่านั้น? ฉันสามารถซ้อนทับภาพ (ในจำนวนความโปร่งใสประเภท) หลายภาพ; แต่ฉันสามารถสร้างภาพเบลอที่น่าเชื่อถือเช่นนี้ได้หรือไม่? ฉันอยากจะพูดว่า "ไม่" แต่อาจมีบางคนประสบความสำเร็จในสิ่งที่คล้ายกัน เพื่อความชัดเจนฉันต้องการชุดภาพทั่วไป 1+ ภาพที่สามารถแสดงบนภาพใดก็ได้เพื่อสร้างเอฟเฟกต์แบบเบลอ


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

4
ฉันควรใช้เทคนิคใดเพื่ออำนวยความสะดวกในการสื่อสารระหว่าง XNA GameComponents (หรือระหว่างองค์ประกอบของเกมประเภทใดก็ได้)
ฉันเริ่มโครงการเกม 'ถูกต้อง' ครั้งแรกของฉันและฉันก็โดนบล็อกที่พยายามตัดสินใจว่าองค์ประกอบของเกมใน XNA ควรสื่อสารอย่างไร จากเหตุการณ์การเขียนโปรแกรม GUI (Java) GUI ก่อนหน้าตัวจัดการและผู้ฟังดูเหมือนจะเป็นทางไปข้างหน้า ดังนั้นฉันจึงมี Event Bus บางประเภทที่ยอมรับการลงทะเบียนกิจกรรมและคลาสที่สมัครเป็นสมาชิกของกิจกรรมเหล่านั้นพร้อมกับตัวจัดการเพื่อจัดการกับพวกเขา ตัวอย่างเช่น (pseudocode): class SpriteManager Update(){ if(player.collidesWith(enemy) // create new 'PlayerCollisionEvent' } class HUDManager onPlayerCollisionEvent(){ // Update the HUD (reduce lives etc) } อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับการตั้งค่ารหัส (ใน C #) ที่จะต้องทำสิ่งนี้ให้สำเร็จ อะไรคือสิ่งที่คอยติดตามเหตุการณ์ (รถบัสบางประเภท) และมันมีโครงสร้างอย่างไร ดูเหมือนจะมีการกล่าวถึงมากมายเกี่ยวกับบริการเกมโดยที่คุณสามารถลงทะเบียน GameComponent ในคลาส Game.cs หลักของคุณจากนั้นดึงข้อมูลจากที่ใดก็ได้ในรหัสของคุณที่มีการอ้างอิงถึงวัตถุ 'เกม' …

2
มีข้อบกพร่องในการออกแบบหรือไม่หากสถานะของเอนทิตีไม่ได้ใช้ประโยชน์อย่างเต็มที่ enter (), execute () และ exit ()?
ฉันกำลังติดตาม AI เกมการเขียนโปรแกรมของ Mat Buckland ตามตัวอย่างและฉันพบว่าฉันไม่ได้ใช้สำหรับ enter (), execute () และ exit () ในสถานะของเอนทิตี ตัวอย่างเช่นในเกม RPG อาวุธอาจมีสถานะพร้อมและฉันอาจใช้ enter () และ exit () สำหรับสถานะนั้นเพื่อเพิ่มหรือลบการปรับเปลี่ยนความสามารถของผู้เล่น แต่ไม่จำเป็นต้องดำเนินการ (จริงๆ) ) นี่เป็นข้อบกพร่องในการออกแบบในเครื่องยนต์ของฉันหรือข้อบกพร่องของวิธีนี้หรือไม่?

2
เพิ่มความเร็วในการ blitting
ฉันกำลังทำงานกับนักเล่นเกม 2 มิติใน PyGame สำหรับแต่ละแผนที่เราใช้หนึ่งพื้นผิว (นี่คือขนาดที่แท้จริงของพื้นผิว): จากนั้นเราโหลดภาพด้วยรหัสนี้: sprite = pygame.image.load("Maps/MapTesting.png") sprite.convert() sprite = pygame.transform.scale(sprite, (sprite.get_width()*6, sprite.get_height()*6)) อย่างที่คุณเห็นพื้นผิวจะถูกเป่าขึ้น 6 ครั้งเพื่อสร้างพื้นผิวแผนที่จริง โดยเฉลี่ยแล้วพื้นผิวนี้มีขนาดประมาณ 4500x800 พื้นผิวนี้ต้องถูกทำให้เบลอกับหน้าจอทุกเฟรมเพราะหน้าจอทั้งหมดสกปรก (ขอบคุณการเลื่อนด้านข้าง) เราทำเช่นนั้นโดยใช้รหัสนี้: screen.blit(sprite, (0, 0), (cameraposx, cameraposy, windowheight, windowwidth)) และมันใช้งานได้ ปัญหาคือว่ามันค่อนข้างช้า: ฉันได้รับน้อย 40 FPS บนพีซีที่เหมาะสมและนั่นคือไม่มี AI / วัตถุจริงที่เกิดขึ้นในขณะที่เราตั้งเป้าไว้ที่ 60 FPS เราจะเร่งความเร็วนี้ได้อย่างไร? โปรดทราบว่ารหัสข้างต้นถูกทำให้สะอาดและถูกนำออกจากบริบท รหัสเต็มสามารถดูได้ที่นี่: https://github.com/nightcracker/PyGG2 และสุดท้าย แต่ไม่ท้ายสุดในขณะที่ภาพด้านบนอาจดูเหมือน 8 บิตมีองค์ประกอบในเกมที่ต้องใช้ความลึกบิตมากกว่า
9 pygame 

3
มันมีมูลค่าการสนับสนุนอุปกรณ์ iOS 3.x หรือ iPhone 3G อีกต่อไปเมื่อพัฒนาเกม?
มันยังคงคุ้มค่าหรือไม่สำหรับนักพัฒนาเกมในการลองและสนับสนุนอุปกรณ์รุ่นเก่า: iPhone 3G และรุ่นก่อนหน้าหรือเพื่อรองรับระบบปฏิบัติการรุ่นเก่า: iOS 3.x และรุ่นก่อนหน้า? หรือแนะนำให้ใช้งาน OpenGL ES 2.0 เป็น iPhone 3GS ขึ้นไปหรือไม่ คุณรู้หรือไม่ว่าร้อยละของผู้ใช้ยังคงใช้อุปกรณ์ / ระบบปฏิบัติการรุ่นก่อนหน้าเหล่านั้น
9 iphone  opengl-es  ios 

1
STL มีประสิทธิภาพเพียงพอสำหรับอุปกรณ์พกพาหรือไม่
เมื่อพูดถึงการพัฒนาเกมมือถือบน iOS และ Android NDK นักพัฒนาบางคนเขียนคอนเทนเนอร์ C ++ ของตัวเองขณะที่คนอื่นอ้างว่า STL นั้นเพียงพอสำหรับการพัฒนาเกมมือถือ (ตัวอย่างเช่นผู้เขียนโปรแกรม 3D iPhone ใช้ STL แทนวัตถุประสงค์ - C ในตัวอย่างของเขาการป้องกันของเขาคือ STL นั้นไม่ช้ากว่า Objective-C) จากนั้นก็มีนักพัฒนามือถือที่ละทิ้ง C ++ ทั้งหมดและพัฒนาเกมทั้งหมด (หรือส่วนใหญ่) ในภาษา C (C89 / C90) ประโยชน์และข้อเสียของแต่ละวิธีมีอะไรบ้าง

4
ฉันควรพิจารณาอะไรเมื่อออกแบบระบบตัวจัดการเหตุการณ์
ฉันพัตต์กับพื้นฐานของ Java engine engine และฉันมาถึงจุดที่ฉันพร้อมที่จะเพิ่มในระบบ Event Manager โดยหลักการแล้วฉันรู้ว่าEvent Manager ควรทำอย่างไร: อนุญาตให้วัตถุ "ลงทะเบียน" สำหรับบางเหตุการณ์และเมื่อใดก็ตามที่ Event Manager ได้รับแจ้งเหตุการณ์ให้เผยแพร่เหตุการณ์ไปยังผู้ฟังที่ "ลงทะเบียนแล้ว" สิ่งที่ฉันนิ่งงันคือวิธีเริ่มใช้งาน ฉันไม่สามารถหาอะไรออนไลน์ได้เกี่ยวกับการนำระบบเหตุการณ์มาใช้ตั้งแต่เริ่มต้นดังนั้นฉันจึงมองหาสิ่งที่แนวปฏิบัติที่ดีที่สุดในกรณีนี้คือสิ่งที่ฉันควรทำและไม่ควรทำ ตัวอย่างเช่นจำเป็นหรือไม่ที่แต่ละวัตถุในเกมของฉันจะมีEventManagerฟิลด์ เนื่องจากวัตถุในเกมทั้งหมดของฉันสืบทอดมาจากคลาสแม่นามธรรมที่เป็นนามธรรมฉันคิดว่าฉันควรจะสามารถใช้การอ้างอิงแบบคงที่เพื่อให้มีเพียงอินสแตนซ์เดียวของ Event Manager ที่ใช้ร่วมกันระหว่างวัตถุทั้งหมดของเกม ฉันทำสิ่งที่คล้ายกันกับ Applet ที่ฉันใช้เพื่อแสดงผลแต่ละวัตถุแล้ว ฉันคิดว่าฉันต้องเก็บชุดของเหตุการณ์ที่สมัครเป็นไปได้แต่ละรายการ - การเพิ่มและลบวัตถุเกมออกจากรายการตามต้องการ ฉันคิดว่ามันควรจะเป็นไปได้ที่จะสร้างคิวของเหตุการณ์ที่ต้องออกอากาศซึ่งในกรณีนี้ฉันสามารถเพิ่ม "EventManager.Update ()" ในเกมหลักและมีUpdate()วิธีออกอากาศกิจกรรมที่เกิดขึ้นในตอนท้าย ของแต่ละเฟรม ในที่สุดวัตถุแต่ละอันจะมีHandleEvent(Event e)วิธีการที่พวกเขาสามารถแยกวิเคราะห์และตอบสนองได้อย่างเหมาะสม เสียงนี้เป็นไปในทิศทางที่เหมาะสมต่อการนำระบบดังกล่าวไปใช้หรือไม่หรือฉันกำลังออกนอกลู่นอกทางและ / หรือขาดอะไรบางอย่างที่ค่อนข้างชัดเจน?
9 events 

1
คลื่นระลอกคลื่น
ฉันทำงานเกมป้องกันหอคอยมาระยะหนึ่งแล้วและตอนนี้ฉันก็พอใจกับผลลัพธ์มาก อย่างไรก็ตามมีสิ่งหนึ่งที่ฉันต้องการเพิ่ม ฉันเคยเห็นวิดีโอของ GeoDefense สำหรับ Windows Phone 7 แล้วที่นี่: http://www.youtube.com/watch?v=YhPr4A4LRPQ โปรดสังเกตว่า (เมื่อยูนิตถูกฆ่าหรือกระสุนปืนชนกับยูนิต) พื้นหลังจะเป็นระลอกคลื่นในเอฟเฟกต์ของคลื่นบางประเภท ฉันจะทำให้เทียบเท่าได้อย่างไร ฉันคิดว่าฉันต้องทำมันในจุดสุดยอดด้วยรูปสี่เหลี่ยมที่ทำจากจุดยอดต่างๆ คุณโทรอะไร แก้ไขเป็นสิ่งสำคัญที่จะต้องทราบว่าเกม XNA ของฉันไม่ได้สร้างขึ้นสำหรับ Windows phone แต่สำหรับพีซี Windows
9 xna  c#  hlsl 

2
อะไรคือข้อเสียของการทำเครื่องหมายขอบทุกด้านว่าเป็นตะเข็บเมื่อเปิดตาข่าย
ฉันเป็นโปรแกรมเมอร์ที่พยายามเรียนรู้การสร้างแบบจำลอง 3 มิติขั้นพื้นฐานเล็กน้อย ฉันรู้สึกสะดวกสบายพอสมควรกับการสร้างแบบจำลองทางเรขาคณิตขั้นพื้นฐานและสามารถถอดแบบง่าย ๆ และแบบจำลองพื้นผิว แต่ฉันมีคำถาม ... เมื่อพูดถึงรูปแบบการเปิดตัวบทเรียนทั้งหมดเน้นความจำเป็นในการทำเครื่องหมายตะเข็บให้น้อยที่สุดเท่าที่จะทำได้เมื่อเปิดตาข่าย คำถามของฉันคือทำไม ฉันเดาว่านี่เป็นสิ่งที่ชัดเจนมากสำหรับผู้ที่มีประสบการณ์ด้านการสร้างแบบจำลอง แต่ไม่ใช่สำหรับฉัน ฉันเดาว่ามันจะทำอย่างไรกับการรักษารูปร่างของแบบจำลองเมื่อต้องแก้ไขพื้นผิวแบบกระจาย? นั่นเป็นเหตุผลเดียวที่คุณไม่ต้องการตัดขอบทุกด้านและแยกหน้าออกเป็นรายบุคคลหรือไม่? ฉันรู้ว่าฉันแสดงความไม่รู้อย่างเต็มที่เมื่อถามคำถามนี้ดังนั้นขอโทษ แต่บางครั้งสิ่งที่ชัดเจนที่สุดนั้นยากที่สุดในการหาคำตอบสำหรับ
9 models  blender 

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

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