Does the video start 19 minutes in for anyone else?
@javidx94 жыл бұрын
it seems to at the moment, i just checked behind the scenes and the whole video is there, i suspect its still being processed by YT
@javidx94 жыл бұрын
Seems ok now :D
@Akronymus_4 жыл бұрын
Yeah, works now.
@Asdayasman2 жыл бұрын
I like that this comment detailing an issue that lasted for a very short amount of time has been left pinned for two years. It's like a small simple "fuck you" to youtube. 10/10.
@weyo7928 Жыл бұрын
@@AsdayasmanaHAHAHA
@lemurza52364 жыл бұрын
This is by far my favourite development channel. Javid is the programmer I aim to be.
@javidx94 жыл бұрын
ooof, thanks, but aim higher XD
@achtsekundenfurz78763 жыл бұрын
_hits blunt_ Does digital life use firewalls for birth control?
@frost-tm1rx3 жыл бұрын
me too
@browaddup32894 жыл бұрын
At 200k you must do another livestream. When someone codes live it is obvious how experienced they are due to the way they think. You are a very experienced programmer and it is so satisfying seeing you use just basics of computation to give pixels life! Very good work you have done, both in programming as well as youtube!
@javidx94 жыл бұрын
Thanks buddy! I expect I will do something for 200K assuming I get there, but I wont even think about it unless I do XD
@PhilBoswell3 жыл бұрын
@@javidx9 did you ever celebrate 200k or are you waiting until 250k (which cannot surely be long in coming ;-)? 👏
@javidx93 жыл бұрын
If it happens I may do something for 256k
@ukaszdomagaa89984 жыл бұрын
I've been programming for 15 years. I don't write in C++ particularly but I enjoy your videos a lot. One of the best programming channels on KZbin :)
@yanhesap67284 жыл бұрын
Which language do you write code with?
@ukaszdomagaa89984 жыл бұрын
JavaScript (including Node.js) and PHP, I am making rich scalable web apps for a living. Nowadays mostly dev ops, architecture design and team management thought ;) In my free time little bit of everything, but I prefer languages with GC and dynamic typing.
@yanhesap67284 жыл бұрын
@@ukaszdomagaa8998 thanks. Is javascript used a lot? Can i make a lot of good websitesi by just using html javascrpt?
@ukaszdomagaa89984 жыл бұрын
Nowadays JavaScript is one of the most popular languages, and with Node.js you can make both frontend and backend (server side). So yeah I can highly recommend it :)
@yanhesap67284 жыл бұрын
Thanks all of you
@ElShogoso4 жыл бұрын
Very interesting tutorial. Just one thing that is worth mentioning, for people wanting to improve upon this code, is that in bullet-hell style games, the hitbox of the player is usually just a little circle (more or less the size of a bullet) in the middle of the sprite. In some games, it can even be made visible with a key. Mostly because there are so many bullets on the screen and they're so close to each other that it would be impossible to dodge them if your hitbox is the size of your ship. It's also useful to have a key (like shift if using arrow keys to move) to make your ship move slower so you can more precisely avoid bullets. And also, normalize diagonal movement so the ship doesn't move faster on diagonals than it moves on cardinal directions. Other than that, some cool ideas would be making a way to script bossfights (with different "stages" depending on the boss's health chaging it's movement and attack patterns), divide the game into levels, add a "bomb" system (limited use thing where you press a key to clear all bullets from the screen and damage enemies), etc. It's a very fun type of game to code.
@ui61444 жыл бұрын
Congratulations on your 100K milestone. Love your work, love your channel. And your catching up fast with that "other" C++ dude ;)
@mIsPtr3 жыл бұрын
i watched this when i haven't really understant c++ now i finally can understand most of it
@MuradBeybalaev4 жыл бұрын
General shmup design practices: - Player's collision shape is a single point in the middle of its sprite often denoted with a stylized contrasting pixel on the sprite itself for the player. - Bullets' collision shape is a circle and they never despawn inside viewport. - On getting hit, the player loses a life and enters an invincibility period. This makes collision detection neater and gameplay tighter.
@achtsekundenfurz78763 жыл бұрын
That's the classical Danmaku / "Bullet Hell" design. If one wants a more realistic collision model, one could use very small bullets (3x3 or smaller) and calculate if it's on the sprite area, and if it is, query if the pixel it's on is solid (in this context: not 100% transparent). For bigger bullets, one could preprocess the sprite to generate a 2-color sprite that's never drawn, but which is used for pixel-perfect collision detection. Transparent means near miss, opaque means hit.
@lucgagnon71694 жыл бұрын
"Evrything should have a Deathspiral"... Sounds like a fair videogame !!!! :)
@starsky512 жыл бұрын
2:18:17 'Who knows what next year will bring?' - Poignant!
@toastyPredicament2 жыл бұрын
"oh that baaaaad" Just like the Victorian era, I am filled with pain
@stephenelliott70714 жыл бұрын
Great stuff as always, I was a bit shocked when you used so few classes though! ;)
@achtsekundenfurz78763 жыл бұрын
The MoveData / FireData arrays were quite horrible... When I tried something similar, I used 2 of those "misc" variables, and additionally three variables LastMove, LastFire, and LastSpecial, to keep track of the time since the last special movement action (like teleport or speed boost), the last shot fired, and the last special action (usually a special attack). The other two were mostly used for bosses with more than one special. I also didn't keep enemies and bullets separate, but all of them in one big array. Enemy bullets had a simple "move in a straight line" movement pattern and checked for collision with the player only, and the player's bullets checked for collision with all enemies which weren't bullets. I also had one "AI" function per object with everything lumped together: movement, fire, collision / removal check. The player's "AI" function processed key input. LOL I ran out of ideas before anything worth playing came together. :(
@RhoTrepaan4 жыл бұрын
"...the humiliation of writing bugs live" :D
@alextektumanidze84554 жыл бұрын
Meeh, I'm a little bit late. :( Maybe won't have another chance to say happy new year so guess I'm gonna do it rn. happy new 2020 year Javid! Have another amazing coding year full of joyful content :d
@javidx94 жыл бұрын
Hey thanks Alex, Have a happy New Year too!
@nabilandadamslaboratory34224 жыл бұрын
Great video! Enjoyed it lots, and learned new things! 😁😁
@d7ffab979 Жыл бұрын
You know what? EVERYTHING should have a death spiral *proceeds to chuckle*
@EmmittBrownBTTF14 жыл бұрын
Captain of enemy ship gets circle cluster gun, immediately gets mount engraved with "yur f'd". Charming.
@krrishxxx4 жыл бұрын
We are gonna miss you so much.
@JP-ud9lf3 жыл бұрын
240k now fella. Very good stuff.
@MuhammadArshad Жыл бұрын
Really helpful video. Thank you for this 🙏
@_syedmx864 жыл бұрын
Wasn't able to join the stream because of timezones but still wanted to say Congrats!
@mechadrake3 жыл бұрын
Nice bullet hell there at the end :D full screen of death spirals!
@PhilBoswell3 жыл бұрын
Extremely late to the party but I have managed to wrangle VS2019 onto my shiny new machine, so I thought I'd go back and catch up on some of these fun exercises. Which is a long-winded way of saying this looks wonderful but I can't find the art assets: where can I find the sprites?
@MrRobbyvent4 жыл бұрын
Quite different when on C64 I had to steal any cycle from LM instructions...
@Miguel-td5ef4 жыл бұрын
Build a compiler :)
@iteratedofficial3 жыл бұрын
oh boy...
@RogerBarraud3 жыл бұрын
It's easier than you think... ...and much harder than you think. :-)
@Mozartenhimer4 жыл бұрын
When I read the answer to "What's the derivative of sine?" and it was cosinus, I broke out laughing.
@brianmac82604 жыл бұрын
Many thanks and Happy Xmas David., and congrats on your channel. Hope you get a chance to loose some arrows too. ;-)
@oblivionronin4 жыл бұрын
I watched your most recent video on procedurally generated universe before this one (freaking awesome btw) and i cant help but think that it woudl be awesome to use some sort of word seed to generate levels, enemy move and fire patterns based on thoses seeds. Put each seed as a level that last X time or defeat X number of enemies. and give out the seed word if you pass the level, making it a no memory save of the progression. That coudl also allow for people to try and share either super weird or hard patterns that emerge from thoses seeds. Just a tought
@javidx94 жыл бұрын
Hi Chris and thanks, Yeah thats the beauty of procedural generation. The only downside is you dont know if what it generates will be playable unless you carefully engineer it, but thats part of the fun!
@oblivionronin4 жыл бұрын
@@javidx9 Finding the beauty in randomness is the name of the game here ! Cheers
@seancpp4 жыл бұрын
*scrolling through spaghetti to find anything* this is why abstractions exist
@achtsekundenfurz78763 жыл бұрын
yup... with a good compiler, they don't cost much either. Also, the compiler he uses is a douche, errors out on float/double mismatch. Even in 1998 there were compilers which could do that automatically. I'd say either "F### it, I'm using a better compiler" or "F### it, I'm using double instead of float" at that point. Because the difference between those is only 4 bytes each. For bullets, that's a difference of 16 (pos and vel), totally negligible even if there are 1000s of bullets. Javi must have the patience of an angel to work with that compiler...
@samanuiljecson3 жыл бұрын
it's awesome
@focuseletronica4 жыл бұрын
Esse cara é um gênio!!!
@Xenthera Жыл бұрын
Nice
@antonioambrosio20644 жыл бұрын
Javi I have a technique question for you. Why if I utilize visual studio 2017 or CodeBlocks changes the performances of pixelgameengine?? If I utilize visual studio 2017 with the base project for test it,it do 52-53 FPS,in CodeBlocks 255-256. Thanks if you answer me.
@javidx94 жыл бұрын
Hi Antonio, by default VS compiles in debug mode which is much slower. Set the build configuration to release to see a considerable performance increase.
@antonioambrosio20644 жыл бұрын
@@javidx9 Thx for the help,I immediately try it. A good excuse to not do my italian homework.
@antonioambrosio20644 жыл бұрын
@@rarRoarrar non li facevo prima,figurati mo col corona virus
@sergebalakin16314 жыл бұрын
cool !!!
@goat52494 жыл бұрын
100 bullets every two seconds may be too many. Let's change that to 50 bullets every 0.5 seconds. That's more like it.
@sandean4334 жыл бұрын
Hi , I'm a beginner in programming and I learnt some of c++ basics I like to try making a graphical program but idk where or how to start like using an engine or not so can you please give me a hint and advice ,thanks.
@javidx94 жыл бұрын
Hi San, it may be a little self promoting, but my olcPixelGameEngine is great for beginners to start working with graphics, just include it the header file and go! I use it for all my videos. On my other channel "javidx9 extra" ive just released a video showing the most basic of setups.
@richardleandro86944 жыл бұрын
@NeZversSounds3 жыл бұрын
Instead of "Bullets", you can use the word "Projectiles" and not be afraid of youtube.
@rufusbiskitt9725 Жыл бұрын
Will someone please tell me how to use the sprite editor to add sprites to the environment?
@noahsaa37954 жыл бұрын
My programme never works it says Unhandled exception thrown error when I run it: it says m_bufScreen was 0x1110112. How do I fix that
@javidx94 жыл бұрын
You are creating a console that is too big to fit on your screen. Try halving the fontw and font values in construct console function.
@noahsaa37954 жыл бұрын
javidx9 thanks
@toastyPredicament2 жыл бұрын
Which I lace with smoke of tobacco to get nicotine to escape cringe
@toastyPredicament2 жыл бұрын
Also blood
@fredg83284 жыл бұрын
I missed the 150K subs live
@antonioambrosio20644 жыл бұрын
Happy 100 k sub javi,I'm new from the channel,and i try to make an engine 3d in c++,so qhat kind of libraries i can use in place of olcPixelGameEngine. If you link me the place or the tutorial to add this lib i'am very thankfully,because,i'am not good with installation and similar problem,thanks anyway. P.S. sorry for the bad english.
@johnnyserup55002 жыл бұрын
When will your pixelgame engine be ready for building Games for iOS ?
@javidx92 жыл бұрын
Hmm unsure. It already works for MacOS, so don't know if there's some compatibility layer. I don't have access to any Apple-y things.
@liukang813 жыл бұрын
Can u help with this problem sir? I’ve solve this problem but don’t work! here how was I did; Write a program to check if the number is even or odd. Take an integer input from the user, if it is even print "even", otherwise print "odd". Sample Input 25 Sample Output odd int main(){ int number; cin>>number; // taking input from user int even = 44; // interger int odd = 25; //odd number = even; if(number
@javidx93 жыл бұрын
What is it you are trying to do?
@liukang813 жыл бұрын
@@javidx9 i am learning with SoloLearn app myself and I got no one help. And I been watching you coding on KZbin, I think you’re a great coder . Sir! Thanks for replied sir! I need you to explain for what I missed on this code sir. Thanks
@javidx93 жыл бұрын
Thanks. What is it the program should do? I can't help to fix it unless I know what it should be doing.
@liukang813 жыл бұрын
@@javidx9 here’s the topic: Write a program to check if the number is even or odd. Take an integer input from the user, if it is even print "even", otherwise print "odd". Sample Input 25 Sample Output odd
@javidx93 жыл бұрын
int n; std::cin >> n; std::cout
@thievingclient26654 жыл бұрын
Could you make a new how to make a 3d game video on the 2019 software? Me and a friend want to try it out but don't know how to get started
@laureven4 жыл бұрын
Hi ...big fan of the channel ...Just the idea. Compared with You I'm a beginner but I understand templates classes pointers ...I tried to run your code from the synthesizer video and I was not able to do it. I tried to just list my sound devices as a start and even there I was stuck ...Maybe this is not a bad idea to do a video about: "Intro to Win32 programming in C++" ...where and how to start, what is important. I was trying to list my sound devices and I was stuck :) ...just the idea
@javidx94 жыл бұрын
Hi Marcin, what error where you seeing?
@laureven4 жыл бұрын
@@javidx9 was not expecting the replay :) ...i need 15 min to start the comp and project :)
@laureven4 жыл бұрын
@@javidx9 (first vid about synth)/from file : main1.cpp. after F5 : Severity Code Description Project File Line Suppression State Error C2664 'void std::vector::push_back(_Ty &&)': cannot convert argument 1 from 'CHAR [32]' to 'const _Ty &' with [ _Ty=std::wstring ] synth C:\Users\mrutk\Documents\# VisualStudioProjects\#OneLoneCoder\Synth\synth\olcNoiseMaker.h 182
@laureven4 жыл бұрын
@@javidx9 short version :) :void std::vector::push_back(_Ty &&)': cannot convert argument 1 from 'CHAR [32]' to 'const _Ty &' in file : olcNoiseMaker.h line :182
@javidx94 жыл бұрын
This is you template telling you it expects something other than a CHAR* which you have provided. If i had to guess this is because you have not enabled unicode, and it looks as if the function is trying to cast your string from a regular string literal to a std::wstring. Tldr, enable unicode for your compiler.
@ashutoshaswal4 жыл бұрын
❤️❤️😍❤️❤️
@nabilandadamslaboratory34224 жыл бұрын
What is fElapsedTime?
@javidx94 жыл бұрын
The time taken between two similar points in successive frames
@nabilandadamslaboratory34224 жыл бұрын
@@javidx9 sorry I don't get it. Like the difference in time since that variable was last called?
@nabilandadamslaboratory34224 жыл бұрын
@@javidx9 and what units is it in? Seconds?
@ishdx93743 жыл бұрын
@@nabilandadamslaboratory3422 difference between frames in seconds
@zystemd31724 жыл бұрын
Hi Javid, i just begun my shoot them up on PGE2, made a std::list called "PlayerShoots" and i have spend the afternoon to find this (because i didnt want just to copy your code, but at the end i had to) : PlayerShoots.remove_if([&](const Shoot& s) { return (s.pos.y
@zystemd31724 жыл бұрын
ok this is a lamda function, i didnt know, now its clear. but what about acceleration and velocity near to .00000023 ??
@achtsekundenfurz78763 жыл бұрын
> acc.x *= (0.90f * fElapsedTime); > acc.y *= (0.90f * fElapsedTime); *B R U H* Spoiler #1 below: fElapsedTime is the time between the last and the current frame. Just think of it as 0.01. Spoiler #2: You multiply by something like 0.009, or 0.9%. What you want is something like > float factor = 1.00f - 0.90f * fElapsedTime; > acc.x *= factor; > acc.y *= factor;
That part of the code looks OK. Where is the rest? (where you add acc to vel, and vel to pos)? I suspect that there's no limiting code, which keeps acc and vel from getting too big). BTW, Why did you _disable comments_ of all things???
@No-ge1fq4 жыл бұрын
can you make a video about creating a simple mod for some kind of old plain game? I'm not just talking about replacing textures. For example, bot control
@javidx94 жыл бұрын
Mods are tricky, because i would need to be quite familiar with the game beforehand. Ive made videos about lua scripting however, and lots of games use lua as their main control interface.
@No-ge1fq4 жыл бұрын
@@javidx9 thanks for the answer
@toastyPredicament2 жыл бұрын
I have been show in the back so many times I havecskin cancer and I have a lissssttttt
@jamesmathai11384 жыл бұрын
For the first 5 seconds I was wondering why Ian Anderson was doing a programming tutorial
@OneMeanDragon4 жыл бұрын
why use list and not a standard array?
@uvadroid4 жыл бұрын
you could implement procedural generation for spawning the enemies for the lazy game designers out there.
@saree3784 жыл бұрын
Hollo
@olasoderlind56854 жыл бұрын
soon 0x1FFFF (131071 subs) only ones in binary
@javidx94 жыл бұрын
lol yeah, its come around frightfully quickly...
@nakano154 жыл бұрын
It already ended? Nooooooooooooooo!!!!! I'm late!
@seditt51464 жыл бұрын
Don't feel bad, I had someone remind me because I am forgetful and even moderate the discord and I still missed it lol.
@nakano154 жыл бұрын
@@seditt5146 Yeah. At least we got a slice of the cake. Hehe.
@seditt51464 жыл бұрын
@@nakano15 Yeah but I heard the Cake is a Lie!
@nakano154 жыл бұрын
@@seditt5146 Nooooooooooo!!!!
@yny6664 жыл бұрын
When will the next part of NES emulator be uploaded?
The licence restricts me from giving them away. I'm sure you can source alternatives pretty easily via many sprite sites.
@N0__Name__4 жыл бұрын
KZbin didnt told me 😾
@tutituti43444 жыл бұрын
26:00 Code Jesus
@BradenBest2 жыл бұрын
I couldn't help but notice that you say "modern C" a lot, but you are not writing C. It's a real pet peeve of mine when people conflate C and C++ or talk about them as if they're the same thing. They are mutually-incompatible. C is focused on minimalism and systems programming while C++ is focused on type safety and having a special syntax or STL mechanism for every possible design pattern. I would like to think that Stroustrup regrets the decision to claim C++ is a superset of C (it's not, the set {2,4,6} has some even numbers in it but it's not a superset of all even numbers) every day, because that claim has fucked over the language severely. You cannot be compatible with C and also have type safety, and C++ has painted itself into a corner where it has neither of those things. It's not compatible with C because it refuses to support things that the ISO standard requires an implementation of C support, such as K&R syntax and weak typing (or basically every feature introduced to C after the 1989 ANSI standard--I don't think C++ recognizes the `_Alignof` operator), but it's also not safe because it inherits or borrows a lot of things from certain other languages, the most notorious of which is undefined behavior. A language which has undefined behavior cannot claim to be safe, because a single instance of UB destroys determinism. You can use all the smart pointers and special STL facilities you want, but if some moron or supervillain manages to sneak some code in that invokes UB, then it's game over. That shit can go undetected for _years,_ and having a false sense of security from assuming that an unsafe language is safe just because it provides you with a few ways to write safe code is only going to exacerbate that. C doesn't make any claims of safety, and experienced C programmers take safety very seriously, and are much more likely to catch UB, especially as old legacy code continues to have UB discovered in it (things that were done probably because the original developers expected a specific compiler or platform and decided "it's okay to use this uninitialized value to seed this RNG because our compiler will just let it be whatever garbage is in memory", but then 4 years later the BSD kernel gets some security features like wiping the memory segment where a process resides before copying it, and 6 years after that clang gets an update where the optimizer deletes the entire seed computation because it can--the behavior is undefined and to the compiler, a function that copies a single value and returns makes more sense than all this uninitialized memory biz--and the original developers left years ago during that time the corp that owns the UNIX trademark was suing Berkely over BSD containing original UNIX code, so it goes undetected for another 3 years). Humans will get better at recognizing it, and so will compilers. But undefined behavior is essential to C. UB is the contract that all C programmers agree to. The contract that says "here's a list of insane things you can do that we're saying is off limits, if you agree to not do these things, then the compiler agrees to do exactly what you expect it to do". The contract that allows the compiler to generate the fastest possible code for the given hardware and platform by sacrificing all of the runtime safety checks and requirements that impose inefficient conversions and puts the responsibility onto the programmer so that the code has almost as little overhead as assembly. This is not a thing that C++ programmers are concerned with. C++ programmers are concerned with writing applications. Yet UB exists in C++. The design patterns, idioms, style, culture and philosophy around these two languages are completely different. C programmers tend to know a frightening amount about undefined behavior and the many ways a library interface can go wrong, and UB was baked into C with the purpose of giving compilers maximum freedom when it comes to optimizing for specific platforms, provided that the programmer has the sense to not do any of these things that only a crazy person would do, while C++ programmers obsess over the new features that come in every three years. Look at C++ and C codebases from 2 years ago and try to tell me that they look anything like each other. You know damn well that you'll take one look at the C code and think to yourself all the ways you could do it differently in C++. So please stop calling C++ "C" or "C/C++".
@zafuzi4 жыл бұрын
Why is your engines opengl so much slower than SDLs implementation? I like your engines but they are some serious performance issues somewhere.
@javidx94 жыл бұрын
Its a little unfair to compare the two since they operate and offer completely different experiences. PGE is fully CPU bound, which is incredibly flexible and portable, but will suffer if your application is doing high resolution activities. SDL on the other hand is great when you constrain yourself to GPU idealised primitives, which are very much less flexible, but you can gain speed and resolution.
@zafuzi4 жыл бұрын
@@javidx9 I see, I figured it was CPU bound. Would it be possible to write an extension to use the GPU instead? The only reason I ask is because I want to use PGE for a full game, but I would need higher resolutions.
@javidx94 жыл бұрын
@@zafuzi PGE2 is in development, it is considerably more performant. However PGE is targeted at low resolution pixel-effect games, hence the name. It might also be worth assessing what exactly is slow about your current implementation, yes its CPU bound but frame rates > 200fps are pretty common even for quite demanding applications
@zafuzi4 жыл бұрын
@@javidx9 Are you willing to share any details of PGE2? I was just doing random sprite testing with > 1000 sprites. It something that I know SDL2 can handle so I wanted to see how PGE compared. It's impressive what it can do, but I want more performance.