การพัฒนาเกม

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

4
อะไรคือความแตกต่างระหว่าง“ Gameplay Programmer” และ“ Gameplay Engineer?”
ฉันกำลังอ่านคำบรรยายลักษณะงานบางอย่างจากผู้พัฒนา AAA บางรายในอุตสาหกรรมเกมและฉันสังเกตเห็นว่ามีงานสำหรับ "Gameplay Programmers" เช่นเดียวกับ "Gameplay Engineers" นั่นคือสิ่งเดียวกันหรือไม่ พวกเขาทำสิ่งเดียวกันหรือไม่

1
คลาส Pool จำเป็นต้องเก็บวัตถุเมื่อใดและเพราะเหตุใด
ฉันกำลังศึกษา opengl es และตัวอย่างที่ฉันเห็นคือใช้คลาส "พูล" เพื่อติดตามกิจกรรมการสัมผัสและคีย์บอร์ด มีคนช่วยอธิบายได้ว่าทำไมและทำไมจึงต้องมีคลาสพูล จากสิ่งที่ฉันอ่านมันมีส่วนเกี่ยวข้องกับการรวบรวมขยะและ จำกัด จำนวนคลาสอินพุตที่สร้างขึ้น ทั้งหมดนี้ดูเหมือนเป็นนามธรรมเล็กน้อยสำหรับฉันดังนั้นหากใครบางคนสามารถโปรดอธิบายสิ่งที่เกิดขึ้นฉันจะขอบคุณมันฉันจะวางรหัสที่นี่: public Pool(PoolObjectFactory < T > factory, int maxSize) { this.factory = factory; this.maxSize = maxSize; this.freeObjects = new ArrayList < T > (maxSize); } public T newObject() { T object = null ; if (freeObjects.isEmpty()) object = factory.createObject(); else …

5
วิธีเพิ่มความรู้สึกลึก ๆ
ฉันมีนางแบบภูเขาหลายคนกำลังวาดอยู่ด้านหลัง ดูภาพหน้าจอจริงที่นี่: ที่ด้านหลังสุดคุณจะเห็นภูเขาสีเทาเหล่านั้น แม้ว่าจะอยู่ในพื้นหลังมาก แต่ก็ยังไม่ปรากฏว่า "อยู่ในพื้นหลัง" ฉันจะเพิ่มความรู้สึกลึกลงไปบนภูเขาเหล่านั้นได้อย่างไร? ฉันอยากเห็นพวกเขาไกลแสนไกล นี่คือลักษณะที่ปรากฏตอนนี้ขอบคุณ DarenW
12 art 

2
นิติบุคคลประเภทใดที่ฉันต้องการสำหรับ บริษัท เกมของฉันในสหรัฐอเมริกา
ฉันเป็นผู้นำของกลุ่มเรา 4 คนที่มีส่วนร่วมในเกมและได้รับความสนใจจากฉันว่าในที่สุดเราจะต้องมีชื่อทางการหรืออะไรบางอย่างตามบรรทัดเหล่านั้น เราได้ตกลงกันในชื่อและเรามีชื่อโดเมนและแหล่งข้อมูลส่วนหลังหลายรายการที่ฉันตั้งไว้ภายใต้แบรนด์แล้ว ฉันอยากรู้ขั้นตอนที่จำเป็นในการทำให้เป็น "ทางการ" และปกป้องทรัพย์สินของฉัน นี่คือสิ่งที่ฉันกังวลที่สุดเกี่ยวกับการปล่อยใกล้ชิดหรือไม่ ฉันดูที่โพสต์นี้และฉันก็ดูที่หน้านี้ด้วย อย่างไรก็ตามฉันต้องการคำตอบที่ตรงจากผู้คนที่เคยขับรถบนถนนที่คล้ายกันในอดีต
12 business 

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

1
รูปแบบสตรีมผู้ชมของ League of Legends
Intro ฉันเล่นซอกับระบบผู้ชมสำหรับ LoL ด้วยความหวังว่าในที่สุดจะทำการคัดลอกข้อมูลจากสตรีมและสร้างชุดข้อมูลเพื่อทำการวิเคราะห์ ฉันเข้าใจว่ามี API และเทคนิคที่ไม่เป็นทางการอยู่แล้ว แต่ฉันกำลังมองหากิจกรรมเกมที่เฉพาะเจาะจงจริงๆ (การฆ่าแชมป์, การฆ่าป้อมปืน, puchases รายการ, การฆ่าม็อบป่า, การรวมกลุ่มสำหรับเหตุการณ์เฉพาะ ฯลฯ ) สิ่งที่ฉันคิดได้จนถึงตอนนี้ เมื่อคุณเริ่มชมเกม (ใน NA) ไคลเอ็นต์ของคุณเชื่อมต่อกับโฮสต์ต่อไปนี้: spectator.na.lol.riotgames.com:8088 ฉันคิดว่าโฮสต์นี้ได้รับการสนับสนุนโดย Amazon AWS หรือคล้ายกัน อย่างไรก็ตามสิ่งต่อไปที่เกิดขึ้นคือไคลเอนต์ส่งคำขอรุ่นไปยังเซิร์ฟเวอร์ spectate: GET / โหมดผู้สังเกตการณ์ / ส่วนที่เหลือ / ผู้บริโภค / รุ่น สิ่งนี้จะคืนสิ่งที่เวอร์ชันเซิร์ฟเวอร์ผู้ชมปัจจุบันคืออะไร เช่น: '1.80.54' ถัดไปลูกค้าส่งคำร้องขอข้อมูลเมตาของเกม: GET / ผู้สังเกตการณ์โหมด / ที่พัก / ผู้บริโภค / getGameMetaData …

3
EXTREMELY สับสนมากกับ "เกมความเร็วคงที่สูงสุด FPS" ลูปเกม
ฉันเพิ่งอ่านบทความนี้เกี่ยวกับ Game Loops: http://www.koonsolo.com/news/dewitters-gameloop/ และการนำไปใช้ครั้งสุดท้ายที่แนะนำทำให้ฉันสับสนอย่างยิ่ง ฉันไม่เข้าใจวิธีการทำงานและดูเหมือนเป็นระเบียบสมบูรณ์ ฉันเข้าใจหลักการ: อัปเดตเกมด้วยความเร็วคงที่ไม่ว่าอะไรก็ตามที่เหลือจะทำให้เกมเป็นไปได้หลายครั้ง ฉันคิดว่าคุณไม่สามารถใช้: รับอินพุต 25 ขีด เกมแสดงผลสำหรับ 975 เห็บ วิธีการตั้งแต่คุณจะได้รับการป้อนข้อมูลสำหรับส่วนแรกของสองและสิ่งนี้จะรู้สึกแปลก? หรือเป็นสิ่งที่เกิดขึ้นในบทความ? เป็นหลัก: while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) มันจะใช้ได้ยังไง? สมมติว่าคุณค่าของเขา MAX_FRAMESKIP = 5 สมมุติว่า next_game_tick ซึ่งกำหนดช่วงเวลาหลังจากเริ่มต้นก่อนที่ลูปเกมหลักจะพูดว่า ... 500 ในที่สุดเมื่อฉันใช้ SDL และ OpenGL สำหรับเกมของฉันด้วย OpenGL ที่ใช้สำหรับการเรนเดอร์เท่านั้นสมมติว่าGetTickCount()คืนค่าเวลาตั้งแต่ SDL_Init ถูกเรียกซึ่งมันทำ SDL_GetTicks -- Get the number …

4
กลยุทธ์ AI ในเกม turnbased หรือไม่?
ฉันสนใจในการทำงานของเอนจิ้น AI เชิงกลยุทธ์เช่นวิธีการประเมินว่าจะวางทัพในเกมวางแผนแบบ turnbased เป็นต้น ฉันเข้าใจว่า AI ทำงานตามเป้าหมายได้อย่างไรและฉันคิดว่านี่เป็นวิธีการที่ดีในการตัดสินใจว่าจะสร้างหรือวิจัยในเกมเช่นอารยธรรม แต่การวางตำแหน่งทางยุทธวิธี / กลยุทธ์ของกองกำลัง / หน่วย อัลกอริทึม / กลยุทธ์ใดที่ใช้ในการประเมินสิ่งเหล่านั้น เอกสารอ้างอิง / บทความใด ๆ

1
ฉันจะสร้างสปอตไลต์ 2D หลาย ๆ ตัวได้อย่างไร
ฉันต้องการสร้างเอฟเฟกต์ "สปอตไลท์" แบบ 2D ที่อนุญาตสปอตไลท์ให้กับเอนทิตีหลาย ๆ แห่ง คือราวกับว่าผีสางหลายตัวถือไฟฉายอยู่ สำหรับเอนทิตีเดียว (หนึ่งสปอตไลท์) ฉันใช้เทคนิคที่ฉันซ้อนทับสไปรต์ไล่ระดับสีและมีการไล่ล่าเซ็นเตอร์พอยท์นั้น เทคนิคนี้ใช้งานได้ดีสำหรับสปอตไลต์เดียว นี่เป็นภาพหน้าจอเพื่ออธิบายสิ่งที่ฉันพูดถึง: Spotlight เดียว - งาน ปัญหาที่ฉันพบคือเทคนิคนี้ไม่ขยายไปถึงหลายเอนทิตี หากฉันซ้อนทับภาพสปอตไลท์อื่นฉันพบปัญหาหลายอย่าง นี่เป็นภาพหน้าจอจำลอง: สปอตไลหลายตัว = ปัญหา ปัญหาที่ชัดเจนที่สุดคือมุมที่มองเห็นได้ สิ่งนี้สามารถแก้ไขได้ด้วยการทำให้ภาพสปอตไลต์มโหฬารครอบคลุมทั้งระดับ แต่ไม่รู้สึกว่าถูกต้อง ปัญหาที่สองและยากยิ่งขึ้นคือการที่ฉันเพิ่มความมืดด้วยเทคนิคนี้ได้อย่างมีประสิทธิภาพ ดังนั้นสไปรต์แต่ละอันที่เพิ่มเข้ามาจะมีผลทำให้คนอื่นมืด เห็นได้ชัดว่าฉันเข้าใกล้ปัญหานี้อย่างไม่ถูกต้อง ความคิดใด ๆ ความพยายามอย่างต่อเนื่อง มีการพูดคุยเกี่ยวกับตัวเลือกการผสมในความคิดเห็น นี่คือความคิดปัจจุบันของฉัน ในตัวอย่างสปอตไลต์เดียวของฉันด้านบนฉันใช้ไฟล์รูปภาพที่มีลักษณะดังนี้: (ฉันได้แทนที่ความโปร่งใสด้วยสีเขียวเพื่อให้ง่ายต่อการอธิบาย) ดังที่ได้อธิบายไว้ข้างต้นปัญหาคืออัลฟ่าผสมภาพนี้กับภาพอื่นจะไม่สร้างเอฟเฟกต์ที่ต้องการ แต่มันจะผลิตสิ่งนี้: แต่นั่นไม่ได้ทำให้ฉันเป็นปัญหาตัวเลือกการผสม ปัญหาที่เห็นได้ชัดสำหรับฉันก็คือภาพประเภทนั้นมีหน้ากากโปร่งใสและภาพ (สี่เหลี่ยมสีดำ) ติดตั้งอยู่ภายในเมื่อควรแยกออกจากกัน ดังนั้นแทนที่จะเป็นภาพสีดำที่มีความโปร่งใสแบบตัดออกในตัวฉันควรจะใช้มาสก์แบบโปร่งใสที่ใช้ในเวลาทำงานกับสี่เหลี่ยมสีดำ เมื่อทำเช่นนั้นฉันยังคงไม่สามารถใช้มาส์กแบบโปร่งใสสีขาวและสีดำแบบดั้งเดิมได้หรือจะพบปัญหาเดียวกัน นี่คือตัวอย่างในเวลานี้สีขาวและสีดำแสดงสีขาวและสีดำ: ดูเหมือนว่าโซลูชันจะใช้หน้ากากโปร่งใสที่ใช้ประโยชน์จากความโปร่งใส บางสิ่งเช่นนี้: (สีเขียว = โปร่งใส) …
12 2d  sprites  camera  lighting 

2
วิธีจัดการการค้นหาเส้นทางและการเคลื่อนย้ายเอนทิตีในโลกเครือข่ายขนาดใหญ่
เมื่อพิจารณาจากภาพด้านบนด้วยการแบ่งกระเบื้องออกเป็นกล่องขนาด 32x32 ฉันมีเอนทิตีที่ถูกทำเครื่องหมายเป็นผู้เล่นใกล้เคียง 'aggro' ที่เข้ามาใกล้ ฉันต้องการให้สัตว์ประหลาดตัวนี้ไล่ล่าผู้เล่น (และจะไล่ล่าผู้เล่นซักพัก) ปัจจุบันการเคลื่อนไหวเพียงอย่างเดียวของฉันได้ทำ interpolator อย่างง่ายสำหรับเอนทิตีระยะไกลและสิ่งนี้ทำงานได้เนื่องจากช่องว่างระหว่างการอัพเดตการเคลื่อนไหวมีขนาดค่อนข้างเล็ก ฉันไม่สามารถบอกลูกค้าได้ว่าสัตว์ประหลาดต้องการย้ายไปยังตำแหน่งที่เขา / เธออยู่เพราะจะทำให้เอนทิตีเคลื่อนที่เร็วกว่าที่ควร (สิ่งนี้สามารถแก้ไขได้ด้วยการใช้คณิตศาสตร์สำหรับการแก้ไข - ประสิทธิภาพ) แต่ที่สำคัญกว่านั้นไม่ได้ดูสมจริงและอาจติดผนัง! ฉันไม่ต้องการจำลองการเคลื่อนไหวทั้งหมดบนเซิร์ฟเวอร์หากสามารถหลีกเลี่ยงได้ ... แม้ว่าฉันจะเดาได้ แต่ก็ยังไม่สามารถแก้ปัญหาการตัดได้ ฉันสงสัยว่าโซลูชันเกี่ยวข้องกับการค้นหาพา ธ และส่งการอัพเดตโหนดเป็นระยะของไคลเอ็นต์และให้พวกเขาจำลองการเคลื่อนไหว แต่ฉันไม่แน่ใจ ขอบคุณ!

8
การแปลงเส้นโค้ง 2D เป็นจุดสำหรับการจัดเก็บข้อมูล
ฉันได้สร้างอัลกอริทึมที่แปลงเส้นโค้งใด ๆ เช่นเส้นทางเป็นจำนวนจุดต่ำสุดเพื่อให้ฉันสามารถบันทึกลงในไฟล์หรือฐานข้อมูล วิธีนี้ง่ายมาก: มันขยับสามจุดในขั้นตอนที่เท่ากันและวัดมุมระหว่างเส้นที่จุดเหล่านี้ก่อตัวขึ้น หากมุมมีขนาดใหญ่กว่าค่าความคลาดเคลื่อนก็จะสร้างเส้นโค้งลูกบาศก์ใหม่ไปยังจุดนั้น จากนั้นมันจะเลื่อนเส้นไปข้างหน้าและวัดมุมอีกครั้ง ... สำหรับผู้ที่รู้ว่า Android Path Class - โปรดทราบว่าdstPathเป็นคลาสที่กำหนดเองซึ่งบันทึกคะแนนลงใน Array เพื่อให้ฉันสามารถบันทึกคะแนนในภายหลังในขณะที่srcPathเป็นผลมาจากการรวมกันของภูมิภาคดังนั้นจึงไม่มีประเด็นสำคัญสำหรับฉัน เพื่อบันทึก. ปัญหาคือว่าวงกลมดูไม่ราบรื่นอย่างที่คุณเห็นในภาพนี้ผลิตโดยโค้ดด้านล่างซึ่งเส้นทางที่มาประกอบด้วยวงกลมและสี่เหลี่ยมผืนผ้าที่สมบูรณ์แบบ ฉันพยายามเปลี่ยนมุมความอดทนและความยาวของก้าว แต่ไม่มีอะไรช่วย ฉันสงสัยว่าคุณสามารถแนะนำการปรับปรุงอัลกอริทึมนี้หรือแนวทางอื่น แก้ไข: ฉันได้โพสต์รหัสทั้งหมดสำหรับผู้ที่ใช้ Android java เพื่อให้พวกเขาสามารถลองและทดลองได้อย่างง่ายดาย public class CurveSavePointsActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CurveView(this)); } class CurveView extends View{ Path srcPath, dstPath; Paint srcPaint = …

8
ฉันควรเรียนจบมัธยมปลายหรือสอนตัวเอง? [ปิด]
คำถามนี้ไม่น่าจะช่วยผู้เข้าชมในอนาคต มันเกี่ยวข้องเฉพาะกับพื้นที่ทางภูมิศาสตร์ขนาดเล็กช่วงเวลาที่เฉพาะเจาะจงหรือสถานการณ์ที่แคบเป็นพิเศษซึ่งโดยทั่วไปไม่สามารถใช้ได้กับผู้ชมทั่วโลกของอินเทอร์เน็ต สำหรับความช่วยเหลือในการทำคำถามนี้มากขึ้นบังคับในวงกว้างไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการเป็นนักพัฒนาเกมฉันเป็นนักเรียนเกรด 11 และรู้สึกเหมือนฉันกำลังเสียเวลาในโรงเรียนมัธยม ฉันกำลังคิดที่จะเปลี่ยนไปเรียนที่โฮมสกูลเพื่อให้ฉันมีเวลามากขึ้นในการเรียนรู้การพัฒนาเกมด้วยตัวเองในขณะที่เรียนอยู่ที่บ้าน บางคนที่ฉันพูดถึงเกี่ยวกับเรื่องนี้บอกว่าดีกว่าที่จะอยู่ในโรงเรียนและไปเรียนที่วิทยาลัยบางคนบอกว่าฉันจะได้รับประกาศนียบัตรของฉันผ่านโฮมสกูลและด้วยวิธีนี้ฉันจะได้เริ่มต้นในสิ่งที่ฉันชอบทำ ฉันไม่แน่ใจว่าจะทำอย่างไรและสงสัยว่ามีโปรแกรมเมอร์ที่มีประสบการณ์ออกมาบ้างหรือไม่ที่สามารถให้คำแนะนำเส้นทางที่ฉันควรใช้ ??

2
OpenGL: เป็นไปได้ไหมที่จะใช้ VAO โดยไม่ระบุ VBO
ในแบบฝึกหัดทั้งหมดที่ฉันพบเกี่ยวกับ VAO (Vertex Array Objects) พวกเขาแสดงวิธีการใช้พวกเขาโดยการกำหนดค่าคุณลักษณะจุดสุดยอดและผูก VBO (Vertex Buffer Object) แต่ฉันต้องการสร้าง VAO ที่จะกำหนดค่าสำหรับชุด VBO's ร่วมกับ shader คงที่ซึ่งแต่ละบัฟเฟอร์ใช้รูปแบบข้อมูลเดียวกัน (จุดยอด, UV, สี, ฯลฯ ) ดังนั้นฉันต้องการสร้างหนึ่ง VAO สำหรับ VBO หลายรายการที่จะถูกวาดโดยใช้หนึ่ง shader ฉันไม่พบตัวอย่างใด ๆ เกี่ยวกับเรื่องนี้ดังนั้นฉันจึงตัดสินใจลองทำดู แต่มันไม่ทำงานและล้มเหลวในการglDrawArrayโทร ดูเหมือนว่า VBO จะไม่ถูกผูกไว้ นี่คือรหัสที่ฉันใช้: การแสดงผล: /* Prepare vertex attributes */ glBindVertexArrayOES(vao); /* Upload the buffer to the GPU …
12 opengl  vbo  vao 

1
OpenGL - ขอบสีขาวบนก้อน
ในเกมที่คล้ายกับ Minecraft ที่ฉันกำลังสร้างฉันจะได้ขอบขาวบนลูกบาศก์ของฉัน: มันชัดเจนมากขึ้นในพื้นผิวสีเข้ม พื้นผิวกำลังติดตั้งดังนี้: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); ความช่วยเหลือใด ๆ

