การพัฒนาเกม

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

3
LibGDX Game vs ApplicationAdapter
เมื่อฉันสร้าง LibGDX โครงการใหม่ชั้นหลักของโครงการหลักขยายApplicationAdapter นี่คือลักษณะที่ปรากฏ package com.marimba.apptest; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; public class AppMain extends ApplicationAdapter { @Override public void create () { } @Override public void render () { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); } } ดังนั้นฉันต้องเปลี่ยนApplicationAdapterเป็นGameหากฉันต้องการเรียกเมธอด setScreen เพื่อสลับระหว่างหน้าจอ ดังนั้นการใช้ApplicationAdapterคืออะไร? ฉันจะใช้มันเมื่อไหร่?
12 java  libgdx 

2
หยุดเกมชั่วคราวภายในลูปเกม
ภายในลูปเกมเกมหยุดชั่วคราวโดยการกด P ซึ่งหมายความว่าลูปเกมจะไม่ทำงานอีกต่อไป ปัญหาคือหลังจากหยุดลูปนี้แล้วไม่สามารถกด P อีกครั้งเพื่อกลับมาเล่นลูปต่อได้เนื่องจากอยู่ในลูปเอง จะทำอย่างไรเพื่อให้เมื่อกด P อีกครั้งจะทำให้ลูปทำงานอีกครั้ง
12 game-loop 

2
หมึกหยดหมึก Rorschach (aka ภาพทดสอบจิตวิทยา) shader
(ที่มา: bonnefil.com ) ฉันต้องการรูปแบบที่สวยงามนี้จะอยู่ในเกมของฉัน จนถึงตอนนี้ฉันได้คิดออก ... วาดด้านหนึ่งจากนั้นแสดงสองครั้งไปทางซ้ายและขวา ฉันจะแสดงรูปแบบนี้ในด้านหนึ่งได้อย่างไร อืมม ... ฉันต้องการความช่วยเหลือ. ฉันต้องการข้อมูลเชิงลึกเกี่ยวกับการเขียน Shader สำหรับเรื่องนี้ หากคุณคิดว่าไม่เหมาะกับงาน Shader ให้ฉันรู้ด้วยหวังว่าจะมีทางเลือกอื่น! อย่างไรก็ตามฉันไม่เห็นวิธีที่เป็นไปได้ที่จะบรรลุเป้าหมายนี้หากไม่มี GPU (ถ้าคุณไม่แนะนำให้เก็บรูปภาพที่เตรียมไว้จากรูป rorscach)

6
วิธีการ Color.Lerp ระหว่างหลายสี?
ฉันพบว่ามันค่อนข้างยากที่จะหาทางแก้ไขในเอกสาร Unity Color.Lerp(Color a, Color b, float t) เป็นฟังก์ชั่นที่ค่อยๆเปลี่ยนสีตามขั้นตอน t โดยให้ค่าสุดท้ายของ Color b ฉันจะ Lerp ระหว่างสีหลายสีทีละคน?
12 c#  unity  color  lerp 

5
จะตัดสินได้อย่างไรว่าตัวละครตกลงไปในช่องว่างของนักวิ่ง / จัมเปอร์ที่ไม่มีที่สิ้นสุด?
ฉันกำลังสร้างนักวิ่งที่ไม่มีที่สิ้นสุด 2D ในเกมตัวละครกระโดดจากเสาต้นหนึ่งไปยังเสาและเสาถูกสร้างขึ้นแบบสุ่ม ฉันทำงานนี้แล้ว แต่จะทราบได้อย่างไรว่าตัวละครล้มเหลวที่จะกระโดดขึ้นไปบนเสาและตกลงไปในช่องว่างระหว่างเสา? เสาเป็นรูปสี่เหลี่ยมผืนผ้าสามัญ
12 unity 

