Edit: The reason I made this topic was the start a discussion about the often understated, nitty gritty details of how games are made. As I said, I feel that I’ve wasted years that should have been spent learning to code. Nobody ever told me that games are basically no different than any other programs. I thought that some magical program was going to come along and that it would make my game for me, I thought that was what Unity and Unreal Engine were… Nobody ever said this was going to be work. I’m
passionate about telling newbies “Look, it’s not fun. But if you’re serious, this is what it’s going to take…” And I would tell every one of them that you sukrainehould start by learning C because you will have to understand computer memory to ever be a programmer worth a damn. Until you understand computer memory, it’s pointless to even try to learn C# because you’re going to get so many Null Reference Exceptions you’re going to need a therapist. The industry has one common entry path… education system, I get that. But for those of us who grew up poor or came from areas where kids carried more weapons and drugs than school supplies, it would be great to have a sign posted that says, “You must be this competent to ride.”
Original:
Here’s the thing, I’ve been circling the task of “making my game” for so many years now and I just haven’t been able to get my arms all the way around it. I’ve started a lot of little projects but then they always tend to bloat and become overly complex and then die on the operating table. Granted, I’ve spent the most of the last decade focusing on other things (family, my job, etc.) but in the last few months I’ve buckled down and done a lot of reading and study on the subject of games, programming.
I’ve gotten to the point where I think I get it.
Games are just very large pieces of software that don’t conform to the same rules as other software. Instead of a static interface whereby users manipulate data, you have a moving interface where all data manipulation is done behind the scenes, or is in effect “hidden” from the user so as to allow for the illusion of some simulated world view. Sounds complicated, but its actually simpler when I view it this way.
What I have struggled with is that computer games do not serve a functional purpose and therefore do not follow the whole “everything is a solution to a problem” paradigm. Which sucks, because that’s exactly what 100% of all programming languages are designed to do. Solve problems for businesses. Compute. Manipulate data.
It’s almost humorous to me, though, to think that every single person who ever built a computer game is basically abusing the computer. We’ve taken the most sophisticated piece of equipment mankind has ever devised and turned it into a slave for our own amusement.
But I digress, I am specifically considering the large number of games I have seen over the years that never made it to project completion or saw any sort of successful commercial release. I don’t think the designers were lazy or anything, but that the common view of game development as being something you just “dive into” and learn as you go is perhaps a bit misguided… its like diving into the construction of a jet fighter. It’ll work out, if there’s any problems just “wing it”… amiright?
Anyway. I just recently got done learning about the origins of c, where c++ came from, other programming languages and just computer software development in general and I think there’s a huge lack of appreciation for how blessed we are to have OOP languages, extension methods, lists and arrays, dictionaries… binary serialization with a few simple lines of code.
I believe I have found the solution to my problem in finally viewing the entire game as just a piece of software and nothing else, at all. No different than any other kind of software (except that it doesn’t yield any useful output).
I looked up software layout and found a way of designing a piece of large, confusing software in modules, through a process known as step-wise refinement. Just so happens to be a perfect fit for C#, which I’ll be using.
I’ll accept any thoughts, advice or whatever I’m seeking additional tips as well as I prepare to tackle this beast.