การพัฒนาเกม

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

1
ฉันจะบรรลุถึงลักษณะ "กราฟิก 8 บิต" ได้อย่างไร
ฉันมีพื้นฐานการเขียนโปรแกรมที่แข็งแกร่งไม่ได้มาจากการพัฒนาเกม ฉันทำปิงปองและงูในโรงเรียนมัธยมเท่านั้นและฉันก็ทำ OpenGL ที่วิทยาลัย ฉันต้องการสร้างเอ็นจิ้นเกมของตัวเอง ไม่มีอะไรที่คิดว่าเป็นแค่เครื่องมือสร้างเกม 2D ที่เรียบง่าย แต่เพราะฉันเป็นโรงเรียนเก่าและรู้สึกย้อนยุค ฉันต้องการกราฟิกให้ดูเหมือนเกม 8 บิตเก่า (megaman, contra, super mario, ... ) แล้วเกมเก่า ๆ สร้างขึ้นมาได้อย่างไร? ฉันต้องการวิธีที่ง่ายที่สุด พวกเขายังใช้สินทรัพย์ (ภาพ) เหมือนเครื่องมือใหม่ ๆ ในตอนนี้หรือไม่ คุณจะประสบความสำเร็จในการเรนเดอร์ประเภทนี้โดยใช้ OpenGL ได้อย่างไร เก็บไว้ในใจ ทางออกที่ง่ายที่สุด ฉันอยากรู้ว่ามันถูกสร้างขึ้นมาได้อย่างไรและฉันจะทำซ้ำได้อย่างไร ไม่จำเป็นต้องเป็น OpenGL ด้วยซ้ำ ฉันวาดบนผืนผ้าใบที่หน้าต่าง ฉันต้องการที่จะทำให้มันเป็นรอยขีดข่วนโดยทั่วไป

