ฉันจะเริ่มต้นได้ที่ไหนถ้าฉันต้องการเขียนเกม C ++ 2d [ปิด]


17

ฉันเป็นนักพัฒนาเว็บ C # และฉันต้องการที่จะขยายชุดทักษะของฉันและมีความสนุกสนานในขณะที่ทำมัน ฉันรู้พื้นฐานบางอย่างของ C ++ และฉันชอบที่จะเขียนเอ็นจิ้นเกม 2d / เกมแบบง่าย ๆ สำหรับตัวเองโดยใช้ C ++ ฉันต้องใช้ไลบรารีหรือ SDK อื่นใดและฉันจะหาบทช่วยสอนและแหล่งข้อมูลที่ให้ข้อมูลไปข้างหน้าได้จากที่ใด

ฉันดู XNA ด้วย C # แล้ว มีทรัพยากรมากมายสำหรับสิ่งนั้น แต่ฉันอยากจะใช้ผลิตภัณฑ์ที่ไม่ใช่ของ Microsoft ประเด็นนี้คือการมีความสนุกสนานเล็กน้อยในขณะที่กลายเป็นโปรแกรมเมอร์โค้งมนที่ดีขึ้น

โปรดทราบว่าฉันไม่ได้ขอให้สถานที่ที่ดีที่สุดในการเริ่มต้น ฉันแค่ขอสถานที่ที่จะเริ่มต้น

ขอบคุณสำหรับความช่วยเหลือใด ๆ !

คำตอบ:


27

สถานที่เริ่มต้นมาตรฐาน (ในประสบการณ์ของผม) สำหรับ C ++ เกม dev มีSDL คุณต้องเอามือของคุณสกปรกไปด้วยสิ่งนี้มากกว่า XNA

หากคุณต้องการที่จะลองสิ่งระดับที่สูงขึ้นเล็ก ๆ น้อย ๆ แล้วผมจะแนะนำSFML มันจัดการงานที่มีความเป็นมนุษย์มากกว่าสำหรับคุณ แต่คุณยังต้องคอยจับตาดูการใช้งานหน่วยความจำของคุณ ฯลฯ


1
ฉันจะดูสิ่งเหล่านั้น ปัญหาที่ใหญ่ที่สุดของฉันกับ XNA คือมันตรงไปตรงมามากจนฉันไม่รู้สึกว่าฉันกำลังเรียนรู้สิ่งที่ต่ำกว่าที่ฉันสนใจในการสำรวจ
quakkels

6
SFML มีการออกแบบที่ดี แต่ก็ยังค่อนข้างบั๊กและอยู่ในกระบวนการของการออกแบบ API ที่สำคัญ - ฉันจะไม่ใช้มันสำหรับเกมที่มีความซับซ้อนมากขึ้นจนกว่าการเปิดตัวครั้งต่อไปนั้นจะดีขึ้น
Bitgarden

ถ้าคุณต้องการบางสิ่งบางอย่างมากขึ้นอีกนิดที่ท้าทายกว่า SDL ลองClanLib เช่น XNA รองรับการเร่งความเร็วฮาร์ดแวร์ แต่ยังทำงานบน Linux และ 2D พิเศษ
ChrisC

2
คุณยังสามารถตรงไปที่ลำคอได้ - OpenGL เป็นที่ชื่นชอบส่วนตัวของฉัน (คุณสามารถห่อมันด้วย SDL หรือ SFML)
ultifinitus

9

ผมขอแนะนำให้ใช้SDL เป็นเวลานานแล้วที่เอกสารและการสนับสนุนค่อนข้างดีและเป็นหนึ่งในวิธีที่ง่ายที่สุดที่ฉันรู้เพื่อให้ได้พื้นผิวการวาดภาพบนหน้าจอ มันจะให้คุณฝึกการเขียนคลาสใน C ++ (เนื่องจากคุณอาจต้องการตัดการเรียกฟังก์ชัน SDL C จำนวนมาก) และยังให้ประสบการณ์การใช้ตัวชี้และการอ้างอิงและทำการจัดการหน่วยความจำพื้นฐานบางอย่าง การจัดการหน่วยความจำของคุณเป็นหนึ่งในความแตกต่างที่สำคัญระหว่าง C ++ และ C #


9

