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

ไลบรารีมัลติมีเดียที่เรียบง่ายและรวดเร็ว - API แบบพกพาฟรีที่ให้การเข้าถึงกราฟิกอินพุตเสียงและอื่น ๆ

9
คุณจะวางรูปภาพทั้งหมดจากเกมหนึ่งไฟล์ได้อย่างไร?
ฉันเพิ่งเล่นเกม RPG พื้นฐานที่เขียนด้วย C ++ SFML แล้วฉันได้พยายามอย่างมากในเกมและฉันต้องการเผยแพร่เกมนี้ แต่ฉันพบปัญหาเล็กน้อย ปัญหาคือฉันมีภาพและไฟล์แผนที่มากกว่า 200 ภาพ (เป็นไฟล์. txt ซึ่งมีรหัสแผนที่) ทั้งหมดในโฟลเดอร์เดียวกับไฟล์เรียกทำงานเมื่อฉันดูในโฟลเดอร์มันทำให้ฉันอยากร้องไห้เล็กน้อยที่เห็น แหล่งข้อมูลมากมายฉันไม่เคยเห็นเกมที่แสดงทรัพยากรทั้งหมดให้คุณโดยตรง แต่ฉันเชื่อว่าพวกเขาเก็บทรัพยากรไว้ในไฟล์ที่แน่นอน นั่นคือสิ่งที่ฉันพยายามทำให้สำเร็จ: ฉันหวังว่าจะบรรจุภาพทั้งหมดใน 1 ไฟล์ (อาจเป็นไฟล์. txt ด้วย) จากนั้นสามารถอ่านจากไฟล์นั้นหรือเพิ่มได้อย่างง่ายดาย
67 c++  assets  sfml  spritesheet 

8
OpenGL, SFML และ SDL มีข้อได้เปรียบอะไรบ้างในการแสดงผลซอฟต์แวร์
ฉันเริ่มดูกระแส Handmade Heroที่ซึ่ง Casey Muratori สร้างเอ็นจิ้นเกมโดยไม่ต้องใช้เฟรมเวิร์กหรืออย่างนั้น เมื่อวานฉันไปถึงส่วนที่เขาแสดงให้เห็นว่าภาพวาดลงบนหน้าจออย่างไร เท่าที่ฉันเข้าใจเขาได้จัดสรรหน่วยความจำบางส่วนให้ใหญ่เท่ากับขนาดหน้าจอที่เขาต้องการวาด จากนั้นเขาสร้างบิตแมปที่เขาส่งไปยังหน่วยความจำบัฟเฟอร์ที่เขาจัดสรรและดึงมันไปที่หน้าจอโดยใช้ฟังก์ชั่นเฉพาะของระบบปฏิบัติการ นี่ดูเหมือนจะค่อนข้างตรงไปตรงมา ฉันใช้ GameMaker เปลี่ยนเป็น Love2D ทำงานเล็กน้อยกับ Sprite Kit แต่ฉันสงสัยอยู่เสมอว่าเกิดอะไรขึ้นภายใต้เลเยอร์นี้บางครั้งทำให้สับสน ระบุว่าทำไมแม้แต่ต้องใช้ห้องสมุดกราฟิก (OpenGL, SFML, SDL, ... ) เมื่อสิ่งที่คุณต้องทำคือเพียงจัดสรรบัฟเฟอร์บางส่วนผ่านบิตแมปและวาดลงบนหน้าจอ หากคุณต้องการวาดสิ่งที่แตกต่างให้กับหน้าจอคุณเพียงแค่เขียนลงในบิตแมปของคุณซึ่งจะถูกส่งผ่านไปยังบัฟเฟอร์ ฉันค่อนข้างใหม่กับการเขียนโปรแกรม แต่ดูเหมือนจะง่ายสำหรับฉัน โปรดแก้ไขฉันหากฉันผิด

