Making a Game With C++ and SDL2
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.
Пікірлер: 992
Subscribe for more EPIC pencil content! ✏
@LeoSquared
Жыл бұрын
Pencils are epic
@GROMSH_
Жыл бұрын
i bet you cant program in italian 🤌🤌🤌🤌
@WohaoG
Жыл бұрын
Speed Running or Speedrunning Is it about going as fast as possible or 🚶♂🏃♂🚶♂🏃♂🚶♂🏃♂🚶♂🏃♂🚶♂?
@MrDiverXHD
Жыл бұрын
How about Raylib?
@PengiiiiGameDev
Жыл бұрын
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.
@darkfllame
Жыл бұрын
pygame uses a python sdl2 wrapper but it just built on top of it
@amiteshwarsingh6099
Жыл бұрын
It is not called wrapper it is called wrangler
@cacto1680
Жыл бұрын
@@amiteshwarsingh6099 what's the diffrence
@Vichion
Жыл бұрын
@@cacto1680 about 3 letters
@WindowsDrawer
Жыл бұрын
@@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
@swirl6996
5 ай бұрын
"Every C++ programmer knows C"
@TheSpiderGod2099
3 ай бұрын
@@swirl6996bro what if they didn't learn about printf() in c++? They mostly use cout. So... Just saying.
@gaffclant
2 ай бұрын
@@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
@_Enderpuff
Жыл бұрын
you don't even need a c++ wrapper for c libraries most of the time
@hjrgf
Жыл бұрын
@@_Enderpuff true c libraries are compatible with c++
@glitchy_weasel
11 ай бұрын
There a really nice one called SFML, lots of advaced but easy to use graphics+audio utilities.
@hjrgf
11 ай бұрын
@@glitchy_weasel I personally either use imgui + sfml or imgui + opengl
@v01d_r34l1ty
8 ай бұрын
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
Seeing someone else have great pain to create a window in SDL brings me great enjoyment
I think it would be interesting to learn a language like BASIC and try to make a game with that
@Goodgis
Жыл бұрын
Oh a classic.
@WillMakesGames
Жыл бұрын
Or maybe Assembly like Roller Coaster Tycoon
@jarPlays11
Жыл бұрын
That would be easy
@treudden
Жыл бұрын
@@WillMakesGames just gonna take a few years to learn
@ego-lay_atman-bay
Жыл бұрын
Do ti-basic, on a ti-84 + ce python calculator.
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
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
@plebisMaximus
Жыл бұрын
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.
@trys10studios65
5 ай бұрын
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.
@devforfun5618
2 ай бұрын
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.
@Gupatik
2 ай бұрын
ohh that headach again...
I love Devlogs! This looks great! good job goodgis!
@Goodgis
Жыл бұрын
Thank you!! 😊
@simasharma3040
Жыл бұрын
@@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!
@SleenpyMan2084
Жыл бұрын
This please. I have a Rust obsession and I must be sated.
@SetimoRei
Жыл бұрын
UP!
@roxferesr
Жыл бұрын
+1
@joaokoritar2141
Жыл бұрын
+1
@Willeexd1337
8 ай бұрын
+1
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
@Goodgis
Жыл бұрын
Sounds like fun. I've actually made a terrible game in Pico-8 before.
@costelinha1867
Жыл бұрын
@@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.
@Your_Average_Rabbit
10 ай бұрын
@@costelinha1867 pinnacle of torture:
Damn, your graphic design is on POINT!
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
@LocalTrashyt
Жыл бұрын
Plza Goodgis do it
@Goodgis
Жыл бұрын
That could be awesome!
@andres3665
Жыл бұрын
@@Goodgis Try Bevy!
@Holsp
Жыл бұрын
@@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
@enochsadventures
Жыл бұрын
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.
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.
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!
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
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!
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
Nice game to sharpen you knowledge! ✏
@Goodgis
Жыл бұрын
Thank you 👍
6502 assembly nes game! It’s super fun to learn!
@Goodgis
Жыл бұрын
RIP
@zachgeyer8090
Жыл бұрын
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!
@OSharraps
Жыл бұрын
There is an alternative assembly language called wiz which is a mix between asm and C. It makes programming for the NES way easier.
@costelinha1867
Жыл бұрын
@@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.
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
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
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
@glitchy_weasel
11 ай бұрын
2nd
@BrunodeSouzaLino
7 ай бұрын
Or Raylib.
You were so close to the greatness of C and raylib, but so far away.
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 :)
SmallAnt would like this, seeing his popular videos on the subject manner. Amazing video, by the way!
@Goodgis
Жыл бұрын
I hope so haha
What language should I learn next? - Lua is a really nice language. Love2d and pico8 are great engines that use it! :)
@puddyy7010
Жыл бұрын
Have you tried Solar2D and MicroStudio 🤔? They both use lua
@will.bailey
Жыл бұрын
@@puddyy7010 I haven't but you've piqued my interest so I'm going to have a look! :) 👍
@puddyy7010
Жыл бұрын
@@will.bailey cool! Lemme know your reviews upon it 🤓do you know any other good C++ sdk, framework, API or libraries by any chance?
@techtime3125
Жыл бұрын
And Boblox is the greatest
@TBT_ZHV
Жыл бұрын
Well its extremely similar to python tho
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'
@giantnoah
Жыл бұрын
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.
@RockyMulletGamedev
Жыл бұрын
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...
@benhetland576
Жыл бұрын
Consider: int* p= malloc(sizeof int);
@jetseverschuren
Жыл бұрын
@@benhetland576 Fair enough. Though you can use `-fpermissive` in g++ to get it to compile anyways ;)
@berni8k
Жыл бұрын
Yep you can compile Raylib in C++ just fine. Been using it like that all the time.
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.
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.
Lua is a good language since it has some good frameworks (or even engines like defold i think) to make games
Speed run game made with the fastest programming language. Let's goooo...
@Goodgis
Жыл бұрын
Gotta go fast!
@Kyleology
Жыл бұрын
Unless we're ignoring assembly.
@Another45555
Жыл бұрын
@@Kyleology and C. and C--.
@patatopeeler3005
Жыл бұрын
@@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
@Staninna
Жыл бұрын
Rust is faster then cpp
Your game looks good! You cold say your skills are sharper. 😂
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?
@Goodgis
Жыл бұрын
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.
@enochsadventures
Жыл бұрын
Godot is natively written in C++, so even with Godot it's pretty useful. Especially since bindings are fucking stupid.
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?
Your UI/concept designs are so nice. Do you have any recommended places for me to learn that kind of stuff?
bro thats sick keep it up!
@Goodgis
Жыл бұрын
Thanks so much!
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.
@Goodgis
Жыл бұрын
Welp, too late now. Though I will say there was waaayyyy more information on using SDL with C++.
@LewiLewi52
Жыл бұрын
@@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.
@berni8k
Жыл бұрын
@@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.
"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
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!
Can you make something in pico-8? It’s a pretty good game engine.
@Goodgis
Жыл бұрын
That would be sweet!
Now do a game in Assembly.
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
Finally! A new video!! I only had to wait like a billion centuries!
For your next code challenge you should make a mmo in assembly!
@joedartonthefenderbass
Жыл бұрын
While blindfolded
Learn malbolge and I’ll pay you 15 dollars
@xrusteater
3 күн бұрын
oh god
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 :)
I just finished rewatching all your videos for the third time yesterday haha
@Goodgis
Жыл бұрын
Woah! That's some dedication. Thanks so much! :D
WOW. YOU are so good at this
i really love this game lol the style is very reminiscent of those little wii games
New vídeo made by my favorite KZreadr ever
I like how he literally made this game from complete scratch using a C++ based framework instead of using any game engine.
SDL is a really great and flexible tool, my go to for c++ graphical applications and much more stable than dx9 or 11
omg preordering rn
I can understand your pain working with SDL, lol
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?
Amazing
When is dewdrop dynasty coming .your videos are so good❤❤ keep finishing it
Now you should try making a game in Rust as another challenge
great vid :D
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.
@Goodgis
Жыл бұрын
It just takes practice. :D
This is super cool, I should really try engineless as some point. But I challenge you to use my language, C#!
This looks very good mr goodguy
This is sharp indeed
Next PL should totally be assembly!
Great Vid!
@Goodgis
Жыл бұрын
Thanks!
I thought of smant's pencil Speedrun as soon as I saw the title
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.
@Mizu2023
8 ай бұрын
Go try writing in ASM yourself 😂😂😂
Nice video, I think rust with bevy would be really interestring too
what font is the title in? it pooks great
The spaghetti actually looked good!
I got kingdom hearts and smallant mentioned in one video, life complete.
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.
I think you should give C# a go, it's pretty easy to learn and fun!
which font did you base the logo on?
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 :)
@benhetland576
Жыл бұрын
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).
@Goodgis
Жыл бұрын
Don't you just love undefined behavior?
It's time to make a game in assembly ;)
bugs (to improve game): 1. the in game timer is WAY to fast 2. when the game is closed, main.exe still runs in the background and uses a lo of computing power, requiring task manager to close (also blocks it from being able to be deleted) 3. (more or less critical feedback) if you click your keys in a certain way, you can speed through it really fast without trying
Raylib works with C++ just fine All you have to do is change the compiler from gcc to g++ and it works just fine since C++ allows for mixing C++ and C code in a single program just fine. I mostly used Raylib with C++ this way.
@xGOKOPx
Жыл бұрын
The funny thing is that he dismissed Raylib because it's a C library and went for SDL which is... also a C library lol
Machine code should definitely be next on the list 😅
Very impressive Goodgis. Very impressive... but I think it's time you made a game in Assembly 😈
pointers, references and not garbage collector unless you write one yourself is my defintion of hell.
I will make a clone of this game, seems simple enough to get started with SDL2
Next make a roller coaster game in assembly
Speedrunning a devlog! :0
@Goodgis
Жыл бұрын
You know it!
wold be cool to see you make an game with rust
Do Assembly next 😆. You're gonna wish you could go back to C++.
yow thanks ! Ive got a game idea, its typing game and the pencils have words in it
I love ur art it reminds me of rhythm heaven
Nice game! But I bet you can't make one with assembly 🤯
He did it... The mad lad did it
@Goodgis
Жыл бұрын
And I survived to tell the tale.
making a simulator in JavaScript will be a decent challenge
Thats crazy
Good job cool game.
if you want something on a slightly smaller difficulty level, but still pretty hard and low level try bevy and rust!
@Goodgis
Жыл бұрын
I've heard Bevy is pretty sweet!
@soulshardstudios9365
Жыл бұрын
@@Goodgis I'm excited for their visual editor! hopefully they come out with a prototype in the next release...
@costelinha1867
Жыл бұрын
@@Goodgis Bevy is pretty good, but it's more of a engine than a framework, so if you still want a feel that is closer to the likes of Pygame and SDL, I'd recommend the crate Macroquad.... or just use Bevy, like I said, Bevy is pretty good. (Just be warned that the initial compilation of that library takes an eternity.)
How did I miss this video! Jeez man. Haven't seen your vids on my feed in a while somehow. weird