16 hours ago, M-Ody said:
I really like C and I think is an amazing tool. People say it is less productive, and while that's definitely true in the sense of how much you can do in a day, I lose a lot of time on Unity just to make a game that doesn't trigger garbage collection every now and then. But then, I may be just an orthodox programmer.
I will look into your suggestions of course, but you really think that HMH has no point in being watched? Casey states very early that he doesn't think you need to do everything from scratch every time, but he thinks you need to do it once so you know what the frameworks/engines you use do.
I think you may have more disregard from people who think that what Casey does is what a real programmer does than from the things that Casey teaches.
To summarize what you say, you think I should code on something that gets the job done, focusing in productivity and in shipping the game?
I don't want to invalidate your point, just trying to keep the discussion going.
cracks knuckles
Alright, let's talk seriously about what it means to roll your own. For context, I've worked at Microsoft and had access to the Windows source code. I've worked at NVIDIA and had access to the D3D driver source code. I'm software architect of a group which has a completely C++ tech stack which is essentially custom, save a few helper libraries that are part of it. I say this only to provide some context for where I'm coming from - rolling your own is a very familiar world to me. I'm going to ignore Casey/HMH from here on out because I don't care enough about him to say more on that subject.
15 hours ago, M-Ody said:
I know I should be able to answer this question, but I don't. Of course I want to make games and of course I want to know how a game actually works!
That's great. Do you have time to do both? More on that in a moment.
15 hours ago, M-Ody said:
Speaking of C/C++, do you recommend a lib/engine that's not too big like Unreal but not too bare bones like SDL?
I'm a little concerned that you don't actually know what you are trying to accomplish here.
In general, there are two ways to come at building games. You can start with something very high level and learn all about how to structure the high level structures of a game, filling in low level knowledge over time. Or you can start very low level with the individual pieces, eventually figuring out how to connect them into a working whole. Both are perfectly valid approaches, but it's very difficult to accomplish both missions simultaneously. The people we're talking about in this thread have many years of professional experience under their belts, and are usually doing this in their spare time too.
You can choose to roll your own tech, as we did, and it can pay dividends long term. But that choice will kick your actual game back by years, especially if you're still learning the fundamentals as you do it. Witness was mentioned above - that game took eight years and an ultimate team of 15 people to create. So it becomes necessary to decide what your priorities are, because we're no longer talking about short term gratification. You've demurred on that choice so far, though I like @MonterMan's comment on integrating outside libraries, particularly open source ones. I don't like the concept that some stick to of not having dependencies, because that's not reality. You always have dependencies, you're just choosing not to acknowledge them. The OS and platform SDK, the graphics API and drivers, the C++ runtime, etc. I just include the dependencies in the source tree whenever possible, rather than doing package manager stuff.
At the end of the day, you're going to have to decide that you're writing some part of the system yourself, and some part just already exists there for you and functions in its own mysterious ways. There are many places to draw that line, but you should have a good understanding of why you placed it where you did and what the goals are. No matter what you choose, some things are going to be closer and some things are going to be farther away. It will take a long time to have both the low level and high level under your belt - and I have to mention that very few professional game developers ever do that. Most inhabit just one section of that world, relying on the rest of the team to build a complete product.