Тёмный
The Hello World Guy
The Hello World Guy
The Hello World Guy
Подписаться
Hi, I am an indie game developer and a programmer who is going to help you learn game development. I also will post tutorials about general programming, along with other stuff like graphics programming.
Raycasting #63 | Enemy Attack and Damage
10:14
14 дней назад
Raycasting #61 | Improved Pathfinding
13:20
28 дней назад
Raycasting #60 | Enemy Pathfinding
10:11
Месяц назад
Raycasting #58 | Enemy AI Behaviour
6:12
Месяц назад
Raycasting #55 | Better Sprite System
10:23
Месяц назад
Raycasting in C++ #52 | 3D Sound System!!!
8:17
2 месяца назад
Raycasting in C++ #51 | Animation System!
10:20
2 месяца назад
Raycasting in C++ #50 | Shooting Part 2
8:20
2 месяца назад
Raycasting in C++ #49 | Shooting Part 1
6:01
2 месяца назад
Raycasting in C++ #48 | Mouse Control
5:22
2 месяца назад
Raycasting in C++ #47 | Directional Sprites
6:08
2 месяца назад
Raycasting in C++ #38 | Improving our Engine
11:41
3 месяца назад
What's Next?
2:14
3 месяца назад
Комментарии
@MUNEEBAHMAD810
@MUNEEBAHMAD810 3 дня назад
💔
@Meximina
@Meximina 3 дня назад
Hi, I've got a problem that I cant seem to solve, after adding the die function to the enemy, all I am getting is assertLocked, as I cannot delete them during the world step. The solution to solve it was to add them to an unordered list in the physics class, marking them for deletion and then do it after the world step. But in doing so removes them being squished as they get deleted right away. Is this something that has occurred with the newer version of box2d specifically? Otherwise I have tried comparing the code to the githhub version and I haven't been able to spot a difference other than not making world a reference at first and changing it(all the functionality stayed the same even if the world wasn't a reference till that point) but deleting anything from world with physics::world->deletebody causes the same error. Also want to note that between release and debug, giving different things; debugg instantly kills them without the squishing part and release does it "correctly" My Repo is ReminaGH/CpStuff on git, you should see it there(cant tell if youtube is hiding my comments or not)
@thehelloworldguyofficial
@thehelloworldguyofficial 3 дня назад
That is weird behavior. Debug and release shouldn't really behave differently in terms of the functionality. I cannot say much without looking at the code. Do you have a GitHub repo?
@Meximina
@Meximina 2 дня назад
@@thehelloworldguyofficial Added my repo to my comment, I cant tell if youtube is being wonky
@thehelloworldguyofficial
@thehelloworldguyofficial День назад
@@Meximina It seems like you don't have your build stuff (probably VS Studio files) checked in. That makes it pretty hard to compile or test it.
@Meximina
@Meximina День назад
@@thehelloworldguyofficial Ah, I see. I was trying to copy it from my school's internal giblab server and just pasting it into my own hub repo, I'll try again and see if I can get it working. Otherwise thanks for at least trying :)
@Duerdak
@Duerdak 5 дней назад
Are you going to make a C++ quake-like engine after this series? If you use imgui you can make a small map editor for it as well. Anyway this series is nice, because it's fully featured, but the explanations are lacking and mostly somebody who has read up on the subject beforehand will understand a lot of it.
@thehelloworldguyofficial
@thehelloworldguyofficial 4 дня назад
That is an idea that I plan to do soon. Right now, I have a plan for another series. After that, I'll probably consider the quake-like engine. Anyways, thanks for your feedback. I'll try to make the explanations more detailed in the future.
@Duerdak
@Duerdak 4 дня назад
@@thehelloworldguyofficial What's the next series you are planning?
@thehelloworldguyofficial
@thehelloworldguyofficial 4 дня назад
@@Duerdak It is a continuation of an earlier incomplete series about game development on Android with C++ and OpenGL ES,
@Kobold666
@Kobold666 10 дней назад
Breathe 😉
@kamilxxx6876
@kamilxxx6876 13 дней назад
Hi man! Really great series. I have some questions: You re using FixtureData* fixtureData = new FixtureData(). Where do you actually do delete on this? I can't see this. The same in Physics.DebugDraw there is debugDraw = new MyDebugDraw(renderer.target); without freeing it.
@MUNEEBAHMAD810
@MUNEEBAHMAD810 14 дней назад
@kamilxxx6876
@kamilxxx6876 14 дней назад
You re using FixtureData* fixtureData = new FixtureData(). Where do you actually do delete on this? I can't see this. The same in Physics.DebugDraw there is debugDraw = new MyDebugDraw(renderer.target); without freeing it.
@duazahra8511
@duazahra8511 14 дней назад
Hello world guy ap APS ki 5class ki commands nhi battae book ka name bhi hello world he
@thehelloworldguyofficial
@thehelloworldguyofficial 13 дней назад
Try codecombat.com/
@BlatentCheater
@BlatentCheater 18 дней назад
nice
@Tinker4bell
@Tinker4bell 24 дня назад
Wow! Never knew this existed. Maybe Unity isn't as intimidating as I thought... (That's also probably why there are so many of those crappy mobile games)
@joaoneves403
@joaoneves403 25 дней назад
Hey dude, I want to be a opengl game developer, but i dont know where to start. I also need to get a better grasp of the C++ language. Would you be interested in making a C++ tutorial applied to opengl?
@joaoneves403
@joaoneves403 25 дней назад
Is there a better way to talk to you in private?
@Anubis1101
@Anubis1101 25 дней назад
Khronos themselves has good tutorials for both OpenGL and Vulkan. As for C++, there are a bunch of resources for all skill levels. My personal favorite is Cherno, his C++ series is excellent for early to mid learning.
@thehelloworldguyofficial
@thehelloworldguyofficial 25 дней назад
I do have a very basic OpenGL tutorial, and I might make a more advanced one at some point. For now, I would recommend learncpp for C++ and learnopengl for OpenGL. Once you get the basics done, for reference, cppreference.com and the OpenGL specs will be usefel.
@thehelloworldguyofficial
@thehelloworldguyofficial 24 дня назад
@@joaoneves403 Well, my email is available in the about page.
@Bon2Vin67
@Bon2Vin67 25 дней назад
bro please bring back this series, you are only one i found useful or can you recommend any other source from where i can continue learning
@thehelloworldguyofficial
@thehelloworldguyofficial 25 дней назад
I will continue this series in the next week. So, make sure you're subscribed 😊
@Bon2Vin67
@Bon2Vin67 25 дней назад
bro just make a playlist, or link next eps at the end of the videos
@thehelloworldguyofficial
@thehelloworldguyofficial 25 дней назад
I will continue the series soon.
@joaoneves403
@joaoneves403 26 дней назад
"We gonna do some meth"
@ZeroCool2211
@ZeroCool2211 Месяц назад
Amazing brother! I am just wondering isn't A* algorithm more effiecient for pathfinding?
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
That depends on the nature of the map and the type of the A* heuristic used. A bad heuristic can result in worse performance compared to BFS. Since we have relatively simple maps, I decided that BFS might be better. Of course, the correct way to find that would be to implement both and then profile.
@christopherrice891
@christopherrice891 Месяц назад
Is this coding video made in C++? I devote 100% of my time learning C++
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
Yes, this is in C++. You can check out the full code at github.com/Yousaf-Wajih/raycaster
@JohanJoy-xx6nw
@JohanJoy-xx6nw Месяц назад
can i download your project
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
Unfortunately, I did not use source control with this project and I do not have the original files.
@ZeroCool2211
@ZeroCool2211 Месяц назад
Man I learnt a lot from u, and thank you for correcting my code. Wonder how can we support ur channel.
@christopherrice891
@christopherrice891 Месяц назад
I'm watching this video to prepare myself for college. I want to learn how to do this stuff because i LOVE it!! Is there more Mario videos after this one? Or is this the only one?
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
Well, this is a whole playlist. You can find it with the name "Advanced Mario Series" on my channel. Good luck with college!
@khayon7873
@khayon7873 Месяц назад
Do you have a github?
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
Yes, at github.com/Yousaf-Wajih
@khayon7873
@khayon7873 Месяц назад
@@thehelloworldguyofficial thanks for the info
@conmantherandom2131
@conmantherandom2131 Месяц назад
thx for the tutorial
@ZeroCool2211
@ZeroCool2211 Месяц назад
Brother, I am stuck in some early stage of implementing ur way in raycasting , would u give me ur e-mail or something to send u my code? I would appreciate it a lot
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
My email is present in the About page. Feel free to send your code.
@ZeroCool2211
@ZeroCool2211 Месяц назад
@@thehelloworldguyofficial Hi bro, thank u so much! I made 'issue' in ur GitHub page and shared u the link of my code
@ZeroCool2211
@ZeroCool2211 Месяц назад
@@thehelloworldguyofficial thank u brother , kindly check ur g-i-t-h-u-b issue, i shared the link of my code there. YT is strict about sharing links
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
I'll take a look and get back to you.
@ZeroCool2211
@ZeroCool2211 Месяц назад
@@thehelloworldguyofficialmany thanks bro, and sorry for bothering
@asfanaureen5727
@asfanaureen5727 Месяц назад
Very useful video.
@bordacsbalazs6014
@bordacsbalazs6014 Месяц назад
Wow
@rakshitx1
@rakshitx1 Месяц назад
how did you even make the not equal to sign?
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
It's a feature known as "ligatures". It is only for display. I do type "!=".
@rakshitx1
@rakshitx1 Месяц назад
@@thehelloworldguyofficial ahhh ligatures, forgot about that
@jpaul1985
@jpaul1985 Месяц назад
are you pentamollis project???
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
uh... no.
@jpaul1985
@jpaul1985 Месяц назад
@@thehelloworldguyofficial hmmm ok, you sound just like him , , , , ,
@ali_bhai414
@ali_bhai414 Месяц назад
@user-ni1fz3nx8n
@user-ni1fz3nx8n Месяц назад
hello can you please resume this series
@thehelloworldguyofficial
@thehelloworldguyofficial Месяц назад
I plan to do it soon!
@user-ni1fz3nx8n
@user-ni1fz3nx8n Месяц назад
@@thehelloworldguyofficial i have subscribed and turn on notifications plz do
@jasonedward
@jasonedward Месяц назад
Great video! Subscribed
@BlatentCheater
@BlatentCheater 2 месяца назад
Nice! Thanks for ur vids
@RaphaelHedon
@RaphaelHedon 2 месяца назад
thank you for the very good video but can you speak more slow please and excuse me for the bad language but i am french and i can't speak english
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
Thanks for the suggestion
@rhubarb5297
@rhubarb5297 23 дня назад
Je vais faire des vidéos sfml dans pas longtemps
@Yamikani
@Yamikani 2 месяца назад
I cant code or make games but for some reason I play coding tutorials as background noise
@cerium2163
@cerium2163 2 месяца назад
Why do you use the bottom row for the matrix translation instead of the side like the example you showed? 8:00 -> 8:13
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
I do use the last column for the translation. However, in OpenGL, the matrices are usually interpreted as column-major. This means that whenever we type out the matrix in code, the outer array will be an array of columns, not rows. So, in the C code, the matrix will appear to be "transposed", but will be correct when we use it in the shader. NOTE: Column-major or row major is just a notational convention. Post-multiplying by column-major is the same as pre-multiplying by row-major. Historically, OpenGL apps have generally used column-major.
@radarodonnell
@radarodonnell 2 месяца назад
Love the series! Though you may want to add 33-36 into your playlist :) Looking forwards to the next one. Thanks!
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
Done! Thanks for pointing that out.
@acatisfinetoo3018
@acatisfinetoo3018 2 месяца назад
I would imagine a game like "Doom" is pretty easy to recreate nowsdays with graphics API's and a dedicated GPU...but back in 1993 when it first came out it was cuttnig edge and all the graphics where done in software on the cpu with many optimizations to speed it up. Like bsp and pre calulcating many math functions. I look forward to seeing the rest of this series.
@nuppanuppa
@nuppanuppa 2 месяца назад
Apki creativity naming me bahut acchi hai. 🌚
@TacticalAllRounder
@TacticalAllRounder 2 месяца назад
W
@mahzebhaidrani2273
@mahzebhaidrani2273 2 месяца назад
Very nice 🎉
@BlueeFishhgg
@BlueeFishhgg 2 месяца назад
Will you be implementing a scene manager? That could be useful for a main menu screen to be able to click the play button or editor button.
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
Well, we will just reload the game and the editor with a different map. Main menu will probably be implemented separately. So, perhaps a basic scene management system. I haven't really decided on the details yet.
@hosein2681
@hosein2681 2 месяца назад
Where is part 1?
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
Here: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-VFzAvedwWNQ.html
@hosein2681
@hosein2681 2 месяца назад
source ?
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
I do not have the source for this series. However, you can check out the code for the Advanced Mario game series at github.com/Yousaf-Wajih/MarioGame
@BlueeFishhgg
@BlueeFishhgg 2 месяца назад
Good video! I have a few suggestions to give this engine more of a "game" feel: 1. Fix the sprites so we don't have to hard code them into the game. It would be better to implement them into the editor and save the sprites to the map file as well. 2. Reimplmement the fog effect. In the raycasting episode #15, you created a blue fog effect. That was when the engine wasn't using DDA algorithm, but I'm curious if it's still possible to reimplement in our current engine. 3. Probably the easiest one, implement mouse controls so the player looks left and right with the mouse, and the cursor is locked to the screen. You could have another button to unlock the cursor.
@thehelloworldguyofficial
@thehelloworldguyofficial 2 месяца назад
Cool suggestions! Incorporating sprites into the editor is one of my top priorities. Also, mouse control should be pretty easy. As far as fog goes, I don't think it would be any different than how we did it earlier.
@BlatentCheater
@BlatentCheater 2 месяца назад
W ty for taking my suggestion
@isaacsong-so5um
@isaacsong-so5um 2 месяца назад
yay thank you
@BlueeFishhgg
@BlueeFishhgg 3 месяца назад
Good job fixing the texture coordinates! It seems like the sky is still moving slow as the player rotates faster. It doesn't seem realistic.
@thehelloworldguyofficial
@thehelloworldguyofficial 3 месяца назад
Hmmm... well, I changed the speed to 4x and it seems about right. I believe my calculations of dividing by 360 were not correct, because this isn't a *skybox* but rather only a single texture (in other words, one side of a "skybox"). So, 90 degrees seems like a more appropriate for division.
@BlueeFishhgg
@BlueeFishhgg 3 месяца назад
@@thehelloworldguyofficial That makes a lot of sense. Multiplying it by 4 looks pretty good to me too. I've also changed the while loop for the xOffset to an if statement, and it seems to be working just fine. Here's my code for the portion of the sky if you want to steal it. //Sky //Calculate the sky offset to match the player's rotation float textureWidth = static_cast<float>(skyTexture.getSize().x); float pixelsPerDegree = (textureWidth * 4.0f) / 360.0f; int xOffset = static_cast<int>(angle * pixelsPerDegree) % static_cast<int>(textureWidth); //Ensure the offset is positive if (xOffset < 0) { xOffset += static_cast<int>(textureWidth); } //debug //std::cout << "Angle: " << angle << ", PixelsPerDegree: " << pixelsPerDegree << ", xOffset: " << xOffset << " "; sf::Vertex sky[] = { sf::Vertex(sf::Vector2f(0.0f, 0.0f), sf::Vector2f(xOffset, 0.0f)), sf::Vertex(sf::Vector2f(0.0f, SCREEN_H), sf::Vector2f(xOffset, skyTexture.getSize().y)), sf::Vertex(sf::Vector2f(SCREEN_W, SCREEN_H), sf::Vector2f(xOffset + textureWidth, skyTexture.getSize().y)), sf::Vertex(sf::Vector2f(SCREEN_W, 0.0f), sf::Vector2f(xOffset + textureWidth, 0.0f)), }; target.draw(sky, 4, sf::Quads, sf::RenderStates(&skyTexture));
@BlueeFishhgg
@BlueeFishhgg 3 месяца назад
There's 2 bugs that I have run into: The sky box isn't perfect. If you look at a spot in the sky and rotate the player 360 degrees, you'll be looking at a different spot than before. The second one is kind of a bug...The textures on the north and south sides of the wall are different than the east and west. The textures are flipped. You can see this when you're looking at the texture that has the purple eagle banner.
@thehelloworldguyofficial
@thehelloworldguyofficial 3 месяца назад
Thanks for pointing those out! They should be fixed by the next video.
@sisqobmx
@sisqobmx 3 месяца назад
Hello. Will you do a quake series similiar to doom? The ioquake3 engine is open source from id software to get inspiration from. ( quake 3 i mean) ? Very nice content btw, i think you dont get enough credit!
@thehelloworldguyofficial
@thehelloworldguyofficial 3 месяца назад
That is definitely on my to-do list!
@sisqobmx
@sisqobmx 3 месяца назад
@@thehelloworldguyofficial thats good news. I hit the sub button so i’ll know when it happens
@asfanaureen5727
@asfanaureen5727 3 месяца назад
Very nice
@BlueeFishhgg
@BlueeFishhgg 3 месяца назад
Would you consider doing something with OpenGL and C++? You could make your own 2D library with OpenGL and use that instead of SFML for the raycasting engine. Awesome series bro. Keep up the great work!
@thehelloworldguyofficial
@thehelloworldguyofficial 3 месяца назад
that sounds cool
@mworld
@mworld 3 месяца назад
Don't use raw pointers any more, user shared pointers instead. Btw: You did not clean up the raw pointer you created which means it would leak that memory.
@thehelloworldguyofficial
@thehelloworldguyofficial 3 месяца назад
That's a good point!