1
การชน 2d ที่รวดเร็วและแม่นยำ
ฉันกำลังทำงานกับปืน topdown 2d และตอนนี้ต้องไปไกลกว่าระบบพื้นฐานการชนกล่องสี่เหลี่ยมของฉัน ฉันมีด่านขนาดใหญ่ที่มีสไปรต์หลากหลายรูปแบบซึ่งมีรูปร่างและขนาดแตกต่างกัน พื้นผิวของสไปรต์เป็นไฟล์ png สแควร์ทั้งหมดที่มีพื้นหลังโปร่งใสดังนั้นฉันจึงต้องมีวิธีการชนเท่านั้นเมื่อผู้เล่นเดินเข้าไปในส่วนที่มีสีของพื้นผิวไม่ใช่พื้นหลังแบบโปร่งใส ฉันวางแผนที่จะรับมือกับการชนดังต่อไปนี้: ตรวจสอบว่าสไปรต์ใด ๆ อยู่ในระยะของเครื่องเล่นหรือไม่ ทำการทดสอบการชนกันของกล่องสี่เหลี่ยม ทำการชนที่ถูกต้อง (ที่ฉันต้องการความช่วยเหลือ) ฉันไม่สนใจเทคนิคขั้นสูงเนื่องจากฉันต้องการทำให้ถูกต้องตามความต้องการทั้งหมดของฉัน แต่ฉันไม่แน่ใจว่าจะเข้าถึงสิ่งนี้ได้อย่างไร เทคนิคอะไรหรือแม้กระทั่งห้องสมุดที่ต้องลอง ฉันรู้ว่าฉันอาจต้องสร้างและจัดเก็บรูปร่างบางอย่างที่แสดงถึงเทพดาแต่ละฉากได้อย่างแม่นยำลบพื้นหลังโปร่งใส ฉันอ่านแล้วว่าต่อพิกเซลช้าดังนั้นเมื่อกำหนดระดับใหญ่และจำนวนวัตถุฉันไม่คิดว่ามันจะเหมาะสม ฉันเคยดู Box2d แล้ว แต่ยังไม่สามารถหาเอกสารจำนวนมากหรือตัวอย่างของวิธีการใช้และจัดการกับ SFML

3
ฉันควรใช้ฐานข้อมูลเพื่อจัดเก็บเนื้อหาของเกมหรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันมีเกม 2D เขียนใน C ++ โดยใช้ SFML ฉันต้องการทำให้เกมขยายได้ในลักษณะที่สามารถเพิ่มเนื้อหาเช่นรายการหรือเอนทิตีได้อย่างง่ายดายโดยการเพิ่มบรรทัด / รายการ / แถวลงในไฟล์หรือฐานข้อมูล ฉันกำลังมองหาบางอย่างที่ไม่จำเป็นต้องรวบรวมเข้าไปในโปรแกรม แต่สามารถอ่านและเขียนไปที่รันไทม์แทน เมื่อใดที่เหมาะสมที่จะใช้ฐานข้อมูล
16 c++  sfml  databases 

2
วิธีการหลีกเลี่ยง ghosting เมื่อกดปุ่มหลาย ๆ ปุ่ม?
ฉันกำลังทำงานในเกมพีซีแบบเลื่อนด้านข้าง 2 มิติที่ใช้ไลบรารีเกม SFML ปัญหาที่ฉันไม่สามารถแก้ไขได้คือในแป้นพิมพ์หลายชุดที่มีสามปุ่มขึ้นไป (เช่น w + d + k) ไม่ทำงาน มีวิธีใดในการแก้ปัญหานี้หรือไม่?

