Тёмный

I Made A Game From Scratch. Here's What I Learned. 

Theodore Bendixson
Подписаться 7 тыс.
Просмотров 2,5 тыс.
50% 1

A university computer science education is more expensive than it has even been, even if you adjust it for inflation. What if there were a cheaper alternative, like learning how to program by making a complete game from scratch?
What would you learn if you could do that?
Well guess what! I just did that. Here's what I learned and how it would compare to a university computer science education, which I also have.
Wishlist Mooselutions on Steam:
store.steampowered.com/app/22...

Игры

Опубликовано:

 

8 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@tedbendixson
@tedbendixson 6 месяцев назад
Hey folks. In this video, I announce a release date for Mooselutions of January 29th, 2024. I actually decided to release earlier because my surgery date got changed. It goes live on January 3rd, 2024. Surgery is three weeks after the game goes live. It should be enough time to help with the launch. Wishlist here: store.steampowered.com/app/2287140/Mooselutions/
@JoshChristiane
@JoshChristiane 3 месяца назад
Superb video, thanks for the link to it, I thoroughly enjoyed all of it.
@anon_y_mousse
@anon_y_mousse 8 месяцев назад
The one thing I would disagree with is that a formal education is either necessary or a shortcut to certain knowledge. I've worked with many fresh college graduates throughout the years and most of them had no clue that a FSM existed, let alone where it could be applied. I've also worked with a few who never went to college and were excellent programmers. I've often found that a formal education can be a hindrance more than it can help. This will depend on where someone goes to school, and some are definitely better than others, but most suck. A suggestion I would make is to either open source your game or at the very least include the level designer tools. One or the other would get more people interested in your game than you might have otherwise and could extend the life of it as well.
@tedbendixson
@tedbendixson 8 месяцев назад
Thanks for sharing your perspective. I've got another video coming on the day the game releases, and it will discuss my own university experience. I'll never tell people to go or not go, and prefer to simply offer my experience and thoughts. If I do open source something, it will probably be a more robust Mac platform layer showing people how to build a simple Sokoban game starting on a Mac. There aren't many good Apple resources for that sort of thing.
@geeknerd763
@geeknerd763 8 месяцев назад
Nice overview. Although I haven't made a game I do remember that I had similar thought process when I did a hackathon. While listening it felt like virtually diving inside a game's structure and seeing the parts which makes up a game. Going to an institute to learn computer sciece along with a side project to make a game from scratch sounds a good combo to me rather than opting any one.
@tedbendixson
@tedbendixson 8 месяцев назад
That plan worked really well for Ryan Fleury, who was working on his games before attending University and then got several jobs in games while in school and afterwards. He works for Epic Games now.
@geeknerd763
@geeknerd763 8 месяцев назад
​​@@tedbendixson This shows that giving time to your hobbies does pay off and one must not sacrifice their hobby for completion of mundane tasks schools provide. A balance should be there. Thanks for this insightful response.
@Petertronic
@Petertronic 4 месяца назад
Interesting discussion. I agree with your thoughts on making games from scratch. Found you via Alex Diener by the way.
@tedbendixson
@tedbendixson 4 месяца назад
Awesome! I'm stoked he played the whole game. I wasn't expecting that :-)
@SekiiEv
@SekiiEv 8 месяцев назад
it's interesting to see a complete list of everything needed to make a game from scratch. I remember the original jam version of the game, so it's cool to see how far it's come. there's a couple things I'm curious about: - how many months of development will it take to release the game in total? - i'm also curious about any marketing / production work, since it's technically part of the dev process too
@tedbendixson
@tedbendixson 8 месяцев назад
It's always difficult to say because there are so many confounding variables. It has been two years since I started, but I was working a job for one of those years. After I quit the job, I took on more household responsibilities. There was the two month break I took to learn 3D, and the period when I wasn't sure if I wanted to finish this game and started to pursue other projects. There were also the RU-vid videos which take at least a few days to produce. Trailers that take at least a day. Steam pages, screenshots, etc and all of those take time. I'm not all that keen on tracking time because if you want to finish something, you'll finish it regardless of how long it takes. Your many years of experience also factor into it. Do I count the three years I spent learning how to make game engines before I started this project? When do you start counting the time? Any significant endeavor probably takes at least ten years of your life. Factorio took seven years. Do you count the years before it started when the creator built his skills?
@SekiiEv
@SekiiEv 8 месяцев назад
@@tedbendixson Right, when you put it that way it doesn't really make sense to ask for a concrete number... but the general overview you've given me is good enough to have a rough idea of the whole process, so thanks! To give a bit more of context I just finished a master's degree and I'm expecting it'll take me months till I find a position in the games industry, so I'm thinking about building a game from scratch to understand how game engines work inside out. I already followed some of the Handmade Hero episodes in the past, so seeing someone walk the rest of the path and having a general picture of the process might help me manage my expectations ^^
@tedbendixson
@tedbendixson 8 месяцев назад
I would also say that making your own game/engine from scratch is a great way to get interviews in the game industry. Although I have yet to want a job in the industry (more of a preference to be independent and in more of a position to pursue it), I only started getting interviews once I had a few working game prototypes in my engine. If you can make engines, it makes you a stronger candidate, regardless of the things they state in the job description. I would pursue that over making something in Unity or Unreal because you can always learn someone else's tool. It's more of an accomplishment to learn how the tools are made.
@a445fa6sd
@a445fa6sd 8 месяцев назад
I love programming and would love to make games, but I find it hard to get into it. I find myself trying to make everything perfect to delay the time when I will have to work on gameplay and content. Was that an issue for you?
@tedbendixson
@tedbendixson 8 месяцев назад
It is both natural and human to want to delay gameplay. That's because the gameplay is the uncertain thing. It's the part of your game that people could reject that you can't fix. If you get the gameplay wrong, the whole game fails regardless of whether everything else you've made in the game is good. You might also find yourself going through phases of being really excited about one game idea, realizing it won't work, then switching to another, etc. The problem there is never finishing projects because you keep abandoning them too early. So here's what I've done. I'll start with an idea and then prototype it in low fidelity (really crappy pixel art) just to see where it goes. This will reveal a ton of problems. From there, I have to decide if I want to keep making the game after seeing all the problems with it (there will always be problems). If you think most of the problems can be solved, you keep going. If you think they can't, you use your scraps and make a different game. Gameplay always comes first because that's what customer actually pay for. I could keep playing Factorio for hours and hours, and it's not just because of the graphics. The game has no story whatsoever. Nearly all of the value is in the gameplay. Once you find good gameplay, you've solved the hardest problem in making games.
@magnushinge2358
@magnushinge2358 8 месяцев назад
I personally would love to use my java skills to make a game since game engines in java are not common and I really wanna learn from scratch, could you share more details about how you made this game. I think this is amazing you are cool my dude!
@tedbendixson
@tedbendixson 8 месяцев назад
I used C/C++ as the programming language after following Handmade Hero very closely for the first 60 days. It took years of side projects to get to where I am now, but I essentially built both the game and the game's engine in lock step with each other, piece by piece, somewhat slowly. There were many failed experiments along the way, but every time I tried out an experiment, I learned something I could use for the next phase of the project. Expect to learn many new programming languages and to be open to ideas you might disagree with. I struggled with raw pointers in C for quite some time, but I eventually got much better at managing memory and stopped running into the same issues I had at the start. Just because something is difficult for you now doesn't mean it will be a year down the road.
@anon_y_mousse
@anon_y_mousse 8 месяцев назад
@@tedbendixson Something I would advise against is lumping C and C++ together as though they're interchangeable. Since C99 they have diverged significantly as languages and it's relatively easy to write a program in C that won't compile as C++, and the opposite has been easy to do since C++ first existed.
@magnushinge2358
@magnushinge2358 8 месяцев назад
You are so wise mr Chad programmer@@tedbendixson
@devenlg7379
@devenlg7379 8 месяцев назад
If you want to use Java, your main option is the Lightweight Java Game Library (LWJGL), which is just some wrappers around the typical libraries like OpenGL. It's pretty much the closest you can get to "from scratch" with Java, though it might be slightly higher level than doing it in pure C or C++ because Java is garbage collected so you'd be doing memory management a little differently. You could even use the built-in Swing/AWT libraries to make a simple 2D game - it would be higher level still but you would have to implement the more "gamey" things yourself. There's also JavaFX, which is newer and AFAIK more performant and can even handle 3D.
@tedbendixson
@tedbendixson 8 месяцев назад
I know. I assume people know what I mean when I say it. Trying to find something better. How about C-flavored C++?
@user-vm3ie6ft9g
@user-vm3ie6ft9g 5 месяцев назад
You were wrong on one thing though ... 40 years old woman here and super curious!
@khoavo5758
@khoavo5758 7 месяцев назад
But did you ever need a better hash function?
@tedbendixson
@tedbendixson 7 месяцев назад
I did indeed come up with a hash function for 3D model loading. Depending on how your model is stored, you might notice repeats of the same vertex. I used the hash function to build up a map of vertices which have already been loaded. I use that for the 3D model of the cartoon character guy you saw in the 3D demo in this video.
@sarthakbhatt5661
@sarthakbhatt5661 8 месяцев назад
I am not into game dev but am a junior dev, i am trying to learn dsa and i really suck at it, the problem is i am old(22), all my peers are way better than i am with lots of cash any advice on how to just not think of myself as a dumb c*nt all the time?
@tedbendixson
@tedbendixson 8 месяцев назад
I'm not sure what DSA stands for. Data Service Architecture? I dunno man. 22 is not old. You aren't old until you get a cardiologist and they put you on statins so you don't get a heart attack (not speaking from personal experience or anything). I'm 40 years old. At 22, I was a snowboarding instructor and didn't program anything "real" until I hit age 28. You can learn anything at any age. I didn't seriously pick up game programming until age 35. Most of the work you're seeing took place in my late 30s while I was working a standard software job. I can offer this piece of advice. Oftentimes, fancy abstractions, "architecture," and "best practices" do more to muddy the waters than to help with actual understanding. You're probably smarter than you give yourself credit for, especially when you clear away the bullshit.
@sarthakbhatt5661
@sarthakbhatt5661 8 месяцев назад
@@tedbendixson thx man, I was talking about data structures and algorithms. I want to learn them to become better, doing a lot of leetcode 1 year and 400 problems later I am still lost, I think I have to start from the fundamentals this time, like learning to implement a heap myself rather than using built-in DS to solve problems on it. Perhaps if I give it another year I'll be good enough for Maang. It's just that I solve a problem and a week later I forgot how I did the damn thing in the first place and then I feel awful if I keep notes I feel like I am memorizing them. It feels excruciating.
@tedbendixson
@tedbendixson 8 месяцев назад
I'm not sure. I use data structures and algorithms in my projects, but I was never the leetcode grinding type. I only like to learn things if they can help me with the thing I am currently interested in building, not to pass some test administered by some self-proclaimed in crowd. What language are you using? C? I do think it helps to work on data structures and algorithm problems in a lower level language that gives you direct access to memory with pointers. It's more direct that way. You realize the nodes in a graph actually have to live somewhere in memory, that you can access them like you would an array, and that a pointer to a node is just the address of that node in memory, but you could get to the same spot by indexing into the array. The last thing I would try to do is use an object oriented language like Java to do those kinds of problems because so much of the real work is hidden behind the abstractions. You end up fighting the language.
@sarthakbhatt5661
@sarthakbhatt5661 8 месяцев назад
@@tedbendixson I mostly use Java and JS, full disclosure, I work as a junior React dev, and I like the work I do but to earn more I have to do the damn things, I like the ds and the Algos but I hate the puzzle part, it's not like I don't work hard, I sleep not more than 5 hrs every day, still the horrid thing is eluding me.
@tedbendixson
@tedbendixson 8 месяцев назад
Here's my quick prescription for you. First, take better care of your health and sleep more. Eat healthy, all of that. Your health is your number one asset in life. It goes, you go. Next, find a project you are actually passionate about, not just something that will earn more money or impress your parents. Once you find that project, try working on it with a lower level toolset. For me that's games and C++ is the lower level language. You aren't getting much real world exposure to data structures and algorithms in your React job because React is a super high level bullshit framework designed to make everything as convenient as possible so employers can hire less skilled people for the roles, to pay them less and make them more replaceable. So do as little as you need to do to get by in your job. It's not setup for actual career growth. Once you're actually using data structures and algorithms in real projects and in lower level languages like C, it becomes much easier to understand the principles guiding how they work. It should make your leetcoding easier, which should help qualify you more for MAANG jobs. In my experience interviewing with Apple, they wanted someone who can work with C++/Objective-C/Metal all together in the same project, someone who knows the lower level pieces and how they work together, not someone who simply knows how to throw an app together using SwiftUI. Those are a dime a dozen. So if you could, for example, make a Mac app without using any of the project templates or UI frameworks, that's the kind of thing Apple would be interested in.
@meucanaldegamenoyoutube
@meucanaldegamenoyoutube 8 месяцев назад
Good job. I'm following your handmadehero series on MacOS. It's helping me a lot. One question, your game on Steam is branded: OS: Windows 10, won't it have a macOS version?
@tedbendixson
@tedbendixson 8 месяцев назад
It will have a Mac OS version. Catalina and above, I believe. I've been doing some work to pull that OS version further into the past. Care to share what you're running on?
@meucanaldegamenoyoutube
@meucanaldegamenoyoutube 8 месяцев назад
​@@tedbendixson Excellent! I'm using your videos along with Casey's to build my engine. I'm an iOS and Android developer from Brazil and passionate about the "from scratch" philosophy. I'm working to understand how things really work. Learning a lot with C++, Objc++, which brings me a lot of insights into the mobile world. I hope that one day you can do something similar to Casey, but with yours ideas and his way of teaching. I learn a lot. I would even pay for it haha. By the way, I'm using wine to run win32 inside macOS version. That way, I can learn with you and Casey same time! Sorry for my language, English is not my native language :)
@tedbendixson
@tedbendixson 8 месяцев назад
Would a paid course where I make a small game like Asteroids, from scratch, using just a Mac be the kind of thing you would buy? I want to create content like this, but I need to invest in a better Mac and have focused on other things, like releasing Mooselutions, for the moment. I could try and run a kickstarter for it, see how it does, etc.
@meucanaldegamenoyoutube
@meucanaldegamenoyoutube 8 месяцев назад
@@tedbendixson I see that each style of game is different, whether it's puzzle or action or fighting. But I believe that they all share the same architectural principle and correlation between parts of the code such as Entities, etc. This type of knowledge is very scarce and I believe that whether Asteroids or Jon's own Braid has unusual parts, don't you think? I believe that a person understanding this essence of how things work will be possible to create any game. I would pay for a series of videos that taught step by step, Casey's style. One day I'll finish his 600 videos haha But if you have something shorter in video sequence format, it would also help to have other views from other programmers.
@tedbendixson
@tedbendixson 8 месяцев назад
This is the really good thing about watching Handmade Hero. If you follow enough episodes, you eventually get more out of it than the ability to make just one kind of game. There's a skill set that transcends any specific game, the ability to build systems from the bottom-up through a process of experimentation.
Далее
Why You Shouldn't Make A Game Engine
25:39
Просмотров 14 тыс.
Has Computer Science Education Gotten Worse?
28:58
Просмотров 2,9 тыс.
100❤️
00:19
Просмотров 4 млн
БЫДЛО НА ПУНКТАХ ВАЙЛДБЕРРИЗ
13:26
How I Made a 3D Platformer in 2D Game Engine
21:23
Просмотров 442 тыс.
The most important article on software development ever
46:27
Optimizing my Game so it Runs on a Potato
19:02
Просмотров 468 тыс.
What is the Smallest Possible .EXE?
17:57
Просмотров 225 тыс.
I Remade My Scratch Game in Godot
10:04
Просмотров 344 тыс.
I Optimised My Game Engine Up To 12000 FPS
11:58
Просмотров 579 тыс.
Dear Game Developers, Stop Messing This Up!
22:19
Просмотров 690 тыс.
How to make your game 2X as fun! - (In No Time.)
6:11
Просмотров 262 тыс.