4
วัสดุแก้วเพื่อความสามัคคี 5
ใครรู้วิธีทำวัสดุแก้วใน Unity 5 ฉันสามารถทำพื้นผิวโลหะและรูปภาพได้ แต่ไม่แน่ใจว่าจะสร้างวัสดุแก้วได้อย่างไร การค้นหาใน Google จะไม่ทำให้ฉันได้รับความเป็นเอกภาพ 5 ดังนั้นฉันจึงต้องทำค่อนข้างง่าย มันมีไว้สำหรับประตูห้องอาบน้ำและกระจกเครื่องบินแบบนี้:

3
หมุนวัตถุรอบแกนคงที่
ฉันพยายามให้ผู้ใช้แอปหมุนวัตถุ 3 มิติที่กึ่งกลางหน้าจอโดยลากนิ้วบนหน้าจอ การเคลื่อนไหวในแนวนอนบนหน้าจอหมายถึงการหมุนรอบแกน Y ที่คงที่และการเคลื่อนที่ในแนวตั้งหมายถึงการหมุนรอบแกน X ปัญหาที่ฉันมีคือถ้าฉันอนุญาตให้หมุนรอบหนึ่งแกนวัตถุจะหมุนได้ดี แต่ทันทีที่ฉันแนะนำการหมุนครั้งที่สองวัตถุจะไม่หมุนตามที่คาดไว้ นี่คือภาพของสิ่งที่เกิดขึ้น: แกนสีน้ำเงินแสดงถึงแกนคงที่ของฉัน รูปภาพหน้าจอที่มีแกนสีน้ำเงินคงที่นี้ นี่คือสิ่งที่ฉันต้องการให้วัตถุหมุนในความสัมพันธ์กับ สิ่งที่เกิดขึ้นคือสีแดง นี่คือสิ่งที่ฉันรู้: การหมุนรอบแรกรอบ Y (0, 1, 0) ทำให้โมเดลย้ายจากพื้นที่สีน้ำเงิน (เรียกพื้นที่นี้ A) ไปยังพื้นที่อื่น (เรียกพื้นที่นี้ B) พยายามหมุนอีกครั้งโดยใช้เวกเตอร์ (1, 0, 0) หมุนรอบแกน x ในอวกาศ B ไม่ได้อยู่ในอวกาศ A ซึ่งไม่ใช่สิ่งที่ฉันตั้งใจจะทำ นี่คือสิ่งที่ฉันพยายามให้ในสิ่งที่ฉัน (คิด) ฉันรู้ (ออกจาก coord W เพราะความกะทัดรัด): หมุนไปรอบ ๆ Y (0, 1, 0) …

1
ควรแยกบัฟเฟอร์ออกไหม
ฉันทำการทดสอบกับ OpenGL ES 2 และได้รับคำถามโปรแกรมปัจจุบันของฉันเป็นเช่นนั้น: Init ------- -> create index buffer -> fill index buffer glBufferData … -> create vertex buffer -> fill vertex buffer glBufferData … Draw ------- 1. Apply vertex buffer -> Bind VAO -> bind vertex buffer - enable attributs (glVertexPointer, …) -> unbind vertex buffer -> …

6
วิธีที่เร็วที่สุดในการตรวจสอบว่า AABB สองตัวกำลังทำการตัดกันคืออะไร
ฉันมี AABB สองตัวที่กำลังเคลื่อนที่วิธีที่เร็วที่สุดในการตรวจสอบว่าพวกมันจะตัดกันภายใต้เฟรมอย่างไร โดยการย้ายฉันหมายถึงไม่เพียง แต่ตรวจสอบด้วยวิธีการสี่แยกสี่เหลี่ยมตามปกติฉันหมายถึงการทดสอบง่ายๆแบบง่ายๆที่จะส่งกลับค่าบูลีนไม่มีเวลาตีหรืออะไรอย่างอื่น สิ่งที่ฉันคิดคือการทำแบบนี้: แต่รูปหกเหลี่ยมนั้นค่อนข้างซับซ้อนและฉันไม่รู้วิธีคำนวณจุดตัด AABB - รูปหลายเหลี่ยมอาจมีวิธีที่ง่ายกว่านี้ไหม ภาษาการเขียนโปรแกรมใด ๆ ที่คุณชอบมากที่สุดฉันสามารถพอร์ตได้อย่างง่ายดาย ขอบคุณ