5
Python Performance กับ Game Maker [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา เดิมฉันคิดจะสร้างเกมด้วย Python และ SFML ฉันเข้าใจว่า Python ช้ากว่า C ++ แต่จะเปรียบเทียบกับ Game Maker ได้อย่างไร เหตุผลหลักที่ฉันถามคือเมื่อเร็ว ๆ นี้ฉันเล่นเกม Game Maker (The Iconoclasts) ซึ่งวิ่งด้วยอัตราเฟรมที่ไม่ดีพอในคอมพิวเตอร์ของฉัน (GMA 950) ฉันกังวลว่าฉันจะมีปัญหาเรื่องประสิทธิภาพที่คล้ายกันกับ Python / SFML

2
การเคลื่อนไหวนั้นขึ้นอยู่กับอัตราเฟรมแม้จะใช้ Time.deltaTime
ฉันมีรหัสต่อไปนี้เพื่อคำนวณการแปลที่จำเป็นในการย้ายวัตถุเกมใน Unity ซึ่งเรียกว่าLateUpdateมา จากสิ่งที่ฉันเข้าใจการใช้งานของฉันTime.deltaTimeควรจะทำให้เป็นอิสระแปลสุดท้ายอัตราเฟรม (โปรดทราบCollisionDetection.Move()เป็นเพียงการแสดง raycasts) public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If …

2
ฉันควรจะใช้สไปรต์ฮีตเพราะรูปภาพจำนวนมากมายของฉันหรือไม่?
ฉันกำลังพัฒนาเกม 2D และฉันมีสไปรต์มากมาย ฉันใช้ภาพเคลื่อนไหวและโมเดล 3 มิติเพื่อแสดงเป็น 2D เพื่อให้พวกเขาเห็นว่า "Fallout" หรือ "Diablo" นอกจากนี้ยังง่ายกว่าการวาดด้วยมือฮ่า ๆ ฉันต้องลดอัตราเฟรมลงเหลือ 15 เฟรมต่อวินาทีซึ่งต่ำที่สุดที่ฉันสามารถลดได้โดยไม่ทำให้พวกเขาดูขาด ๆ หาย ๆ อย่างไรก็ตามมันเป็นเรื่องน่าเศร้าเนื่องจากมี 24 เฟรมที่ดูราบรื่น มีสองเหตุผลที่ฉันทำสิ่งนี้: 1) ลดพื้นที่ HDD ยิ่งภาพน้อยลงเท่าไหร่เกมของฉันก็ยิ่งเล็กลงเท่านั้น 2) ลดปริมาณการใช้ RAM ยิ่งฉันโหลดภาพน้อยลงเท่าไหร่ฉันก็ยิ่งมีแนวโน้มที่จะหลีกเลี่ยงปัญหาที่ทำให้เกิดข้อ จำกัด RAM ของฉันมากขึ้นเท่านั้น อย่างไรก็ตามหากมีวิธีการบีบอัดภาพในพื้นที่ HDD และ RAM ฉันจะทำเช่นนั้น ฉันได้ทำการทดสอบมาก่อนและส่วนใหญ่ไม่ได้รับการเปลี่ยนแปลงคุณภาพใด ๆ เมื่อให้จาก RGBA8888 เป็น RGBA5555 และมีการเข้าชมเพียงเล็กน้อยเมื่อแปลงเป็น RGBA4444 ในโปรแกรม TexturePacker ของฉัน …