โดยส่วนตัวแล้วฉันจะเลือกอัลเลโกร 5ด้วยเหตุผลดังต่อไปนี้:

  1. มันมีระบบสร้างตาม CMake สิ่งนี้ทำให้ง่ายกว่าระบบสร้างส่วนใหญ่สำหรับการทำงานบนหลายแพลตฟอร์ม ดูเหมือนว่าจะเป็นเรื่องเล็กน้อย แต่โดยรวมก็ค่อนข้างสำคัญ มันทำให้การสร้างห้องสมุดง่ายขึ้นมาก

  2. SFML ยังคงอยู่ในการไหลที่สำคัญ 2.0 เป็นการเปลี่ยนแปลงที่สำคัญมาก ในขณะที่อัลเลโกรผ่านการเปลี่ยนแปลงครั้งสำคัญกับเวอร์ชั่น 5 แล้วและตอนนี้ทุกอย่างเกี่ยวกับความเสถียร

  3. มันครอบคลุม modularity ในวิธีที่แตกต่างจาก SFML ด้วย SFML คุณจะถามถึงส่วนประกอบเฉพาะ แต่คุณจะได้รับทั้งหมด หากคุณขอองค์ประกอบกราฟิกคุณจะได้รับองค์ประกอบกราฟิกทั้งหมด ด้วย Allegro 5 คุณจะได้รับองค์ประกอบกราฟิกเสมอ แต่ถ้าคุณไม่ต้องการใช้ตัวโหลดบิตแมปของ Allegro คุณไม่จำเป็นต้อง; คุณสามารถใช้ของคุณเอง

  4. มันมีเอกสารที่ดีมาก SFML ใช้เอกสารสไตล์ Doxygen แต่ก็เป็น Spartan ที่สวย ในขณะที่ Allegro 5 นั้นมีความครอบคลุมมากขึ้นโดยมีฟังก์ชั่นจัดกลุ่มเข้าด้วยกันตามระบบที่ครอบคลุม มันไม่สมบูรณ์แบบ แต่โดยรวมดีกว่า

  5. พวกเขาฉลาดพอที่จะไม่พยายามทำเกลียว ด้วย C ++ 11 / BoostThreads ที่มีอยู่อย่างกว้างขวางหรือใกล้มุมการใช้กระดาษห่อด้ายอื่นอาจเป็นปัญหามากกว่ามันอาจเป็นอันตรายได้หากโค้ดของคุณทำงานอย่างถูกต้อง


ทำไมคุณถึงต้องการ / แนะนำ Allegro ผ่าน SDL หรือ SFML
Quazi Irfan

@iamcreasy: ถ้าคุณยืนยัน
Nicol Bolas

คุณยังไม่ได้พูดถึง SDL ...
วิศวกร

@NickWiggill: SDL มีเธรดและระบบบิลด์เฉพาะแพลตฟอร์ม ฉันไม่รู้สึกว่าจำเป็นต้องเรียกมันออกมาเพื่ออะไรที่เฉพาะเจาะจง
Nicol Bolas

@ nicol-bolas คุณไม่ได้พูดถึงข้อเสียของ Allegro ชอบการเปรียบเทียบการสอนที่ต่ำมาก
Quazi Irfan

4

ผมคิดว่ายอดเยี่ยมสถานที่การเริ่มต้นคือLazyFoo สิ่งนี้จะช่วยให้คุณพร้อมกับ SDL เร็วกว่าที่อื่นที่ฉันเคยเห็น ฉันขอแนะนำให้เข้าสู่ OpenGL อย่างรวดเร็ว (เร็วที่สุดเท่าที่จะทำได้) เพราะคุณจะได้เงินมากขึ้นสำหรับการเขียนโปรแกรมด้วยการเร่งฮาร์ดแวร์ หากคุณไปเส้นทางนั้นฉันแนะนำคู่มือนี้


2

ฉันจะแนะนำSFMLถ้าคุณใช้ c ++ มันจะช่วยให้คุณมีบางสิ่งบางอย่างบนหน้าจออย่างรวดเร็วและใช้กับโค้ดเกม c ++ ของคุณทันที


2
  • SFML - เด็กในกลุ่ม แต่อาจใช้ง่ายที่สุดจากสิ่งที่ฉันได้อ่าน
  • SDL - ถนนตรงกลาง ห้องสมุดที่เป็นผู้ใหญ่มากมีเหตุผลโดยทั่วไปรัดกุมถ้ามีความลับเล็กน้อยเป็นครั้งคราวและเป็นตัวเลือกที่ใช้กันทั่วไป การตั้งค่ารูปแบบการแสดงผลอาจเป็นเรื่องผิดเพี้ยนฉันได้ใช้บทเรียนของ lazyfoo เพื่อช่วยในหน้านั้น
  • Allegro - ผู้สูงอายุมันมีมาตั้งแต่อาตาริ ST ด้วยเหตุนี้โค้ดการเรนเดอร์แบบ 2D จำนวนมาก (ซึ่งฉันคิดว่ามีเฉพาะในอัลเลโกร 4) นั้นค่อนข้างรวดเร็วเนื่องจากตรรกะนั้นถูกสร้างขึ้นสำหรับระบบสเป็คที่ต่ำกว่ามาก โดยส่วนตัวฉันไม่พบว่าใช้งานง่ายมากแม้แต่การพิจารณาเอกสาร

เมื่อพิจารณาจาก OpenGL จะเร่งด้าน 2 มิติของสิ่งต่าง ๆ ในวันนี้มันไม่สำคัญเลยที่จะต้องเข้าถึงซอฟต์แวร์เรนเดอร์ที่รวดเร็วที่ Allegro และ SDL มี (หรือมีในเวอร์ชั่นก่อนหน้า) อย่างไรก็ตามเมื่อฉันเลือกห้องสมุดฉันมุ่งเน้นไปที่การกำหนดโครงการฐานผู้ใช้และเอกสารมากกว่าความเร็ว (ตราบเท่าที่ความเร็วเหมาะสม) และฉันจะบอกว่า SDL และ Allegro ชนะในแนวหน้าเหล่านั้น SDL ยังมีการวางจำหน่ายเกม AAA สามรายการเช่น Civ: Call to Power

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