2
ระบบสแนปชอตของเกมจะใช้งานอย่างไรสำหรับเกมเรียลไทม์บนเครือข่าย
ฉันต้องการสร้างเกมแบบเรียลไทม์แบบมัลติ - เพลย์เยอร์ไคลเอ็นต์เซิร์ฟเวอร์เป็นโปรเจ็กต์สำหรับคลาสเครือข่ายของฉัน ฉันได้อ่านมากมายเกี่ยวกับโมเดลเครือข่ายผู้เล่นหลายคนแบบเรียลไทม์และฉันเข้าใจความสัมพันธ์ระหว่างไคลเอนต์กับเซิร์ฟเวอร์และเทคนิคการชดเชยความล่าช้า สิ่งที่ฉันต้องการทำคือสิ่งที่คล้ายกับโมเดลเครือข่าย Quake 3: โดยทั่วไปแล้วเซิร์ฟเวอร์จะเก็บภาพรวมของสถานะเกมทั้งหมด เมื่อได้รับข้อมูลจากลูกค้าเซิร์ฟเวอร์จะสร้างสแน็ปช็อตใหม่ที่สะท้อนถึงการเปลี่ยนแปลง จากนั้นจะคำนวณความแตกต่างระหว่างสแน็ปช็อตใหม่และสแน็ปช็อตสุดท้ายและส่งไปยังไคลเอนต์เพื่อให้สามารถซิงค์ได้ วิธีการนี้ดูเหมือนจะแข็งแกร่งสำหรับฉัน - หากไคลเอนต์และเซิร์ฟเวอร์มีการเชื่อมต่อที่เสถียรจะมีการส่งข้อมูลจำนวนเล็กน้อยที่จำเป็นเพียงเล็กน้อยเพื่อให้ข้อมูลตรงกัน หากไคลเอ็นต์ไม่ซิงค์กันคุณสามารถร้องขอสแน็ปช็อตเต็มรูปแบบได้เช่นกัน อย่างไรก็ตามฉันไม่สามารถหาวิธีที่ดีที่จะใช้ระบบ snapshot ฉันพบว่ามันยากมากที่จะย้ายออกจากสถาปัตยกรรมการเขียนโปรแกรมผู้เล่นเดี่ยวและคิดว่าฉันจะเก็บสถานะของเกมในลักษณะที่: ข้อมูลทั้งหมดจะถูกแยกออกจากตรรกะ สามารถคำนวณความแตกต่างระหว่างสแน็ปช็อตของสถานะเกม เอนทิตีของเกมสามารถจัดการได้อย่างง่ายดายผ่านรหัส ว่าเป็นภาพรวมระดับการดำเนินการ? เอนทิตีและข้อมูลถูกจัดเก็บอย่างไร เอนทิตีของลูกค้าทุกคนมีรหัสที่ตรงกับ ID บนเซิร์ฟเวอร์หรือไม่ คำนวณความแตกต่างของสแนปชอตได้อย่างไร โดยทั่วไป: ระบบสแนปชอตของเกมจะมีการนำไปใช้อย่างไร

4
“ ติ๊ก” ในบริบทของการพัฒนาเกมคืออะไร?
ตกลงดังนั้นนี่เป็นคำถามระดับเริ่มต้น แต่ฉันจำเป็นต้องรู้สิ่งนี้คำว่า "ขีด" หมายถึงอะไรในบริบทของการพัฒนาเกม มันเป็นสิ่งเดียวกันกับ FPS หรือไม่? ขอบคุณ!