2
การหาเส้นทาง 2D - การค้นหาเส้นทางที่ราบรื่น
ฉันพยายามที่จะใช้การบอกทางแบบง่าย ๆ แต่ผลลัพธ์ก็น่าพอใจน้อยกว่าที่ฉันตั้งใจจะทำ สิ่งที่เป็นหน่วยในเกมเช่น Starcraft 2 ย้ายไปทุกทิศทางในขณะที่หน่วยในกรณีของฉันย้ายได้มากที่สุด 8 ทิศทาง (Warcraft 1 สไตล์) เนื่องจาก 8 ทิศทางเหล่านี้ตรงไปยังโหนดที่มีอยู่ถัดไป (พวกเขาย้ายจากไทล์ . ฉันควรทำอย่างไรเพื่อให้ได้ผลลัพธ์เช่นเดียวกับ Starcraft 2 ลดขนาดของกระเบื้อง? ในภาพคุณสามารถเห็นแนวกระเบื้องในแนวนอนเป็นอุปสรรคและเส้นทางที่พบที่ระบุว่าเป็นกระเบื้องสีเขียว เส้นสีแดงคือเส้นทางที่ฉันต้องการบรรลุ

1
ฉันจะจัดเก็บการสะกด & รายการโดยใช้ std :: vector implementation ได้อย่างไร
ฉันกำลังติดตามพร้อมกับหนังสือจาก GameInstitute ในขณะนี้และขอให้ฉัน: อนุญาตให้ผู้เล่นซื้อและพกยารักษาและยาลูกไฟ คุณสามารถเพิ่มอาร์เรย์ไอเท็ม (หลังจากที่คุณกำหนดคลาสไอเท็ม) ไปยังคลาสเพลเยอร์สำหรับการจัดเก็บหรือใช้ std :: vector เพื่อเก็บมัน ฉันคิดว่าฉันต้องการใช้std::vectorการนำไปใช้เนื่องจากดูเหมือนว่าจะทำให้ฉันสับสนน้อยกว่าการสร้างคลาสไอเท็ม แต่ฉันไม่แน่ใจว่าจะทำอย่างไร ฉันได้ยินมาจากหลาย ๆ คนว่าเวกเตอร์เป็นวิธีที่ดีในการเก็บค่าแบบไดนามิก (เช่นรายการอาวุธ ฯลฯ ) แต่ฉันไม่เคยเห็นมันมาใช้
10 c++  text-based 

4
GUI Library สำหรับ MonoGame [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา มี GuiLibrary ใดบ้างที่ใช้ได้กับ MonoGame ฉันรู้ว่ามี GUI Library สำหรับ XNA แต่ฉันคิดว่าส่วนใหญ่จะไม่ทำงานกับ MonoGame แม้แต่สิ่งง่าย ๆ เช่นปุ่มและอินพุตจะช่วยฉัน ... ขอบคุณ
10 monogame 

1
SDL blitting พื้นผิวหลาย ๆ อันพร้อมกัน
ฉันพยายามเขียนเกม platforming ที่ sprite สำหรับพื้นหลังเลเวลถูกแบ่งออกเป็นชิ้นขนาด 512x512 ฉันเก็บหน่วยความจำครั้งละ 3 ชิ้นและฉันพยายามเขียนโค้ดเพื่อทำให้หน้าจอทั้งสามปรากฏขึ้น นี่คือรหัสปัจจุบันที่ฉันมี: SDL_Rect where; where.y = -game->camera->y; where.x = -game->camera->x - MAP_WIDTH; SDL_BlitSurface(left_chunk, NULL, screen, &where); where.x = -game->camera->x; SDL_BlitSurface(center_chunk, NULL, screen, &where); where.x = -game->camera->x + MAP_WIDTH; SDL_BlitSurface(right_chunk, NULL, screen, &where); ปัญหาที่ฉันพบคือสิ่งใดก็ตามที่ถูกทำให้เป็นก้อนเป็นครั้งแรกเป็นสิ่งเดียวที่ปรากฏขึ้น ที่เหลือไม่ปรากฏบนหน้าจอ ฉันคิดว่าปัญหาอาจมีบางอย่างที่เกี่ยวข้องกับความโปร่งใสอัลฟ่า แต่แม้ว่าชิ้นส่วนจะไม่ทับซ้อนกันพวกเขาก็ยังคงล้มเหลว ในส่วนอื่น ๆ ของรหัสฉันจะทำหลายอย่างพร้อมกันบนหน้าจอในเวลาเดียวกันเช่นตัวละครและพื้นหลังและสิ่งเหล่านั้นจะปรากฏขึ้นอย่างถูกต้อง ส่วนของรหัสนี้เป็นพื้นที่เดียวที่ฉันพบปัญหานี้ หากฉันใส่ความคิดเห็นในบรรทัดที่ blits …
10 sdl 

3
จะอัพเดทสถานะเอนทิตีและแอนิเมชั่นในเกมที่อิงองค์ประกอบได้อย่างไร
ฉันกำลังพยายามออกแบบระบบเอนทิตีที่อิงองค์ประกอบเพื่อการเรียนรู้ (และใช้ในภายหลังในบางเกม) และฉันมีปัญหาบางอย่างเมื่อต้องอัพเดตสถานะเอนทิตี ฉันไม่ต้องการให้มีการอัปเดตวิธี () ภายในคอมโพเนนต์เพื่อป้องกันการพึ่งพาระหว่างคอมโพเนนต์ สิ่งที่ฉันมีอยู่ในใจในขณะนี้คือส่วนประกอบเก็บข้อมูลและส่วนประกอบการปรับปรุงระบบ ดังนั้นถ้าฉันมีเกม 2D ง่าย ๆ ที่มีบางหน่วยงาน (เช่นผู้เล่น, ศัตรู 1, ศัตรู 2) ที่มีองค์ประกอบการแปลง, การเคลื่อนไหว, สถานะ, ภาพเคลื่อนไหวและการแสดงผลฉันคิดว่าฉันควรจะมี: MovementSystem ที่จะทำการเคลื่อนย้ายส่วนประกอบการเคลื่อนไหวทั้งหมดและอัพเดทส่วนประกอบของรัฐ และ RenderSystem ที่อัพเดทองค์ประกอบภาพเคลื่อนไหว (องค์ประกอบภาพเคลื่อนไหวควรมีภาพเคลื่อนไหวหนึ่งภาพ (เช่นชุดของเฟรม / พื้นผิว) สำหรับแต่ละรัฐและอัปเดตหมายถึงการเลือกภาพเคลื่อนไหวที่สอดคล้องกับสถานะปัจจุบัน (เช่นการกระโดด, moving_left ฯลฯ ) และ อัปเดตดัชนีเฟรม) จากนั้น RenderSystem จะอัปเดตส่วนประกอบ Render ด้วยพื้นผิวที่สอดคล้องกับเฟรมปัจจุบันของ Animation ของแต่ละกิจการและแสดงทุกอย่างบนหน้าจอ ฉันเห็นการใช้งานบางอย่างเช่นกรอบงานของ Artemis แต่ฉันไม่รู้วิธีแก้ปัญหานี้: สมมติว่าเกมของฉันมีเอนทิตีต่อไปนี้ แต่ละเอนทิตีมีชุดสถานะและภาพเคลื่อนไหวหนึ่งรายการสำหรับแต่ละสถานะ: ผู้เล่น: …

4
ข้อพิจารณาทางกฎหมายเมื่อเริ่มต้นทีมพัฒนาเกม
ฉันกำลังจะเริ่มโครงการกับนักพัฒนาอีกสองคนและศิลปินที่ฉันยังไม่พบ ฉันไม่แน่ใจว่าเราควรจะจัดการกับสิ่งนั้นอย่างไรจากมุมมองทางกฎหมาย เราควรจะเซ็นสัญญาหรือไม่? สิ่งที่ควรระบุไว้ในเอกสารดังกล่าว เกมส่วนใหญ่จะเป็นอิสระ

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

3
มีความสัมพันธ์ระหว่างทฤษฎีเกมกับการพัฒนาเกมหรือไม่?
ฉันเป็นโปรแกรมเมอร์ Java สนใจที่จะเรียนรู้เกมบน Java เมื่อเร็ว ๆ นี้ฉันดูหนังสือเกี่ยวกับปฏิบัติการวิจัยที่เขียนโดย Wayne L.Winston มีหัวข้อเกี่ยวกับทฤษฎีเกม มันเป็นคณิตศาสตร์อย่างแท้จริง ฉันเป็นเพียงผู้พัฒนาแอพ แต่หนังสือเล่มนั้นจะมีประโยชน์ในการเริ่มต้นอาชีพการเล่นเกมหรือไม่?
10 java  game-theory 

1
ตอนนี้ Device Central นั้นตายไปแล้วฉันจะทดสอบแอพพลิเคชั่น Flash Lite ได้อย่างไร?
ฉันพยายามใช้ Flash Lite เพื่อสร้างเกมง่ายๆสำหรับแฟนของฉันที่มี Nokia 5530 เท่านั้น แต่ฉันเพิ่งรู้ใน CS6 Adobe ฆ่า Device Central ดังนั้นจึงไม่มีวิธีที่ฉันจะทดสอบโดยไม่ใช้อุปกรณ์ (และเป็น น่าแปลกใจ) มีวิธีอื่นที่ให้ฉันทดสอบหรือไม่ ฉันรู้ว่าฉันสามารถส่งออกภาพยนตร์และใช้ Flash Player ได้ แต่ Device Central อนุญาตให้ฉันทดสอบการลากและวางและการใช้หน่วยความจำ / โปรเซสเซอร์เช่น ... tl; dr มีทางเลือกอื่นสำหรับ Device Central สำหรับการทดสอบ Flash Lite ในอุปกรณ์รุ่นเก่าหรือไม่?
10 flash 

1
กระสุนฟิสิกส์ - หล่อเรย์ลงมาจากร่างแข็ง (กล้องคนแรก)
ฉันติดตั้งกล้องคนแรกด้วยกระสุนปืน - มันเป็นกล้องที่มีรูปร่างเหมือนแคปซูล ฉันใช้ Bullet เพียงไม่กี่วันและเครื่องมือฟิสิกส์ใหม่สำหรับฉัน ฉันใช้btRigidBody::setLinearVelocity()เพื่อเคลื่อนย้ายมันและชนกับโลกได้อย่างสมบูรณ์แบบ ปัญหาเดียวคือค่า Y เคลื่อนที่อย่างอิสระซึ่งฉันแก้ไขได้ชั่วคราวด้วยการตั้งค่า Y ของเวกเตอร์การแปลเป็นศูนย์ก่อนที่ร่างกายจะถูกย้าย ใช้ได้กับทุกกรณียกเว้นเมื่อตกลงมาจากที่สูง เมื่อร่างกายหลุดวัตถุที่สูงคุณยังสามารถร่อนไปรอบ ๆ ได้เนื่องจากค่า Y ของเวกเตอร์การแปลถูกตั้งค่าเป็นศูนย์จนกว่าคุณจะหยุดเคลื่อนที่และตกลงไปที่พื้น (ความเร็วจะถูกตั้งค่าเมื่อเคลื่อนที่เท่านั้น) ดังนั้นเพื่อแก้ปัญหานี้ฉันต้องการที่จะลองโยนรังสีลงจากร่างกายเพื่อกำหนดค่า Y ของโลกและตรวจสอบความแตกต่างระหว่างค่านั้นกับค่า Y ของตัวกล้องและปิดหรือลดการเคลื่อนไหวหาก ความแตกต่างมีขนาดใหญ่พอ ฉันติดอยู่กับการคัดเลือกเรย์และกำหนดค่า Y ของโลกที่มันกระทบ ฉันได้ดำเนินการติดต่อกลับนี้: struct AllRayResultCallback : public btCollisionWorld::RayResultCallback{ AllRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld) : m_rayFromWorld(rayFromWorld), m_rayToWorld(rayToWorld), m_closestHitFraction(1.0){} btVector3 m_rayFromWorld; btVector3 m_rayToWorld; btVector3 m_hitNormalWorld; …

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

3
คุณบรรจุทรัพยากรในเกมอย่างไรเมื่อคุณมีทรัพยากรมากเกินไป
ฉันเพิ่งสร้าง Space Invaders พื้นฐานใน C ++ โดยใช้ Allegro 5 framework หลังจากฉันเสร็จฉันก็รู้ว่าฉันมีสไปรต์ประมาณ 10 อันและค่า DLLs 13MB ผู้เล่นบางคนไม่มีแม้แต่ mingW DLLs ซึ่งทำให้เกมสับสนมาก ฉันจะแพ็คทรัพยากรทั้งหมดของฉันในวิธีที่ฉันสามารถเพิ่มและลบข้อมูลในเกมของฉันได้อย่างง่ายดายและเพื่อลดขนาดของทรัพยากรที่ใช้โดยทั่วไปแล้ววางไว้ในที่เดียว ฉันใช้ codeblocks
10 c++  assets 

1
การแก้ไขความลึกสำหรับบัฟเฟอร์ z กับ scanline
ฉันต้องเขียนซอฟต์แวร์ 3d rasterizer ของตัวเองและจนถึงตอนนี้ฉันสามารถฉายโมเดล 3 มิติของฉันที่สร้างจากรูปสามเหลี่ยมลงในพื้นที่ 2d: ฉันหมุนแปลและฉายจุดเพื่อให้ได้พื้นที่ 2 มิติของสามเหลี่ยมแต่ละอัน จากนั้นฉันใช้จุดสามเหลี่ยม 3 จุดและใช้อัลกอริธึม scanline (โดยใช้การแก้ไขเชิงเส้น) เพื่อค้นหาทุกจุด [x] [y] ตามขอบ (ซ้ายและขวา) ของรูปสามเหลี่ยมเพื่อให้ฉันสามารถสแกนสามเหลี่ยมในแนวนอนได้ เรียงต่อกันแล้วเติมด้วยพิกเซล วิธีนี้ใช้ได้ผล ยกเว้นฉันต้องใช้ z-buffering ด้วย ซึ่งหมายความว่าการรู้พิกัด z ที่หมุนและแปลของจุดยอด 3 จุดของรูปสามเหลี่ยมฉันต้องแก้ไขพิกัด z สำหรับจุดอื่น ๆ ทั้งหมดที่ฉันพบด้วยอัลกอริทึมสแกนไลน์ของฉัน แนวคิดดูเหมือนชัดเจนพอแรกพบ Za และ Zb ด้วยการคำนวณเหล่านี้: var Z_Slope = (bottom_point_z - top_point_z) / (bottom_point_y - top_point_y); …

6
รูปแบบของระบบการต่อสู้แบบ RPG ที่ไม่โต้ตอบมีอยู่ในรูปแบบใดบ้าง
ฉันสนใจระบบที่อนุญาตให้ผู้เล่นพัฒนาแผนการต่อสู้หรือกลยุทธ์การตั้งค่าสำหรับปาร์ตี้หรือตัวละครก่อนเข้าสู่การต่อสู้ ในระหว่างการต่อสู้ผู้เล่นไม่สามารถป้อนคำสั่งหรือไม่เลือก Rule Based ในระบบนี้ผู้เล่นสามารถตั้งค่ารายการกฎในรูปแบบของ [เงื่อนไข -> การกระทำ] ที่ถูกจัดลำดับตามลำดับความสำคัญ กลเม็ดใน Final Fantasy XII กลยุทธ์ใน Dragon Age Origin & II
10 rpg  strategy 

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