Damn. arctan2 is the only thing I still remember from my short time writing a project in Pygame. Good times! I'm still fascinated how bare-bones it is. You literally have to do everything yourself.
I've always found that since I started my game design and software development journey that my choice of game engine has ultimately been determined by "what gives me the most freedom" rather than "what already does what I need it to do." It's why I switched from RPG Maker to the open-source JS-based Sphere Engine back in 2003 and helped them modernize from old Mozilla Spidermonkey to Duktape and other current JS technologies over the years. Building demos like a Flappy Bird clone and a shoot-em-up was for me super easy, barely an inconvenience, and now I'm reminded that I'd like to build a Watermelon Game clone eventually.
You can also spawn enemies by making a circle from the players position and having the radius the spawn distance, you don't need more than a line or a couple lines of code rather than using components to heavy lift a solution
You don't need to worry about camera bounds either because you can use in-game vector units, that way regardless of the viewport, it works, the player is always within it and the scale and units of the world and each tile is precise and unchanging
FYI React Jam for gamers is going on right now... it's usually only 10 days, but this session will be 13 days! Still 7 days left as of today (Sunday 31st), goes to Jan 7th or 8th.
Listening to other peoples' game dev stories is so great since I started my own gamedev project. I started off writing my own raycasting software renderer with the lodev tutorial, and I'm now on to using Bevy and working on getting 3D levels generated out of a tilemap file. I'm going pretty slow, basically implementing at least a functional piece of a feature a day (far more on weekends) while I get used to things and find time, but it's been the most fulfilling experience I've had in as long as I can remember. In fact, I think this project has actually lifted me out of the depressed anxious slump I've been in for over a decade.
Happy New Year Prime, here's to one more year of this industry hiring human beings before some phd student makes us obsolete with FullStackGPT. I also fear it might be at least partially my fault. I made a birthday wish about 2 years ago, hoping for more models to to enter the tech workforce. This current situation we're in right now wasn't exactly what I had in mind.
I once had to build a game in 48 hours too, but it was for an assignment which I left for the last minute and it was on an FPGA, not any newfangled "engines". I barely survived
It took me about three days to make the one game I ever made for a jam, and it was an extremely simple game. I made it in Lua which was a programming language I knew essentially nothing about at the time.
4:00, to make a projectile travel alongside a 2D plane, angle is not required. It's only needed the "derived": how much Y (vertical) it'll run for each step of X (horizontal). Once having the target, its x,y will be acquired, and then comparing it to the original (your character) x,y: (Ydestiny - Yorigin) / (Xdestiny - Xorigin). 6:47, I would make it this 1st way, as a bigger map. The spawns would be coordinates related to the screen, so it would not get a problem regarding number overflow. "Node" is a dangerous word: it always feels to me that the programmer will use linked lists (slow as hell) where he shouldn't. 10:18, pitfall here: some people think that 100 will participate on the division, when it'll just multiply the result. 10:23, a bit harder? Dude, I played Van Helsing, and it was a lot harder. The harder the better. Don't be afraid to do it. 13:54, because it's hard to imagine a harder task.
It was a cool video but the godot recommendation felt weird considering the lack of experience. I don't know what he did on unity in the past, but saying he ditched it so it's better is weird (with 0 gamemaking experience). Godot still is quite lacking compared to unity, even if it's been getting better. Btw rather than atan2 I'd say simply use a normalized vector * distance. He's just placing the orb based on two positions (the origin and the mouse), after all.
No, that circular orbit thing is really easy to mess up. If you mix up you're x/y coordinates, instead of moving towards your target, you'll orbit it. No sin/cos needed.
Day Before dude admitting they bit off more than they could chew sounds like me with a graph solver for one of my games. Thank god I lack initiative to try to sell something so I never scammed anyone but myself out of all this time.
Gamedev is hard mainly because it's very time-consuming, so I get why you feel it's impressive. It just involves so many things that need to be right. I still think someone like you who can literally make harpoon in the time it takes me to get 1 hour of playable content is way more impressive though. Gamedev is a lot of simple things turned into complex systems. All the complicating stuff has been figured out by our predecessors, as engine dev is stupidly difficult. Gamedev is the frontend of engine dev. Someone who can make a complex system like you will always be more impressive to me.
3:20 I don’t think that was hard to do, he just had his trig function off by 90 degrees so the mob walked tangent to the character instead of toward it
I did the same: made engine, then usually very simple games. Except times I used an engine or worked as bigger team where doing these still meant there is some game somewhere in the process 🙂 But I made a content pipeline that auto-generated octrees for 3D objects for faster per-triangle collision in build time - just to later learn that "other people" (generally everyone) just use so called "collision meshes" and ask modellers to just create a low-poly approximative mesh and they just use that.... No - I generated it! Not faking, but real making - just same result lol 🙂
Before watching, "I Made A Game In Two Days" sounds like a * A - flex * B - lie * C - clickbait * D - intimidation, * E - reminder of the terrifying truth that I am not good enough * F - all of the above
Hi Prime, I heard about your journey with physics engine from your intro, I am currently trying to make my own engine following the Ian Millington book but I'm kinda lost because I use pure C and the books use C++. Do you know any resources that is beginner friendly ?
If this engine is for game, don't do it. Instead, make the game directly, only what is needed for it. Whenever something becomes generic enough, put it in a general lib of your own. In far future, if this ever becomes robust, only then you make an engine out of it. I strongly recommend C++, or at least its classes and containers (from STL), to properly hide data. Game is a wild environment, eager to steal your data, which needs to be tightly secured.
@@anon_y_mousseGames have a loop, having to keep values memorizes. So, goodbye to pure f()s ideal world, for instance. There are plenty of side-effects, often. It also takes important decisions, like which branch to go, according to those values. So it's needed to avoid some unwanted f() to "steal" some data (to have access to it, when it shouldn't) to change it. If everything is public (global variables, for instance), lots of things will be changed at wrong moments, either by mistake or by a "4am hacking thought of design" - a "theft of data", compared to good design.
@@anon_y_mousseBut if the whole project can call those modifiers, you have almost global variables, which are not properly encapsulated. For an engine, this may be acceptable, since the dev. can't tell how its users gonna use his thing. But as soon as this gets into an actual project, things should be properly encapsulated in a class. This allows to declare which f()s are allowed to change the data, whether or not via a modifier.
@@anon_y_mousseIf it can be called from anywhere, it works just like a global variable. Being called through specific f()s just means there's a filter for it. So it's a global filtered variable. Whoever makes a lib can't tell in advance which f()s should call its public f()s. So this is an user task. And for a lib, just filtering its low-level operations use to be enough. For the user project itself, at least for what the user develop, classes are most welcomed.
As someone who has taken part in Ludum Dare several times, I feel weirdly insulted by the implication that this guy is super special and deserves attention for making a game in 2 days. Literally thousands of people do this every few months for Ludum Dare alone. It's pretty common for people to use a game jam as a way to try out game development, so even the "no experience" part isn't that notable. Maybe I'm just in a bad mood, lol
Prime, time to up your audio game? Honestly I could not hear the guy almost at all and your channel is already way lower than others. (Oh and your FUEL BAR is covering the subtitles, so...) Messing with volume settings is too dangerous so I'm just not doing that for all of your videos. I'm gonna have to skip this one. (Going back to work -- now all my bugs are your fault hahaha!)
The fact someone needs to use a game engine for something so simple is just odd. Seems like development has gone backward in the past 20 years in terms of being able to write small games quickly.
I recently also followed a tutorial for this type of game. It's really easy to do in Godot. I can definitely recommend trying it. Although it also took me almost 2 days only following along without adding new graphics like the dude m.th-cam.com/video/GwCiGixlqiU/w-d-xo.html
We really need a "I made this programming language in 7 days for the browser" reaction :)
Imagine people would then start using that language and build the entire internet with it. That would be crazy!
Btw it was 10 days. 7 days was that other thing.
@@EdmondDantèsDE ah 10 days yes, lol. must have whats programmers are also human too much ;)
Imagine it has so many flaws that Microsoft decided to do a remake due to the poor language design
@@nic37ry I am not so sure I liked JScript from microsoft ;) ;)
I once joined game jam with "Endless" as a theme. I had no time for controls, so I uploaded pretty nice screensaver. People were mad 🤦♂️
I burst out laughing😂😂😂😂😂
They can endlessly stare at the screen. 🤣
Is a zero player game!! That's legit, look it up!!
@@gus2603windows 98 maze screensaver
I love how positive he is about game development. Pretty comfy.
"Write a game engine with no experience and find yourself reading up on articles about ECS all night long" So damn relatable.
Damn. arctan2 is the only thing I still remember from my short time writing a project in Pygame. Good times!
I'm still fascinated how bare-bones it is. You literally have to do everything yourself.
I've always found that since I started my game design and software development journey that my choice of game engine has ultimately been determined by "what gives me the most freedom" rather than "what already does what I need it to do." It's why I switched from RPG Maker to the open-source JS-based Sphere Engine back in 2003 and helped them modernize from old Mozilla Spidermonkey to Duktape and other current JS technologies over the years. Building demos like a Flappy Bird clone and a shoot-em-up was for me super easy, barely an inconvenience, and now I'm reminded that I'd like to build a Watermelon Game clone eventually.
I spend more time thinking about making a game than other people do making a game.
You can also spawn enemies by making a circle from the players position and having the radius the spawn distance, you don't need more than a line or a couple lines of code rather than using components to heavy lift a solution
You don't need to worry about camera bounds either because you can use in-game vector units, that way regardless of the viewport, it works, the player is always within it and the scale and units of the world and each tile is precise and unchanging
Screen tearing adds another level of polish to the gameplay footage
FYI React Jam for gamers is going on right now... it's usually only 10 days, but this session will be 13 days! Still 7 days left as of today (Sunday 31st), goes to Jan 7th or 8th.
Listening to other peoples' game dev stories is so great since I started my own gamedev project. I started off writing my own raycasting software renderer with the lodev tutorial, and I'm now on to using Bevy and working on getting 3D levels generated out of a tilemap file. I'm going pretty slow, basically implementing at least a functional piece of a feature a day (far more on weekends) while I get used to things and find time, but it's been the most fulfilling experience I've had in as long as I can remember. In fact, I think this project has actually lifted me out of the depressed anxious slump I've been in for over a decade.
Happy New Year Prime, here's to one more year of this industry hiring human beings before some phd student makes us obsolete with FullStackGPT.
I also fear it might be at least partially my fault. I made a birthday wish about 2 years ago, hoping for more models to to enter the tech workforce. This current situation we're in right now wasn't exactly what I had in mind.
LOL
8:40 did I just see Dani’s Unity Particle System in Godot?
To quote Erwin Coumans "Collision detection is 70% of simulation"
Those David Goggins references really gets me, every fuckn time
".... XNA"
Critical(emotional) hit right in my lower back.
I want to see prime make a game!
Me too bro, i just wanna see what's going to come out of it
I once had to build a game in 48 hours too, but it was for an assignment which I left for the last minute and it was on an FPGA, not any newfangled "engines".
I barely survived
I built a game on FPGA in school. It was easy. All I had to do was build a whole ass 8-bit CPU, an assembler, and a VGA driver 🙃
@@mattmurphy7030 noice
It took me about three days to make the one game I ever made for a jam, and it was an extremely simple game.
I made it in Lua which was a programming language I knew essentially nothing about at the time.
4:00, to make a projectile travel alongside a 2D plane, angle is not required. It's only needed the "derived": how much Y (vertical) it'll run for each step of X (horizontal). Once having the target, its x,y will be acquired, and then comparing it to the original (your character) x,y: (Ydestiny - Yorigin) / (Xdestiny - Xorigin).
6:47, I would make it this 1st way, as a bigger map. The spawns would be coordinates related to the screen, so it would not get a problem regarding number overflow. "Node" is a dangerous word: it always feels to me that the programmer will use linked lists (slow as hell) where he shouldn't.
10:18, pitfall here: some people think that 100 will participate on the division, when it'll just multiply the result.
10:23, a bit harder? Dude, I played Van Helsing, and it was a lot harder. The harder the better. Don't be afraid to do it.
13:54, because it's hard to imagine a harder task.
It was a cool video but the godot recommendation felt weird considering the lack of experience. I don't know what he did on unity in the past, but saying he ditched it so it's better is weird (with 0 gamemaking experience). Godot still is quite lacking compared to unity, even if it's been getting better.
Btw rather than atan2 I'd say simply use a normalized vector * distance. He's just placing the orb based on two positions (the origin and the mouse), after all.
No, that circular orbit thing is really easy to mess up. If you mix up you're x/y coordinates, instead of moving towards your target, you'll orbit it. No sin/cos needed.
Day Before dude admitting they bit off more than they could chew sounds like me with a graph solver for one of my games. Thank god I lack initiative to try to sell something so I never scammed anyone but myself out of all this time.
9:00 it is currently happening to me trying to learn sequel (CQL) and typing the word partition (partishion) one too many times.
There's people who make good games and people who make good code.
aframe is the htmx of game engines.
Gamedev is hard mainly because it's very time-consuming, so I get why you feel it's impressive. It just involves so many things that need to be right. I still think someone like you who can literally make harpoon in the time it takes me to get 1 hour of playable content is way more impressive though. Gamedev is a lot of simple things turned into complex systems. All the complicating stuff has been figured out by our predecessors, as engine dev is stupidly difficult. Gamedev is the frontend of engine dev. Someone who can make a complex system like you will always be more impressive to me.
5:33 For a moment I thought that Prime was gonna sing In the End
3:20 I don’t think that was hard to do, he just had his trig function off by 90 degrees so the mob walked tangent to the character instead of toward it
2:44 STAY HARRRRRRRRD
I did the same: made engine, then usually very simple games. Except times I used an engine or worked as bigger team where doing these still meant there is some game somewhere in the process 🙂
But I made a content pipeline that auto-generated octrees for 3D objects for faster per-triangle collision in build time - just to later learn that "other people" (generally everyone) just use so called "collision meshes" and ask modellers to just create a low-poly approximative mesh and they just use that.... No - I generated it! Not faking, but real making - just same result lol 🙂
The intro to this video is basically Randy
Quite impressive.
Is it just me or the video prime is reacting to has very low volume? Hard to hear *on loudspeaker*.
watch the vampire survivors documentary, really good.
I love endmore games
Before watching, "I Made A Game In Two Days" sounds like a
* A - flex
* B - lie
* C - clickbait
* D - intimidation,
* E - reminder of the terrifying truth that I am not good enough
* F - all of the above
This guy is amazing.
Code bullet does a good job
Jade switches rule!!
Hi Prime, I heard about your journey with physics engine from your intro, I am currently trying to make my own engine following the Ian Millington book but I'm kinda lost because I use pure C and the books use C++. Do you know any resources that is beginner friendly ?
If this engine is for game, don't do it. Instead, make the game directly, only what is needed for it. Whenever something becomes generic enough, put it in a general lib of your own. In far future, if this ever becomes robust, only then you make an engine out of it.
I strongly recommend C++, or at least its classes and containers (from STL), to properly hide data. Game is a wild environment, eager to steal your data, which needs to be tightly secured.
@@anon_y_mousseGames have a loop, having to keep values memorizes. So, goodbye to pure f()s ideal world, for instance. There are plenty of side-effects, often. It also takes important decisions, like which branch to go, according to those values.
So it's needed to avoid some unwanted f() to "steal" some data (to have access to it, when it shouldn't) to change it. If everything is public (global variables, for instance), lots of things will be changed at wrong moments, either by mistake or by a "4am hacking thought of design" - a "theft of data", compared to good design.
@@anon_y_mousseI mostly agree. But if every f() has the power to change any game state, a mess will be produced, sooner than later.
@@anon_y_mousseBut if the whole project can call those modifiers, you have almost global variables, which are not properly encapsulated.
For an engine, this may be acceptable, since the dev. can't tell how its users gonna use his thing. But as soon as this gets into an actual project, things should be properly encapsulated in a class. This allows to declare which f()s are allowed to change the data, whether or not via a modifier.
@@anon_y_mousseIf it can be called from anywhere, it works just like a global variable. Being called through specific f()s just means there's a filter for it. So it's a global filtered variable.
Whoever makes a lib can't tell in advance which f()s should call its public f()s. So this is an user task. And for a lib, just filtering its low-level operations use to be enough.
For the user project itself, at least for what the user develop, classes are most welcomed.
Commodore 64 had that modify does not fit also and that was just sprites
As someone who has taken part in Ludum Dare several times, I feel weirdly insulted by the implication that this guy is super special and deserves attention for making a game in 2 days. Literally thousands of people do this every few months for Ludum Dare alone. It's pretty common for people to use a game jam as a way to try out game development, so even the "no experience" part isn't that notable.
Maybe I'm just in a bad mood, lol
I don't get the clacky keyboard scene.
people in the us call high school math "physics"
The day before dev team is literally scammers. I don't think they actually payed someone and all work was done by volunteers
Say you did a Game Jam without saying you did a Game Jam...
z-index: 100000000000^e
Prime, time to up your audio game? Honestly I could not hear the guy almost at all and your channel is already way lower than others. (Oh and your FUEL BAR is covering the subtitles, so...)
Messing with volume settings is too dangerous so I'm just not doing that for all of your videos. I'm gonna have to skip this one. (Going back to work -- now all my bugs are your fault hahaha!)
The fact someone needs to use a game engine for something so simple is just odd. Seems like development has gone backward in the past 20 years in terms of being able to write small games quickly.
playing games is fun until you have to make one ig xDDDDD
I recently also followed a tutorial for this type of game. It's really easy to do in Godot. I can definitely recommend trying it. Although it also took me almost 2 days only following along without adding new graphics like the dude m.th-cam.com/video/GwCiGixlqiU/w-d-xo.html