คำถามติดแท็ก c#

C # เป็นภาษาการเขียนโปรแกรมที่มีการจัดการพิมพ์อย่างรุนแรงรวบรวมขยะที่สร้างโดย Microsoft ร่วมกับแพลตฟอร์ม. NET

7
ข้อผิดพลาดทั่วไปเมื่อเขียนเกมด้วยภาษาที่มีการจัดการเช่น C # คืออะไร [ปิด]
คุณพบข้อผิดพลาดอะไรบ้างเมื่อเขียนเกมสำหรับพีซีด้วยภาษาที่มีการจัดการเช่น C # และคุณแก้ปัญหาได้อย่างไร
66 xna  c# 

6
กระสุนทำงานในวิดีโอเกมอย่างไร
ฉันเจอคำถามนี้เมื่อฉันออกแบบวิดีโอเกมใน C # หากเราพิจารณาเกมเช่นBattlefieldหรือCall of Dutyกระสุนหลายร้อยหรือหลายพันกระสุนกำลังบินในเวลาเดียวกัน เหตุการณ์ถูกเรียกใช้อย่างต่อเนื่องและจากสิ่งที่ฉันรู้สิ่งนี้ดูดพลังการประมวลผลมากมาย ... หรือไม่? ฉันต้องการทราบว่านักพัฒนาเกมต่าง ๆ จัดการกับสัญลักษณ์แสดงหัวข้อย่อย (2D และ 3D) และวิธีที่มีประสิทธิภาพที่สุดสำหรับแต่ละรายการอย่างไร ฉันอ่านคำถามว่ากระสุนถูกจำลองในวิดีโอเกมอย่างไร แต่มันไม่ได้สัมผัสว่ากระสุนทำงานอย่างไรจากมุมมองการออกแบบโปรแกรม ฉันมีความคิดสองสามข้อ แต่ก็มีข้อเสีย: วิธีที่มีประสิทธิภาพที่สุดที่ฉันคิดได้ (สำหรับเกม 2D): สมมติว่าฉันต้องสร้างคลาสที่ชื่อว่า Bullet แต่ผู้ใช้กดปุ่มค้างไว้นาน 0.01 วินาทีทุกครั้งที่มีการสร้างวัตถุ Bullet กระสุนนี้มี: 1ความเร็ว 2ตำแหน่งเริ่มต้นของตำแหน่งที่มันถูกยิงจาก 3 Sprite เนื้อ 4เอฟเฟกต์ที่โจมตี เนื่องจากสัญลักษณ์แสดงหัวข้อจะเป็นคลาสของตัวเองจึงสามารถจัดการการวาดการเคลื่อนไหวและการดำเนินการฟังเอง หน่วยประมวลผลจะไม่สามารถประมวลผลวัตถุนับพันรายการได้ยากหรือไม่แล้วจะถูกทำลาย (เมื่อมีการเรียกใช้เอฟเฟกต์เมื่อโจมตี) พื้นที่แรม? วิธีการที่มีประสิทธิภาพสำหรับเกม 3D - อีกหนึ่งความคิดที่ฉันมีคือ: ให้บอกว่าฉันสร้างคลาสอาวุธ อาวุธนี้มีคุณสมบัติหลากหลายซึ่งบางส่วน: 1ตรวจสอบว่าอาวุธเล็งไปที่ใดและตัดสินว่ามองเป้าหมายหรือไม่ 2เรียกภาพเคลื่อนไหวของการยิงปืน 3มีเมธอด doDamage …

