But what I lacked was the intestinal fortitude to stick with it and push myself beyond that threshold of understanding; that point where my brain and experience connected the various different nodes that comprise the world of programming languages.
I owe it to myself to consider my circumstances, of course. I was raising two children (and still am), in the middle of a Bachelor degree program (that I was partially using game design to distract myself from), serving in the National Guard, and trying to be a good spouse. I did not serve any of these roles very well, as I had gotten in the habit of seeking distraction whenever the going got tough in one of these areas of my life. I am, as are we all, incredibly flawed, but this cycle of distraction and aversion was beginning to wearing on me.
I followed several tutorials, writing every line of code myself, but I was copying a tutorial, and at the end of the day I felt like I retained nothing. And I was right, I hadn't.
However, just this morning u/PMacDev, commenting on my own reddit post about designing a curriculum of study for myself, said this: "Don't get caught in tutorial hell, try to apply the tutorials to a project that you are working on."
Now, I've already decided to take another crack at this game design thing, which means learning how to program. But tidbits of advice like this are what I love the internet for; u/PMacDev, who wrote a great blog post about a game building experience he had with Unity, brought me to a small, but crucial realization that fundamentally changes my approach to my current path of study in a positive way.
This brings me to the point of this post: Choosing a path. There are many paths to tread in this journey, and I will be typically be treading multiple paths at the same time. Because this journey can be so branching and complex, it's important to choose the right paths to travel and learn to recognize and make corrections as quickly as possible.
One of these branches is of course, choosing the right engine. In a video by Ask GameDev, they warn aspiring developers against trying to create their own game engines. I, for one, was shocked to hear this is a frequent mistake. I can barely grasp the concepts behind printing "Hello, world!" to the console, much less creating the framework for developing my own game on top of developing my own game.
As such, it's advice I have no shame reiterating, even as a total newcomer: Do not try to make your own game engine. lol
How to make such a decision is one of the hardest things to figure out, as it relies on commitment (my biggest issue to date). Unity relies on C#, Unreal Engine 4 relies on CPP, and too many of the reviews I come across boil down to "Well it depends..." and lists of general strengths and weaknesses. So instead I began researching the actual genre I was hoping to break into: Real-Time Strategy. Many articles over the last ten years have been lamenting the rise and fall of this beloved genre, but I firmly believe that new life can be breathed into it without relying on the complexities of 4X / grand strategy like Paradox Interactive's extensive list of games (as fantastic as they are) or inversely whittling down the genre to what amounts to little more than Real-Time Tactics where the player is as responsible for dictating which enemy to destroy as they are which bail of hay Peasant #23 should harvest next.
Determining what the strengths and weaknesses of the RTS genre are is as important as figuring out what I personally want to bring to the table in my own design when it comes to selecting an engine.
I have probably already bitten off more than I can chew of course. I'm selecting a genre that thrives on multiplayer capabilities, an outrageous feat for a newcomer like myself, yet I can hardly eschew the idea of implementing such a feature entirely. My alternative is crafting deep-thinking AI, an equally daunting task.
While Unreal Engine 4 may boast some very attractive features, for instance, it is also infamous for shoddy documentation regarding it's use of CPP. As a newcomer, is this a learning curve I want to risk climbing?
I must confess, these mountains have driven me to consider lesser factors, such as graphical qualities of the various engines, as well as what base level tools they support that may cut down on my workload.
What I know I need to do is stick to my core values, and yet I keep finding myself fantasizing about crafting a graphically beautiful RTS that is as fun to play as it is to look at. These things are likely not possible where I stand, so I am considering sidelining most visual elements in favor of text and simple maps and imagery to guide the player and give them a platform for making decisions.
And this brings me back around to an unfortunately less-than-helpful truth: A lot of it does "depend." Experimentation with multiple engines as I learn programming fundamentals is likely to yield better results for me to base a decision on down the road, as opposed to feeling like I have to make an absolute decision now, before I've even gotten started.
For me, I go back to u/PMacDev's comment: I'm going to take tutorial knowledge and apply it to my own little projects. Piece by piece I'll figure out which engine best suits my goals as I use these experiences to refine what those goals are to begin with. And that brings me back to the creation of my own study curriculum.
Thank you for reading.
What are your thoughts on the various strengths and weaknesses of available engines, insofar as their relation to the different genres we all know and love? I would love to hear people's thoughts, no matter how experienced or inexperienced you are in dev.
Cheers and beers,