1
แหล่งข้อมูลที่ดีสำหรับการเรียนรู้เกี่ยวกับฮาร์ดแวร์กราฟิก [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันกำลังมองหาแหล่งการเรียนรู้ที่ดีสำหรับฮาร์ดแวร์กราฟิก (และซอฟต์แวร์ระดับต่ำที่เกี่ยวข้อง) โดยทั่วไปฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นภายใต้เลเยอร์ opengl / direcx API ในแง่ของวิธีการใช้งาน ฉันคุ้นเคยกับสิ่งที่เกิดขึ้นในหลักการระหว่างขั้นตอนต่าง ๆ ของไปป์ไลน์เรนเดอร์ (การดูการฉายภาพการตัดการแรสเตอร์ ฯลฯ ) เป้าหมายของฉันคือเพื่อให้สามารถตัดสินใจได้ดีขึ้นและมีข้อมูลมากขึ้นเกี่ยวกับการแลกเปลี่ยนและการเพิ่มประสิทธิภาพที่เป็นไปได้เมื่อโปรแกรมกราฟิก / shader ที่เกี่ยวข้องกับประเด็นต่อไปนี้; เครื่องผสม ดูการเลือกสรร occlusions วาดคำสั่ง หลีกเลี่ยงการเปลี่ยนแปลงสถานะ สามเหลี่ยม vs พอยท์ การสุ่มตัวอย่างพื้นผิว ฯลฯ โดยพื้นฐานแล้วสิ่งที่โปรแกรมเมอร์กราฟิกจำเป็นต้องรู้เกี่ยวกับฮาร์ดแวร์กราฟิกสมัยใหม่เพื่อให้มีประสิทธิภาพมากขึ้น ฉันไม่ได้มองหาเทคนิคการเพิ่มประสิทธิภาพที่เฉพาะเจาะจง แต่ฉันต้องการความรู้ทั่วไปเพิ่มเติมเพื่อที่ฉันจะเขียนโค้ดที่มีประสิทธิภาพมากขึ้น

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