1
การใช้ระบบเอนทิตีตามองค์ประกอบจริง
เมื่อวานนี้ฉันได้อ่านงานนำเสนอจาก GDC Canada เกี่ยวกับระบบเอนทิตีแอตทริบิวต์ / พฤติกรรมและฉันคิดว่ามันยอดเยี่ยมมาก อย่างไรก็ตามฉันไม่แน่ใจว่าจะใช้งานได้อย่างไรไม่ใช่ในทางทฤษฎี ก่อนอื่นฉันจะอธิบายให้คุณทราบอย่างรวดเร็วว่าระบบนี้ทำงานอย่างไร แต่ละเอนทิตีเกม (เกมวัตถุ) ประกอบด้วยคุณลักษณะ (= ข้อมูลซึ่งสามารถเข้าถึงได้โดยพฤติกรรม แต่ยังรวมถึง 'รหัสภายนอก') และพฤติกรรม (= ตรรกะซึ่งมีOnUpdate()และOnMessage()) ดังนั้นสำหรับตัวอย่างเช่นในโคลนฝ่าวงล้อมอิฐแต่ละคนจะต้องประกอบด้วย (ตัวอย่าง): PositionAttribute , ColorAttribute , HealthAttribute , RenderableBehaviour , HitBehaviour คนสุดท้ายอาจมีลักษณะเช่นนี้ (เป็นเพียงตัวอย่างที่ไม่ทำงานเขียนใน C #): void OnMessage(Message m) { if (m is CollisionMessage) // CollisionMessage is inherited from Message { Entity otherEntity …

13
ไลบรารี C # ใดบ้างที่สามารถใช้เพื่อสนับสนุนการพัฒนาเกม [ปิด]
เนื่องจากเกมมีพื้นฐานอยู่บนระบบย่อยต่าง ๆ เช่นกราฟิก (DirectX, OpenGL, ... ), เสียง (OpenAL, Ogg Vorbis, ... ) หรือฟิสิกส์ (การชน, ... ), ห้องสมุดใดที่คุณรู้ว่ามีประโยชน์ สำหรับการพัฒนาเกมใน C # และมีประโยชน์อะไรบ้าง
58 c#  .net 

7
อันตรายของการพัฒนาเกมการเรียนการสอนด้วยตนเองคืออะไร? [ปิด]
ฉันกำลังจะเริ่มดำเนินการในการพัฒนาเกม ทำตามคำตอบของคำถามสุดท้ายของฉันฉันจะใช้ C # และ XNA อย่างไรก็ตามฉันไม่รู้จักนักพัฒนาเกมอื่น ๆ เป็นการส่วนตัวและฉันไม่ได้ทำงานในอุตสาหกรรมดังนั้นจะสอนตัวเอง ข้อยกเว้นนี้ชัดเจนว่าการถามคำถามและการอ่านข้อมูลออนไลน์ / สิ่งพิมพ์ แต่ฉันจะยังคงจัดให้สิ่งนี้ว่าเป็นการเรียนรู้ด้วยตนเอง ด้วยสิ่งนี้ฉันต้องการเตรียมพร้อมสำหรับปัญหาที่ฉันอาจพบเจอโดยไม่ให้มีใครบางคน "ทำให้ฉันอยู่ภายใต้ปีกของพวกเขา" เมื่อเปรียบเทียบตนเองเมื่อสอนตัวเองให้เล่นกีตาร์ฉันเล่นคอร์ดสำคัญในลักษณะที่ทำให้คอร์ดเคลื่อนที่ฉันเรียนรู้ได้ยากขึ้นในภายหลัง หากคุณสามารถแบ่งปันบทเรียนที่ได้เรียนรู้และคำแนะนำเกี่ยวกับสิ่งที่อาจจะผิดพลาดในการเรียนรู้การพัฒนาเกมของฉันฉันจะขอบคุณ ฉันตระหนักดีว่าการทำผิดเป็นส่วนที่ใหญ่ที่สุดของการเรียนรู้ แต่ถ้ามีข้อผิดพลาดฉันสามารถเตรียมพร้อมสำหรับการแล้วฉันจะมีความสุขกับที่
58 c#  xna  books 

9
เกมที่กำหนดขึ้นมามีความเป็นไปได้อย่างไรในการเผชิญกับการไม่กำหนดระดับทศนิยม
เพื่อให้เกมเหมือนเครือข่าย RTS ฉันได้เห็นคำตอบมากมายที่นี่แนะนำให้ทำเกมที่กำหนดไว้อย่างสมบูรณ์ จากนั้นคุณจะต้องถ่ายโอนการกระทำของผู้ใช้ไปยังแต่ละอื่น ๆ และล่าช้าสิ่งที่ปรากฏเล็กน้อยเพื่อที่จะ "ล็อคใน" การป้อนข้อมูลของทุกคนก่อนที่จะแสดงเฟรมถัดไป ดังนั้นสิ่งต่าง ๆ เช่นตำแหน่งของยูนิตสุขภาพ ฯลฯ ไม่จำเป็นต้องได้รับการอัปเดตตลอดเวลาผ่านเครือข่ายเพราะการจำลองของผู้เล่นทุกคนจะเหมือนกันทุกประการ ฉันยังได้ยินสิ่งเดียวกันที่แนะนำสำหรับการทำรีเพลย์ อย่างไรก็ตามเนื่องจากการคำนวณจุดลอยตัวนั้นไม่ได้ถูกกำหนดระหว่างเครื่องหรือแม้แต่ระหว่างการรวบรวมโปรแกรมเดียวกันบนเครื่องเดียวกันสิ่งนี้เป็นไปได้จริงหรือ เราจะป้องกันความจริงที่ว่าทำให้เกิดความแตกต่างเล็กน้อยระหว่างผู้เล่น (หรือไกล) ที่กระเพื่อมตลอดทั้งเกมได้อย่างไร ฉันได้ยินบางคนแนะนำให้หลีกเลี่ยงจำนวนจุดลอยตัวทั้งหมดและใช้intเพื่อแสดงความฉลาดของเศษส่วน แต่นั่นไม่ได้ฟังดูเป็นประโยชน์สำหรับฉัน - ถ้าฉันต้องการตัวอย่างเช่นถ่ายมุมโคไซน์ของมุม? ฉันจำเป็นต้องเขียนห้องสมุดคณิตศาสตร์ทั้งหมดใหม่หรือไม่? โปรดทราบว่าฉันสนใจ C # เป็นหลักซึ่งเท่าที่ฉันสามารถบอกได้มีปัญหาเหมือนกับ C ++ ในเรื่องนี้

7
ปัญหาการปะทะกันของ Platformer AABB 2D
ฉันมีปัญหากับการแก้ไขการชนของ AABB ฉันแก้ไขทางแยก AABB โดยการแก้ไขแกน X ก่อนแล้วตามด้วยแกน Y สิ่งนี้ทำเพื่อป้องกันข้อผิดพลาดนี้: http://i.stack.imgur.com/NLg4j.png วิธีการปัจจุบันทำงานได้ดีเมื่อวัตถุเคลื่อนที่เข้าสู่เครื่องเล่นและผู้เล่นจะต้องถูกผลักในแนวนอน อย่างที่คุณเห็นใน. gif แหลมแนวนอนผลักผู้เล่นอย่างถูกต้อง เมื่อหนามแหลมแนวตั้งเคลื่อนที่เข้าหาผู้เล่นแกน X จะยังคงได้รับการแก้ไขก่อน สิ่งนี้ทำให้ "ใช้เดือยเป็นยก" เป็นไปไม่ได้ เมื่อผู้เล่นย้ายเข้ามาในแนวดิ่งแหลม (ได้รับผลกระทบจากแรงโน้มถ่วงตกเข้าไปในพวกเขา) เขาผลักแกน Y เพราะไม่มีการทับซ้อนกันบนแกน X เพื่อเริ่มต้น สิ่งที่ฉันลองใช้เป็นวิธีที่อธิบายไว้ในคำตอบแรกของลิงค์นี้: การตรวจจับการชนกันของวัตถุสี่เหลี่ยม 2 มิติ อย่างไรก็ตามสไปค์และวัตถุที่กำลังเคลื่อนที่จะเคลื่อนที่โดยการเปลี่ยนตำแหน่งของมันไม่ใช่ความเร็วและฉันจะไม่คำนวณตำแหน่งที่คาดการณ์ถัดไปจนกว่าจะมีการเรียกเมธอด Update () จำเป็นต้องพูดวิธีนี้ไม่ได้ผลเช่นกัน :( ฉันต้องแก้ปัญหาการชนกันของ AABB ในแบบที่ทั้งสองกรณีที่อธิบายไว้ข้างต้นทำงานได้ตามที่ตั้งใจไว้ นี่คือรหัสที่มาการชนกันของฉันในปัจจุบัน: http://pastebin.com/MiCi3nA1 ฉันรู้สึกขอบคุณจริง ๆ ถ้ามีคนสามารถตรวจสอบเรื่องนี้ได้เนื่องจากข้อผิดพลาดนี้ปรากฏอยู่ในเครื่องยนต์ตั้งแต่ต้นและฉันพยายามดิ้นรนเพื่อหาทางออกที่ดีโดยไม่ประสบความสำเร็จ สิ่งนี้ทำให้ฉันใช้เวลาหลายคืนในการดูรหัสการชนและป้องกันไม่ให้ฉันไปที่ "ส่วนที่สนุกสนาน" และเข้ารหัสตรรกะของเกม :( ฉันพยายามใช้ระบบการชนกันเช่นเดียวกับในการสาธิตแพลตฟอร์ม XNA …

4
ฉันจะซ่อนและปกป้องสายจากเครื่องเล่นใน Unity ได้อย่างไร?
ฉันใช้ Unity เพื่อสร้างเกม 2D ซึ่งจะเป็นแบบออฟไลน์โดยสมบูรณ์ (ซึ่งเป็นปัญหา) การเล่นเกมต้องการให้คุณป้อนสตริงบางอย่างในระดับหนึ่งและ Unity คอมไพล์เป็น DLL ซึ่งสามารถย้อนกลับวิศวกรรมได้อย่างง่ายดายดังนั้นจึงเป็น มีวิธีในการป้องกันสตริงเหล่านั้น (เกมออฟไลน์ดังนั้นฉันไม่สามารถดึงข้อมูลจากแหล่งอื่นได้) เกมดังกล่าวอาศัยสายอักขระเหล่านั้นอย่างมากและใช่ฉันทราบถึงความสับสน แต่ฉันต้องการบางสิ่งที่แข็งแกร่งกว่า และฉันรู้ว่าวิธีง่าย ๆ ที่จะทำทุกอย่างออนไลน์จากแหล่งข้อมูล แต่ฉันสงสัยว่ามันเป็นไปได้หรือไม่ สามารถ decompiled เช่นนี้:
47 unity  c#  anti-cheat 

5
นักแสดงในเกมควรมีความรับผิดชอบในการวาดภาพตนเองหรือไม่?
ฉันยังใหม่ต่อการพัฒนาเกม แต่ไม่ได้เขียนโปรแกรม ฉัน (อีกครั้ง) เล่นกับเกมประเภท Pong โดยใช้canvasองค์ประกอบของ JavaScript ฉันสร้างPaddleวัตถุที่มีคุณสมบัติดังต่อไปนี้ ... width height x y colour ฉันยังมีPongวัตถุที่มีคุณสมบัติเช่น ... width height backgroundColour draw(). draw()วิธีการในปัจจุบันคือการรีเซ็ตcanvasและที่เป็นที่คำถามขึ้นมา ควรPaddleวัตถุมีdraw()วิธีการรับผิดชอบสำหรับการวาดภาพหรือควรdraw()ของPongวัตถุต้องรับผิดชอบสำหรับการวาดภาพของนักแสดง (ฉันคิดว่าเป็นคำที่ถูกต้องโปรดแก้ไขฉันหากฉันไม่ถูกต้อง) ฉันคิดว่ามันจะเป็น advantagous สำหรับPaddleการวาดตัวเองที่ผมยกตัวอย่างวัตถุสองและPlayer Enemyถ้ามันไม่ได้อยู่ในPongของdraw()ฉันจะต้องเขียนรหัสที่คล้ายกันสองครั้ง การปฏิบัติที่ดีที่สุดที่นี่คืออะไร? ขอบคุณ

1
ทำไมรหัสการตรวจจับการเต้นผิดเพี้ยนนี้จึงล้มเหลวในการบันทึกการเต้นบางอย่างอย่างถูกต้อง?
ฉันสร้างคลาส SoundAnalyzer นี้เพื่อตรวจจับการเต้นในเพลง: class SoundAnalyzer { public SoundBuffer soundData; public Sound sound; public List<double> beatMarkers = new List<double>(); public SoundAnalyzer(string path) { soundData = new SoundBuffer(path); sound = new Sound(soundData); } // C = threshold, N = size of history buffer / 1024 B = bands public void PlaceBeatMarkers(float C, …
38 c#  audio 

9
ใน Unity ฉันจะใช้รูปแบบซิงเกิลได้อย่างถูกต้องได้อย่างไร?
ฉันได้เห็นวิดีโอและแบบฝึกหัดหลายประการสำหรับการสร้างวัตถุเดี่ยวใน Unity ซึ่งส่วนใหญ่เป็น a GameManagerซึ่งดูเหมือนจะใช้วิธีการต่าง ๆ ในการสร้างอินสแตนซ์และตรวจสอบความถูกต้องของซิงเกิล มีวิธีที่ถูกต้องหรือค่อนข้างที่ต้องการในการนี ตัวอย่างหลักสองอย่างที่ฉันพบคือ: เป็นครั้งแรก public class GameManager { private static GameManager _instance; public static GameManager Instance { get { if(_instance == null) { _instance = GameObject.FindObjectOfType<GameManager>(); } return _instance; } } void Awake() { DontDestroyOnLoad(gameObject); } } ที่สอง public class GameManager { private static …

4
ทำไมวัตถุของฉันเคลื่อนที่เร็วกว่า 45 องศามากกว่า 90 องศา
ฉันมีวัตถุในเกมของฉันที่เคลื่อนที่เร็วขึ้นที่ 45 องศาจากนั้นที่ 90 องศา แต่ละวัตถุมี ตำแหน่งจุด (x, y) ทิศทาง Vector2D (x, y) ความเร็วสูง และสิ่งที่ฉันทำในระหว่างการอัพเดทคือตำแหน่งใหม่จะถูกคำนวณดังนี้: position.x += direction.x * speed position.y += direction.y * speed ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ฉันต้องการให้มันเคลื่อนที่ด้วยความเร็วเท่ากันทุกมุม
32 c#  2d  geometry 

3
เกมวน C # / Windows Forms มาตรฐานคืออะไร?
เมื่อเขียนเกมใน C # ที่ใช้ Windows Forms แบบเก่าและกราฟิก API wrapper บางอย่างเช่นSlimDXหรือOpenTKเกมหลักจะต้องมีโครงสร้างอย่างไร แอปพลิเคชันแบบฟอร์มมาตรฐานของ Windows มีจุดเข้าใช้ที่มีลักษณะดังนี้ public static void Main () { Application.Run(new MainForm()); } และในขณะที่บางคนสามารถบรรลุสิ่งที่จำเป็นโดยการเชื่อมโยงเหตุการณ์ต่าง ๆ ของFormชั้นเรียนเหตุการณ์เหล่านั้นไม่ได้ให้สถานที่ที่ชัดเจนในการวางบิตของรหัสเพื่อดำเนินการปรับปรุงเป็นระยะเพื่อวัตถุตรรกะของเกมหรือเริ่มและสิ้นสุดการเรนเดอร์ กรอบ เทคนิคใดที่เกมดังกล่าวควรใช้เพื่อให้ได้สิ่งที่คล้ายกับบัญญัติ while(!done) { update(); render(); } ลูปเกมและจะทำอย่างไรกับประสิทธิภาพที่น้อยที่สุดและผลกระทบ GC?

5
ใช้อินสแตนซ์หรือคลาสสำหรับทรัพยากรเกม (ไม้เหล็กทอง)
ดังนั้นฉันจึงสร้างเกมที่คุณสามารถส่งเรือไปยังสถานที่ต่างๆเพื่อขายหรือซื้อทรัพยากรเช่นไม้เหล็กทองคำ ฯลฯ ตอนนี้ฉันกำลังสงสัยว่าจะสร้างทรัพยากรในเกมได้อย่างไร ฉันมากับ 2 ตัวเลือก สร้างคลาสสำหรับแต่ละทรัพยากร: public class ResourceBase { private int value; // other base properties } public class Gold : ResourceBase { public Gold { this.value = 40 // or whatever } } สร้างอินสแตนซ์ของคลาสทรัพยากร public class Resource { string name; int value; public Resource(string name, int value) …

5
การจำลองความดันในการจำลองแบบของเหลวที่ใช้กริด
ฉันมีระบบน้ำที่ใช้ระบบกริด 2 มิติในเกม XNA ของฉันเรามีวิธีการใช้เซลลูลาร์ออโตมาตาเพื่อจำลองการตกของน้ำและการแพร่กระจาย ตัวอย่างของน้ำที่ไหลลงมาตามทางลาด: แต่ละแผ่นสามารถมีค่าของเหลว 0 ถึง 255 ค่าซึ่งเก็บไว้ในหน่วยไบต์ ฉันไม่ได้ใช้floatsระบบน้ำเก่าที่ฉันเคยทำ แต่มันเพิ่มภาวะแทรกซ้อนและมีผลการทำงานที่ยอดเยี่ยม กระเบื้องน้ำแต่ละอัพเดตตัวเองด้วยชุดของกฎง่ายๆ: หากไทล์ด้านล่างมีช่องว่างให้ย้ายมากที่สุดเท่าที่เป็นไปได้จากไทล์ปัจจุบันไปยังล่างสุด (Flow Down) หากทั้งสองด้านนั้นไม่เหมือนกันและไม่เป็นศูนย์และทั้งสองจะผ่านได้เราจะได้ผลรวมของ 3 แผ่น (ซ้าย + ปัจจุบัน + ขวา) และหารด้วย 3 โดยปล่อยให้ส่วนที่เหลืออยู่บนแผ่นกลาง (ปัจจุบัน) หากกฎข้างต้นให้ผลรวมเป็น 2 เราควรแบ่งไพ่ออกเป็นสองด้าน (1, 0, 1) หากกฎ 2 ให้ 1 เป็นผลรวมให้เลือกด้านที่สุ่มเพื่อไหลเข้า หากกฎ 2 ล้มเหลวเราควรตรวจสอบว่าด้านใดด้านหนึ่งสามารถผ่านได้และอีกด้านหนึ่งไม่ได้ หากเป็นจริงเราจะแบ่งไทล์ปัจจุบันออกเป็นสองส่วนสำหรับ 2 ไทล์ ฉันจะขยายตรรกะนี้เพื่อรวมความกดดันได้อย่างไร แรงดันจะทำให้ของเหลวเพิ่มขึ้นเหนือ "U-Bends" และเติมในช่องอากาศ …
30 xna  c#  physics  grid  water 

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