1
ฉันจะจัดการข้อมูลและการพึ่งพาระหว่างคลาสได้อย่างเรียบร้อยและสวยงามได้อย่างไร
ฉันกำลังเล่นเกม 2d topdown ใน SFML 2 และต้องการหาวิธีที่สวยงามที่ทุกอย่างจะทำงานร่วมกันได้ ให้ฉันอธิบาย ฉันมีจำนวนคลาสที่สืบทอดมาจากฐานนามธรรมที่ให้วิธีการวาดและวิธีการอัปเดตไปยังคลาสทั้งหมด ในเกมวนรอบฉันเรียกการอัปเดตแล้ววาดในแต่ละชั้นฉันคิดว่านี่เป็นวิธีการทั่วไป ฉันมีชั้นเรียนสำหรับไทล์การชนผู้เล่นและผู้จัดการทรัพยากรที่มีไทล์ / รูปภาพ / พื้นผิวทั้งหมด เนื่องจากวิธีการอินพุตทำงานใน SFML ฉันตัดสินใจที่จะให้แต่ละอินพุตจัดการคลาส (ถ้าจำเป็น) ในการเรียกใช้การอัพเดต จนถึงตอนนี้ฉันได้ผ่านการอ้างอิงตามต้องการเช่นในคลาสผู้เล่นเมื่อกดปุ่มการเคลื่อนไหวฉันเรียกวิธีการในคลาสการชนเพื่อตรวจสอบว่าตำแหน่งที่ผู้เล่นต้องการย้ายไปเป็นการชนหรือไม่ และย้ายผู้เล่นเฉพาะเมื่อไม่มีการชนกัน สิ่งนี้ใช้ได้ดีสำหรับส่วนใหญ่ แต่ฉันเชื่อว่ามันสามารถทำได้ดีกว่าฉันไม่แน่ใจว่าจะทำอย่างไร ตอนนี้ฉันมีสิ่งที่ซับซ้อนกว่าที่ฉันต้องนำไปใช้เช่นผู้เล่นสามารถเดินไปที่วัตถุบนพื้นดินกดปุ่มเพื่อหยิบขึ้นมา / ยกมันขึ้นมาแล้วมันจะปรากฏในสินค้าคงคลัง นี่หมายความว่าต้องมีบางสิ่งเกิดขึ้น: ตรวจสอบว่าผู้เล่นอยู่ในช่วงของไอเท็มที่สามารถรีบูตได้บนปุ่มกดมิฉะนั้นจะไม่ดำเนินการต่อ ค้นหารายการ อัปเดตพื้นผิวสไปรต์ในรายการจากพื้นผิวเริ่มต้นเป็นพื้นผิว "ปล้น" อัปเดตการชนกันของรายการ: อาจมีการเปลี่ยนแปลงรูปร่างหรือถูกลบออกอย่างสมบูรณ์ ต้องอัปเดตคลังโฆษณาด้วยรายการที่เพิ่ม ฉันจะทำให้ทุกอย่างสื่อสารได้อย่างไร ด้วยระบบปัจจุบันของฉันฉันจะจบลงด้วยการเรียนนอกขอบเขตและวิธีการโทรหากันทั่วทุกที่ ฉันสามารถผูกชั้นเรียนทั้งหมดในผู้จัดการใหญ่คนหนึ่งและให้แต่ละคนอ้างอิงถึงชั้นผู้จัดการหลัก แต่สิ่งนี้ดูดีขึ้นเล็กน้อยเท่านั้น ความช่วยเหลือ / คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! หากสิ่งใดไม่ชัดเจนฉันยินดีที่จะขยายสิ่ง
12 c++  2d  architecture  sfml 

4
จะกำหนดช่วงของการเคลื่อนไหวที่เป็นไปได้ในเกมวางแผนแบบอิงทางเลี้ยวหรือไม่?
ฉันกำลังสร้างเกมวางแผนกลยุทธ์แบบ 2 มิติโดยใช้ c ++ และ SFML-2.0 การเคลื่อนไหวเป็นไปตามระยะทางมากกว่าที่อิงตามกริดโดยมีชิ้นส่วนรูปสามเหลี่ยมที่แตกต่างกันหลายชิ้นตามลำดับที่กำหนดแต่ละรอบอาจหมุนในตำแหน่งหรือเคลื่อนที่ไปข้างหน้า การเคลื่อนไหวจะทำงานในลักษณะที่ผู้เล่นเลือกตำแหน่งสำหรับชิ้นส่วนที่จะย้ายไปซึ่งสร้างเส้นทางที่เป็นไปได้สำหรับชิ้นส่วนที่จะใช้ เมื่อผู้เล่นยืนยันการตัดสินใจของเขาหรือเธอชิ้นส่วนจะย้ายไปตามเส้นทางนั้นไปยังตำแหน่งที่ต้องการ เส้นทางถูก จำกัด โดยปัจจัยสองประการคือระยะทางระยะทางหนึ่งชิ้นที่สามารถไปได้โดยคำนึงถึงการเลี้ยวใด ๆ (ดังนั้นหากมีเส้นโค้งมันจะเป็นความยาวตามแนวโค้งและไม่ใช่จากจุดหนึ่งไปยังอีกจุด); และมุมบังคับเลี้ยวชิ้นส่วนสามารถหมุนที่จุดใดก็ได้ (และสูงสุด) ในขณะเคลื่อนที่ (เช่นจาก -30 ถึง 30 องศา) คำถามของฉันคือฉันควรทำอย่างไรในการกำหนดช่วงของตำแหน่งที่ผู้เล่นสามารถเลือกได้ ฉันไม่แน่ใจทั้งหมดว่าสมการและ / หรืออัลกอริทึมที่จะใช้ที่นี่ แผนเดิมของฉันซับซ้อนเกินกว่าจะถึงจุดที่มันเป็นไปไม่ได้ที่จะนำไปใช้ให้อธิบายเพียงอย่างเดียวและฉันมาถึงจุดนี้โดยสิ้นเชิงเมื่อโครงการหยุดทำงาน ฉันจะกำหนดช่วงที่หน่วยสามารถเคลื่อนที่ได้โดยพิจารณารัศมีการเลี้ยวของมันอย่างไร ตัวอย่างเช่นในภาพด้านล่าง เส้นสีแดงสีน้ำเงินและสีเขียวล้วนมีความยาวเท่ากัน วงกลมสีม่วงหมายถึงช่วงการเคลื่อนไหวที่ยูนิตสามารถเคลื่อนที่ได้ (รูปร่างอาจไม่ถูกต้องและเส้นอาจไม่ใช่ความยาวเท่ากันจริง ๆแต่คุณได้แนวคิด)

