Making a Game With C++ and SDL2
Вставка
- Опубліковано 15 тра 2024
- I Made a Speed Running Game With C++ and SDL2
You challenged me to make my first game using the C++ programming language. At first I tried the Raylib graphics library, but then decided to make it a real challenge and use SDL2/SDL. Can I create an epic speed running game or will I fail miserably?
Play Pencil Sharpening Championship Here!
► goodgis.itch.io/pencil-sharpe...
Shout out @Smallant for the pencil sharpening inspiration!
• How I became the faste...
✦ Discord - / discord
✦ Twitter - / gooodgis
✦ Games - firith.itch.io/
Chapters:
0:00 Intro
0:32 C++ Setup
0:51 Drawing a Window
1:23 Having to Restart
1:54 Game Design
2:32 Switching to SDL2
3:00 Attempt 2
3:26 Adding Mechanics
3:55 UI & Text
4:49 Audio & Music
5:04 The Results
┈ Similar Videos ┈
Goodgis - Making a Game in Python with No Experience
• Making a Game in Pytho...
Goodgis - I've Secretly Been Working on an MMORPG
• I've Secretly Been Wor...
Goodgis - How To Get Started With Game Dev (Beginner's Guide)
• How To Get Started Wit...
Polymars - Learning SDL2 in 48 Hours - GMTK Game Jam 2020
• Learning SDL2 in 48 Ho...
Polymars - Making a Game With C++ and SDL2
• Making a Game With C++...
Barji - Making a C++ Game with No Experience!
• Making a C++ Game with...
Making a game without a game engine is pretty fun but challenging. C++ is notorious for being one of the hardest languages to learn, especially for beginners. That's why I decided to use a framework like Raylib and SDL2 to make it a little bit easier. Originally I going to try to make it in less than 48 hours, but I didn't realize how difficult it would end up being. If you're asking yourself, "How to Make a Game in C++" or "Should I use C++ to Make Games?" then hopefully my experience might help. Either way, this C++ challenge in a way was much harder than SmallAnt's pencil sharp speedrunning world record... Okay, well maybe not.
Subscribe for more EPIC pencil content! ✏
Pencils are epic
i bet you cant program in italian 🤌🤌🤌🤌
Speed Running or Speedrunning
Is it about going as fast as possible or 🚶♂🏃♂🚶♂🏃♂🚶♂🏃♂🚶♂🏃♂🚶♂?
How about Raylib?
You need to learn bf next. It is the greatest language in all of programming
Fun fact! Pygame is actually a python wrapper for sdl2, so technically this isn't the first time you've used sdl2.
pygame uses a python sdl2 wrapper but it just built on top of it
It is not called wrapper it is called wrangler
@@amiteshwarsingh6099 what's the diffrence
@@cacto1680 about 3 letters
@@cacto1680 wrapper - wrangler = bkgch
Writing C in C++ is perfectly valid, it's actually preferred by a ton of people. Most C code is valid C++, the latter just has extra powerful features built on top
"Every C++ programmer knows C"
@@swirl6996bro what if they didn't learn about printf() in c++? They mostly use cout. So... Just saying.
@@swirl6996 i think its more "every C programmer knows C++" since while all C code is valid in C++, the other way around is false. In fact, if you only know C++, you may have trouble with a simple hello world in C because C++ does this evil thing called "operator overloads" where now the code we write isn't even doing what we think it is doing.
Goodgis: uses SDL despite it being C instead of C++
Raylib: that has c++ wrapper O_o
you don't even need a c++ wrapper for c libraries most of the time
@@_Enderpuff true c libraries are compatible with c++
There a really nice one called SFML, lots of advaced but easy to use graphics+audio utilities.
@@glitchy_weasel I personally either use imgui + sfml or imgui + opengl
i know this is 4 months late as a reply, but i just find it funny the dude thought he was a failure for 'coding in C instead of C++' like 99% of C code is perfectly valid C++ code lol
I'm envious but also inspired. As a struggling computer science student, I defo would like to have your confidence in undertaking really difficult projects like this. Often times I doubt myself too much before getting started
I think it would be interesting to learn a language like BASIC and try to make a game with that
Oh a classic.
Or maybe Assembly like Roller Coaster Tycoon
That would be easy
@@WillMakesGames just gonna take a few years to learn
Do ti-basic, on a ti-84 + ce python calculator.
Seeing someone else have great pain to create a window in SDL brings me great enjoyment
I’ve started watching your channel recently and you’ve inspired me to try out making some small games. So thank you for making the great content!
Your artstyle reminds me a lot of WarioWare and it's just so pretty to look at. Game dev is so much easier when you can do art - I can't draw so it's way harder to make games, this is inspiring
The original textures for Minecraft were also kinda poopy. You don't need to be a sublime artist if you can make good, fun gameplay. Besides, you can always teach yourself to draw by forcing yourself to do a lot of textures. You got this, my guy.
As an artist myself, you do not need to be an artist to make a great game. It 'draws' people in, but it does not keep them hooked, great gameplay does.
as a not artist myself, the problem isn't others, if i dont like how my game looks i dont want to finish it@@trys10studios65
Fantastic to see you trying C++. It's been years since I've done C++. Videos like this make me want to try again but then I look at some C++ and nope out real quick.
ohh that headach again...
Damn, your graphic design is on POINT!
Thanks a lot, I watched a couple of your videos the scratch game also, it's pretty inspiring. Honestly I am kinda stuck to make my own game, my idea mostly end up bigger, but thanks to your video and your games I can use it as reference to make my game smaller dan more achievable
This would be so cool as a rhythm game, for instance when you would miss a key the point if the pencil would break. I would play that in a heartbeat.
Next could be make a game with Rust.
Rust is not really the hardest language of programming but it’s one of those language when after use it for a while.
Everything around it look less fun and Rust just being amazing xD
Plza Goodgis do it
That could be awesome!
@@Goodgis Try Bevy!
@@Goodgis He is lying. Learning rust is a completely different experience to other languages and while it can be satisfying to learn, it will be a drag to get through
Rust is an awful language. The promotion of it is so bizarre and basically has no explanation besides people refusing to use C++, which is the best language.
What language next? Pico-8 with Lua, it will be a quite new experience for you to make a retro game in this simple language
Sounds like fun. I've actually made a terrible game in Pico-8 before.
@@Goodgis If you want an extra challenge, you could limit yourself to just pico-8, maybe even use the browser version, so you cannot use your own text editor and have to rely on pico-8's built-in tools.
@@costelinha1867 pinnacle of torture:
I love Devlogs! This looks great! good job goodgis!
Thank you!! 😊
@@Goodgis you are still using c language to code this game
Make a simple game with Rust + Bevy next, Bevy uses an ECS (Entity Component System) and it's a really different and fun experience!
This please. I have a Rust obsession and I must be sated.
UP!
+1
+1
+1
there is a guy that was making a tetris with raylib, the trick is that he was teaching about how to make raylib useful to the c++ language and how you can it apply it to other c libraries
i just wanted to say, i just tried out your demo for DewdropDynasty, its really good, i do think that the keyboard controls arent the best, but its just the early demo, i understand, i really think this game could go somewhere, i also would like to say i think i may be switching my game to a more metrovania game than an adventure game, thanks for the inspiration!
I love your videos, they gave me back the desire to program, it's not that I didn't program before, I just did it without desire, keep it up
I normally binge a lot of programming/game dev/etc. on here, but I was still curious why your video was showing up for me. Then I saw your joke about Factorio and realized my YT history for the past week is 90% Factorio videos lol Thanks algorithm, you worked for once, gonna sub :)
Nice game to sharpen you knowledge! ✏
Thank you 👍
6502 assembly nes game! It’s super fun to learn!
RIP
I’m serious it’s been such a fun and interesting challenge for me and being able to play an nes game you made is the most satisfying thing!
There is an alternative assembly language called wiz which is a mix between asm and C.
It makes programming for the NES way easier.
@@zachgeyer8090 Yeah, but isn't assembly like... super hard to learn? and also there probably won't be as many material covering development for retro consoles as there is for stuff like SDL2.
These are honestly my favourite kind of videos
I really like your art style, its so smooth and colorful, maybe you could make a video and explain how you do it or teach a few techniques idk
You were so close to the greatness of C and raylib, but so far away.
What language should I learn next? - Lua is a really nice language. Love2d and pico8 are great engines that use it! :)
Have you tried Solar2D and MicroStudio 🤔? They both use lua
@@puddyy7010 I haven't but you've piqued my interest so I'm going to have a look! :) 👍
@@will.bailey cool! Lemme know your reviews upon it 🤓do you know any other good C++ sdk, framework, API or libraries by any chance?
And Boblox is the greatest
Well its extremely similar to python tho
you are my favorite gamedev youtuber. i have watched all your videos and wish you had more. your videos make me laugh and are entertaining and educational
SmallAnt would like this, seeing his popular videos on the subject manner. Amazing video, by the way!
I hope so haha
Speed run game made with the fastest programming language. Let's goooo...
Gotta go fast!
Unless we're ignoring assembly.
@@Kyleology and C. and C--.
@@Kyleology not to be the "uhmmm actually" guy, but assembly is much much slower if you are a beginner since you don't know how to write it optimally, just using -o in the compiler with a c/cpp app would make it faster
Rust is faster then cpp
C and C++ are indeed quite different, but all C code is also valid C++ code. C++ just has classes and some more garbage attached. You should be able to just tell the compiler to do C++ (or use g++ instead of gcc), and boom, you've now made a C++ program'
Technically not all C code is valid C++ code, theres a million blog posts on the differences but they're so minute that they really don't matter 99% of the time if you just want to write C to use a C++ library.
Yeah sometimes you make a typo or something and it compiles and you're like "Why ??? this is dumb, this should not compile !" and then you realize it's to be C compatible...
Consider: int* p= malloc(sizeof int);
@@benhetland576 Fair enough. Though you can use `-fpermissive` in g++ to get it to compile anyways ;)
Yep you can compile Raylib in C++ just fine. Been using it like that all the time.
bro thats sick keep it up!
Thanks so much!
I just finished rewatching all your videos for the third time yesterday haha
Woah! That's some dedication. Thanks so much! :D
Lua is a good language since it has some good frameworks (or even engines like defold i think) to make games
Obviously you can write proper C++ while working with a C library (and that's what you've done because SDL is a C library, which kinda defeats your decision to ditch Raylib because it's C) but if you want a 2D library that by itself gives you nice C++esque interface you can try SFML
2nd
Or Raylib.
Nice video goodgis but tbh I think its funny that a video about making a game in c++ and sdl2 from polymars from 2 YEARS ago was in my feed :)
Love your artstyle! Instant Wii vibes. Maybe a tutorial on art sometime?
I greatly respect you, my friend! You're always showing so much courage to branch out and broaden your horizons. Do I correctly ascertain-from your tone-that you're not switching away from Godot just yet, based on this experience? Merely splashing in the shallow end of some other language pools, for the sake of variety and to keep your skills sharp?
You're correct. For making actual commercial video games Godot is the way to go. I like using these frameworks for a learning experience. :D They also force me to make my games small for these types of videos.
Godot is natively written in C++, so even with Godot it's pretty useful. Especially since bindings are fucking stupid.
Finally! A new video!! I only had to wait like a billion centuries!
When I heard you say this was a really hard challenge, I at first thought that was a little weird for someone who's making coding videos. Then you said you come from an artist background, not a programming background, and now I'm just left very impressed. Writing a game in C++ using SDL2 without a programming background is really commendable, well done!
So many libraries are written in C (including SDL), even libraries you would use in languages like python use C libraries under the hood. That said though if it works what stops you from using it?
Can you make something in pico-8? It’s a pretty good game engine.
That would be sweet!
WOW. YOU are so good at this
Speedrunning a devlog! :0
You know it!
Raylib and SDL2 are both C libraries. If you really wanted to go full C++ u should have went with SFML. Not saying SDL2 isn't valid, just that your reasoning to quit Raylib applies to SDL2 as well.
Welp, too late now. Though I will say there was waaayyyy more information on using SDL with C++.
@@Goodgis That is true, Raylib is really young compared to SDL2. Just like SDL2 and any C api for that matter Raylib works with C++ without issue. If u ever decide to revisit this challenge, i hope u give Raylib another shot. Nice video btw.
@@Goodgis C code compiles in a C++ compiler just fine as an supported feature. This means you can use C libraries in a C++ program. So technically you are using C++, just that the library is not using any new features that the ++ part brings.
For graphics a lot of libraries are actually in C deep down, so if a library is C++ it is likely just a C++ wrapper around C code. Not that it is a bad thing, C can do everything, the complex code just looks nicer to read with the extra C++ features.
Now do a game in Assembly.
Your game looks good! You cold say your skills are sharper. 😂
Since you come from an artist background, you should try the Piet esolang (esoteric language). It is not a language that can make a game, but it can be used to make some kind of art work that can be turned into actual code. And because of the way it's built, there is more than one way to write a "hello world" program.
For your next code challenge you should make a
mmo in assembly!
While blindfolded
Learn malbolge and I’ll pay you 15 dollars
oh god
y don't u do it and I pay u
this is a interesting video, C++ was the first language i ever learned and it is interesting to see nowdays it is considered to be one of the hard ones while most people first learn Python or Javascript, for what language to learn next i recommend to learn assembly 6502, it is one of the most accessible types of assembly out there, at least if compared with modern x86-64.
i really love this game lol the style is very reminiscent of those little wii games
similar thing had happened to me . when i am in 6th grade, i studied javascript believing its java. i didn't had any mentor though.
it was my entry to world of programing
Your UI/concept designs are so nice. Do you have any recommended places for me to learn that kind of stuff?
"and the best part That it only took 8 hours to do yeah! 8 hours" is the most(est) c++-ing thing I've ever heard in my life
Amazing
omg preordering rn
great vid :D
This looks very good mr goodguy
This is super cool, I should really try engineless as some point. But I challenge you to use my language, C#!
Nice video, I think rust with bevy would be really interestring too
SDL is a really great and flexible tool, my go to for c++ graphical applications and much more stable than dx9 or 11
Great Vid!
Thanks!
Beautiful video, I love these "challenges" and also as you create graphics, I wanted to ask you if the font you use has a copyright?
When is dewdrop dynasty coming .your videos are so good❤❤ keep finishing it
what font is the title in? it pooks great
I like how he literally made this game from complete scratch using a C++ based framework instead of using any game engine.
I can understand your pain working with SDL, lol
New vídeo made by my favorite UA-camr ever
Man I don’t know how you do it! Maybe I just lack determination but coding in ANY language is so hard for me, haha. Maybe I just lack determination.
It just takes practice. :D
Thats crazy
The spaghetti actually looked good!
This is sharp indeed
EPIC!!
which font did you base the logo on?
Next PL should totally be assembly!
amazing video, the art looks amazing!
try to make a game in the arduino IDE for an ESP32 Dev board like the lilygo TTGO S3.
How did I miss this video! Jeez man. Haven't seen your vids on my feed in a while somehow. weird
You are a Chad of GameDevelopment. And because of course you are, I challenge you to do a game in assamble language.
Or in Power Piont, if the first one sounds insane.
Go try writing in ASM yourself 😂😂😂
I thought of smant's pencil Speedrun as soon as I saw the title
Very impressive Goodgis. Very impressive... but I think it's time you made a game in Assembly 😈
I think you should give C# a go, it's pretty easy to learn and fun!
Yo can u make a tutorial for installing sdl2
4:45 the displayTime function returns a pointer to a string that is stack-allocated, meaning that you are returning and using an invalid pointer :)
Yes, also a couple of other interesting features there for the picky ones... First, the function doesn't do what is says at all, like actually _display_ the time. Second, it counts 60 milliseconds in a second, not 1000... well they aren't milliseconds anyway, so whatever. And for the C++ learner: Hint 1, std::chrono; Hint 2, std::ostringstream (well, it isn't forbidden to use sprintf either).
Don't you just love undefined behavior?
Machine code should definitely be next on the list 😅
Good job cool game.
Now you should try making a game in Rust as another challenge
I got kingdom hearts and smallant mentioned in one video, life complete.
it would be fun to see you try odin
I love ur art it reminds me of rhythm heaven
yow thanks ! Ive got a game idea, its typing game and the pencils have words in it
I think you should try to remake snake using assembly
Do Assembly next 😆. You're gonna wish you could go back to C++.
I will make a clone of this game, seems simple enough to get started with SDL2
i got options mostly only 2 i can think of is the mentioned basic with the bonus of it has to be written either in ms-dos or basic-256. other option is pascal though no idea of game or image.
Goodgis I have request to you why do you add skills and weapon in wizbirds 2
What’s the font for the game’s logo? Love the vibe
I was thinking of making a video game. Have you ever watched Hills of Glory 3D? To make an engine and the controller to make games. Can you help me? I don't know how to programming.
wold be cool to see you make an game with rust
pointers, references and not garbage collector unless you write one yourself is my defintion of hell.