7
ฉันจะออกแบบเกมที่ยากมากได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันต้องการออกแบบเกมที่มีระดับความยากสูงมาก ฉันได้อ่านคำถามเหล่านี้: ความยากของเกมผ่านการทดสอบ / สมดุลอย่างไร อัตราความล้มเหลวที่เหมาะสมที่สุดที่จะทำให้คนกลับมาที่เกมของฉันคืออะไร? พวกเขามุ่งเน้นไปที่การออกแบบเกมทั่วไปและความสมดุลและไม่ได้อยู่ในหัวข้อเฉพาะของการเพิ่มความยากลำบากของเกม ฉันเข้าใจว่าความยากลำบากนั้นแตกต่างกันไปในทุกเกมดังนั้นฉันอยากรู้ว่ามีแนวทางทั่วไปที่ฉันสามารถปฏิบัติตามเพื่อหลีกเลี่ยงปัญหาทั่วไปที่อาจเกิดขึ้นในขณะที่ออกแบบเกมและระดับบนด้านยากของเส้นยากโดยไม่คำนึงถึง ประเภทของเกม คำถามย่อยบางคำถามที่นึกถึง: จะมั่นใจได้อย่างไรว่า 'การเอาชนะได้' ในขณะที่ออกแบบชิ้นส่วนที่ยากของเกม จะรู้ได้อย่างไรว่ามันเป็นไปได้ที่จะเอาชนะเกมของฉัน? ตัวอย่างเช่นเมื่อออกแบบ platformer ฉันสามารถสร้างลำดับการกระโดดและหลบที่ยากมาก ตอนนี้ในฐานะนักพัฒนาซอฟต์แวร์ฉันรู้ได้อย่างแม่นยำว่าตัวละครของผู้เล่นสามารถกระโดดได้ไกลแค่ไหนกระสุนปืนที่กำลังเคลื่อนที่และอื่น ๆ รวดเร็วแค่ไหน แต่ฉันจะมั่นใจได้อย่างไรว่าระดับการออกแบบนั้นสามารถเอาชนะได้จริง? ฉันรู้ว่าคำตอบที่ชัดเจนที่สุดคือลองเล่น แต่เกมจะยากเท่าที่นักพัฒนาจะเล่นได้ดีเพียงใด ใครบ้างที่มีประสบการณ์จริงในการสร้างเกมอย่างหนักรู้ถึงเทคนิคหรือแนวทางใด ๆ ที่ฉันสามารถใช้เพื่อสร้างเกมที่ยากขึ้นได้หรือไม่?

3
ฉันจะใช้ไปป์ไลน์กราฟิกเพื่อแสดงข้อมูลปริมาตรตามฟังก์ชั่นความหนาแน่นได้อย่างไร
กราฟิค API ทั้งสอง (OpenGL และ DirectX) ออกแบบขั้นตอนที่กำหนดไว้อย่างดีซึ่งหลายขั้นตอนสามารถตั้งโปรแกรมได้ ขั้นตอนที่โปรแกรมได้เหล่านี้จำเป็นต้องใช้ข้อมูลขั้นต่ำคงที่และควรทำช่วงของการดำเนินการที่กำหนดไว้อย่างดีและส่งออกเอาต์พุตขั้นต่ำที่กำหนดไว้บางส่วนเพื่อให้สามารถส่งข้อมูลไปยังขั้นตอนถัดไปได้อย่างถูกต้อง ดูเหมือนว่าท่อเหล่านี้ได้รับการออกแบบให้ทำงานกับข้อมูลทางเรขาคณิตในจำนวน จำกัด เท่านั้นซึ่งในกรณีของทั้ง D3D และ OGL นั้นเป็นข้อมูลจุดยอดและพิกัดของพื้นผิว แต่ถ้ามีกรณีเมื่อแอพพลิเคชั่นที่ฉันวางแผนจะไม่ใช้จุดยอด (หรือ voxels) เพื่อแสดงข้อมูลทางเรขาคณิตและไม่ทำการแปลงหรือการฉายภาพหรือการแรสเตอร์หรือการแก้ไขหรืออะไรทำนองนั้นข้อ จำกัด ของ APIs หรือท่อทำให้สิ่งที่ยาก ดังนั้นมีวิธีที่เราสามารถเปลี่ยนไปป์ไลน์กราฟิคในลักษณะที่ทำให้การทำงานของแต่ละขั้นตอนเป็นข้อมูลและประเภทของข้อมูลที่แสดงผลในแต่ละขั้นตอนเปลี่ยนไปเป็นข้อได้เปรียบของฉันหรือไม่ ถ้าไม่เช่นนั้นมีวิธีที่ฉันสามารถใช้ฟังก์ชั่น 'raw' API เพื่อสร้างขั้นตอนการทำงานของตัวเองหรือไม่? ถ้าไม่เช่นนั้นโปรดบอกว่าทำไมมันเป็นไปไม่ได้ แก้ไข : แอปพลิเคชันของฉันใช้ฟังก์ชั่นความหนาแน่นเพื่อเป็นตัวแทนของรูปทรงเรขาคณิต ฟังก์ชันมีค่าที่แต่ละจุดในอวกาศ ฉันแบ่งส่วน frustum ของกล้องออกเป็นกริด 3 มิติแต่ละบล็อกสามารถฉายเป็นพิกเซลได้ ในแต่ละบล็อกฉันรวมฟังก์ชั่นความหนาแน่นและตรวจสอบว่ามีค่ามากกว่าค่าที่ต้องการหรือไม่ ถ้าใช่จะมีการสันนิษฐานว่ามีบางสิ่งในบล็อกนั้นและพิกเซลที่สอดคล้องกับบล็อกนั้นมีการแสดงผล ดังนั้นตอนนี้ในโหมดแสดงภาพของฉันฉันต้องการส่งผ่านฟังก์ชั่น (ซึ่งฉันแทนด้วยสตริง) ไปยังฮาร์ดแวร์กราฟิกแทนข้อมูลจุดยอดในบัฟเฟอร์จุดสุดยอด นี่ก็หมายความว่าจุดสุดยอด shader จะไม่มีจุดยอดในการแปลงเป็น homogeniouse พื้นที่คลิปและชิ้นส่วน shader ไม่ได้รับข้อมูลพิกเซล …