5
คุณต้องการเซิร์ฟเวอร์ราคาแพงและโฮสต์แฟนซีเพื่อสร้างเกมแบบผู้เล่นหลายคนหรือไม่?
ฉันทำงานเกมสวมบทบาทเสร็จแล้วและมันสนุกมากที่จะทำให้มันเป็นแบบผู้เล่นหลายคน SFML มีคุณสมบัติเครือข่ายฉันคิดว่ามันเป็นไปได้ แต่แล้วอีกครั้งไม่เคยมีในชีวิตของฉันฉันได้ลองบางสิ่งพื้นฐานเกี่ยวกับระบบเครือข่ายในความเป็นจริงความรู้ของฉันมันมี จำกัด มาก สิ่งที่ต้องทำเพื่อให้ได้ทรัพยากรเกมที่มีผู้เล่นหลายคนเป็นอย่างไร ฉันไม่ได้พูดถึง MMO เหมือนเกมประเภท co-op ฉันต้องการเงินจำนวนมากสำหรับการโฮสต์และเซิร์ฟเวอร์และหลายสิ่งหลายอย่างเพื่อสร้างหรือไม่?
11 c++  multiplayer  sfml 

4
การตอบสนองรูปสี่เหลี่ยมผืนผ้าชนกัน
ฉันมีปัญหาในการรับสี่เหลี่ยมที่เคลื่อนย้ายได้เพื่อชนกับสี่เหลี่ยมมากกว่าหนึ่ง ฉันกำลังใช้SFMLและมันมีฟังก์ชั่นintersectsที่ใช้งานง่ายที่เรียกว่าซึ่งใช้เวลา 2 สี่เหลี่ยมและส่งกลับจุดตัด ฉันมีเวกเตอร์ที่เต็มไปด้วยรูปสี่เหลี่ยมผืนผ้าซึ่งฉันต้องการให้สี่เหลี่ยมที่เคลื่อนย้ายได้ของฉันชนกัน ฉันวนลูปผ่านสิ่งนี้โดยใช้รหัสต่อไปนี้ (p คือสี่เหลี่ยมที่เคลื่อนที่ได้) IsCollidingWithส่งกลับค่าบูล แต่ยังใช้ SFML intersectsเพื่อหาจุดแยก while(unsigned i = 0; i!= testRects.size(); i++){ if(p.IsCollidingWith(testRects[i]){ p.Collide(testRects[i]); } } และCollide()รหัสจริง: void gameObj::collide( gameObj collidingObject ){ printf("%f %f\n", this->colliderResult.width, this->colliderResult.height); if (this->colliderResult.width < this->colliderResult.height) { // collided on X if (this->getCollider().left < collidingObject.getCollider().left ) { this->move( -this->colliderResult.width …

2
ฉันจะโหลดพื้นผิวด้วย SFML สำหรับ OpenGL ได้อย่างไร
ฉันกำลังมองหาที่NeHe ของพื้นผิวการทำแผนที่การกวดวิชา มันดูซับซ้อนเกินไปสำหรับการโหลดพื้นผิว มีวิธีการโหลดพื้นผิวใน SFML แล้วใช้มันใน Open GL หรือไม่ ฉันใช้ SFML สำหรับหน้าต่างของฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.