2
เกมคำศัพท์ - การติดตั้งบอร์ด?
ฉันกำลังทำงานในเกมประเภทเกรงกลัวสำหรับ Android โดยใช้ libgdx ผู้ใช้นำเสนอด้วยตัวอักษรขนาด 4x4 และต้องค้นหาคำด้วยการลากนิ้วของพวกเขาไปที่ตัวอักษร ฉันต้องการให้ตัวอักษรที่ใช้หายไป ตัวอักษรที่เหลือจะล้มลง (ที่ด้านล่างของกระดานการวางแนวหน้าจอได้รับการแก้ไข) และกระดานจะถูกเติมจากด้านบน ผู้ใช้สามารถหมุนกระดานเพื่อพยายามใช้ตัวอักษรให้อยู่ในที่ที่ดีขึ้นโดยการเลือกคำที่เหมาะสม ตัวอย่าง: d g a o u o r T h v R I d G n a หากฉันเลือกคำว่า GRIT ตัวอักษรเหล่านั้นจะหายไปและส่วนที่เหลือจะล้มลง: d u g a h o r o d v n a แล้วแทนที่ด้วยตัวอักษรใหม่ d w x y u …
12 android  libgdx 

5
ฉันจะพูดคุยเกี่ยวกับอัลกอริธึมบรรทัดของ Bresenham ไปยังจุดลอยตัวได้อย่างไร
ฉันพยายามรวมสองสิ่งเข้าด้วยกัน ฉันกำลังเขียนเกมและฉันจำเป็นต้องกำหนดสี่เหลี่ยมกริดที่วางอยู่บนเส้นตรงกับจุดสิ้นสุดของจุดลอยตัว ยิ่งกว่านั้นฉันต้องการมันเพื่อรวมสี่เหลี่ยมกริดทั้งหมดที่มันแตะ (เช่นไม่ใช่แค่เส้นของ Bresenhamแต่เป็นสีน้ำเงิน): มีใครให้ข้อมูลเชิงลึกเกี่ยวกับวิธีการใช้หรือไม่ วิธีแก้ปัญหาที่ชัดเจนคือการใช้อัลกอริธึมแบบไร้เดียงสา แต่มีบางสิ่งที่ได้รับการปรับให้เหมาะสมที่สุด (เร็วกว่า)?

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