Development Journal

October 11, 2020

Today I re-started my Unreal Engine education. Since it's dangerous to talk about things that haven't been done, I won't say much more than that.

The fear is palpable. I've said it before, I'll say it again: game development is a death march across a hellscape. All throughout my 7-year career as a full-time independent developer I believed that it would be possible to craft a fantastic game on evenings and weekends. I also came to believe that the 70-odd thousand Canadian dollars I'd spent on a formal education in game design had been largely wasted. The more games I made, the more I realized that I was relying on Google search results over what I'd learned in school. I felt that a dedicated individual could teach themself how to build a game. I guess this current endeavor could be classified as an "experiment" to prove my theories wrong or right.

I haven't made a game in over five years. I don't know if I'll end up making a game when I'm done with whatever this is. Only time and effort will tell.

Completed today:
✔ Introducing Unreal Engine
✔ A Tour of the new Unreal Engine Learning Portal
✔ Your First Hour with Unreal Engine

October 12, 2020

I should probably be timing my progress through the Unreal learning modules. I believe I spent around 4 hours studying today. I watched all of the videos at 2x speed, and scored 100% on the quizzes. It's a pretty nice system, and so far the modules have been mostly review. Turns out that, despite my best efforts, I've retained a lot of prior gamedev knowledge. It also helps that the Unreal Engine hasn't really changed all that much in the last 5 years.

Just think of all the games that could've been made in that half decade of feeling sorry for myself. Perhaps it's best to just not.

On a non-Unreal related note: I'm leveraging my current status as a student to take advantage of the free Substance licenses. If you're not familiar, they're texturing products that I used throughout my entire career and I always found them indispensible for producing the highest quality "skins" for my 3D models. I'd had no idea that Allegorithmic had sold out to Adobe, but it's fine. Free is free.

I think to get a little more well-rounded with this re-integration into the development pipeline I'm going to start balancing the time between Unreal and 3D modeling. To that end there's a bunch of 3D tutorials I have kicking around that I never completed, mostly because I felt like I knew everything they had to teach. There's actually one in my Steam Library, a grenade model, that I might as well do.

Completed today:
✔ Getting Started in Unreal Engine (Learning Path)

Tomorrow's plan:
Start Unreal Engine Kickstart for Developers (Learning Path)
Start Ultimate Grenade Tutorial
Watch Substance in 3DS Max (Foundation)
Watch Substance in Unreal Engine 4 (Foundation)

October 13, 2020

Woke up to thunder and rain, so I brewed myself a cup of lemon tea and dug into Substance. The plug-in stuff for both 3DS Max and Unreal was straightforward, though I don't know how much I'd use the Max pipeline. It did introduce me to Arnold rendering, something I'd never done in Max before. The Unreal plug-in works, and it works well. I was also pleasantly surprised to learn that the big Substance packs I'd previously acquired were all still on my licensing page in my account. There were also a handful of substances in the Substance Source panel of Unreal. I almost crashed the editor logging in, though. It just took a little patience for everything to recognize. Without going any further I can already tell that my old pipeline of concept > Max > Painter > Unreal is going to work as expected, if not better. I think Substance integration in Unreal wasn't the greatest 5 years ago, although I don't recall diving too deep into it.

The bulk of the day was spent swallowing the Unreal Engine Kickstart for Developers (Learning Path), and I gotta say that it's really well done. Epic has managed to simulate a classic-style higher ed course with this one, and the way it's broken down is excellent. It's a lot like drinking from the water hose, and I'd recommend that anyone interested in what Unreal Engine has to offer start here. The main course lectures are an hour long each, and I didn't have to take any notes to pass the quizzes. It's interesting, too, that a student has to get 100% pass on the quiz before the next segment unlocks, so there's a real sense of progression. This course is also filling my head full of ideas for games, and reminding me of all the projects that I started when I was full indie and never completed.

To break from the force-feeding of Unreal, I acquired an educational copy of 3DS Max 2021. Max has always been my weapon of choice when it comes to building 3D models. I actually first cut my teeth on Maya when I took a year of Foundation Art & Design at Vancouver Film School, but when it came time to take the Game Design degree we got Max. I like both programs. Heck, I've even spent time with Blender. But Max was where I've completed the most work, have the best workflows, and just feel the most comfortable. Best of all, I trained myself to use (mostly) the default key bindings, so a lot of the muscle memory is there.

As an exercise, I pulled up an older tutorial I'd gotten through Steam. It's not a beginner-friendly tutorial (despite purporting to be) but it's been ideal for jumping back into Max. It was exhausting, though, and I only ended up doing about an hour's work before needing a break. I'll pick it back up tomorrow and really work hard at re-acclimating myself to the workflow. It shouldn't take much.

Completed today:
✔ Substance in 3DS Max (Foundation)
✔ Substance in Unreal Engine 4 (Foundation)
33% Complete - Unreal Engine Kickstart for Developers (Learning Path)
10:51 of UGT - 1. 3DS Max Modeling - 1.1 (Grenade)

Tomorrow's plan:
Look into Megascans Unreal Engine plug-in
Continue Unreal Engine Kickstart for Developers (Learning Path)
Continue Ultimate Grenade Tutorial

October 14, 2020

I was tired all day. I took a look at the Megascans Unreal Engine plug-in, and the tech seems solid. It's always been a bit of a pissing contest between Substance and Quixel. Both tool suites have their uses, and before Substance Painter was ever a thing Quixel had a superior product. They've since discontinued their version. Either way, I was able to install the Megascans plug-in but I didn't have the energy to mess around with it. We'll try for that tomorrow.

Other than that, just never quite got into the mood or the groove for the gamedev. The season is changing, and October's always been a hard month for me. I'll get to sleep early tonight and attack the day with unbridled ferocity tomorrow. On the plus side, I've come into quite a bit of cash this week for my ongoing education efforts. It's funny how a positive cash flow does wonders for the overall anxiety levels.

Completed today:
✔ Installed Megascans Unreal Engine plug-in

Tomorrow's plan:
Continue Unreal Engine Kickstart for Developers (Learning Path)
Continue Ultimate Grenade Tutorial
Do a few paints with Megascans in Unreal

October 15, 2020

Despite the siren call of the Call of Duty: Black Ops Cold War beta I managed to knuckle down and get some stuff done today. The energy levels were much better than yesterday, and I believe it's due to getting almost 8 hours of sleep. I keep saying that sleep is the primary pillar in the "good health temple", but often fail to practice what I preach.

The Megascans pipeline took a bit of work to get going, but once it was in place it was very straightforward. The raw use of scans seems very resource intensive, however, and I'm not sure how useful it'll be for games. For fast texturing with some fun little worldbuilding aspects, though, it's a great tool to have under the belt. Here's an example of 10 minutes of effort:

10 minutes of work with Megascans vertex painting in Unreal Engine

Also made some headway in both the Kickstart and the grenade, so all in all a pretty good day for progress. It's not much to look at, but it's taking shape:

Stage 1 of Ultimate Grenade Tutorial

Completed today:
✔ Do a few paints with Megascans in Unreal
56% Complete - Unreal Engine Kickstart for Developers (Learning Path)
UGT - 1. 3DS Max Modeling - 1.1 (Grenade)

Tomorrow's plan:
Continue Unreal Engine Kickstart for Developers (Learning Path)
Start Ultimate Grenade Tutorial 1.2

October 16, 2020

Path and purpose. This is what I'm feeling as I re-embark on the gamedev journey. The road ahead is clear, the milestones marked on the map, and the destination well-known. All that I have to do is keep moving forward and we'll get there, eventually.

Though it wasn't part of today's plan, I decided to pull Tekinbas and Zimmerman's "Rules of Play: Game Design Fundamentals" off the Dark Acre bookshelf and re-start it as well. It was one of the few things of value I got with my official game design education. A fantastic book that's still very relevant today, and contains enough to give even the most clueless game designer some direction.

I took a short detour mid-way through the day's Unreal classes. There was some mention of the new Niagara particle system that replaced Cascade, the last one I was familiar with. I did a quick Google search for "create smoke in Niagara", and that led me to a series of tutorials that produced these results in roughly 30 minutes:

Results of Unreal Niagara smoke tutorial

I think it's important to not slavishly follow a regimen of learning materials when you've got the freedom to deviate whenever you want. This was a good example of that; a quick application of some inspired desire to learn a very specific thing. It also highlights the fact that a Google search can indeed produce real in-engine results in rather short order.

The Unreal Engine Kickstart for Developers was really great. It's not a tutorial, or even a hands-on kind of thing. It's just two developers discussing the history and present status of the myriad systems that make up the tools. It was refreshing to get this comprehensive "surface scratch", and I think the takeaway is that there's a lot of stuff going on under the hood. It's definitely inspired me and highlighted which aspects I need to focus on. Blueprints and Character really stood out as areas I want to explore.

Jack's record of completing the Unreal Kickstart course

Unfortunately, no time allocated for 3D modeling today. Will start tomorrow up with the grenade.

Completed today:
✔ Rules of Play, Chapter 1
✔ Simple Niagara smoke in Unreal Engine
✔ Unreal Engine Kickstart for Developers (Learning Path)

Tomorrow's plan:
Start Exploring Blueprints (Learning Path)
Start Ultimate Grenade Tutorial 1.2
Read Rules of Play, Chapter 2
Read Greg Costikyan's "I Have No Words & I Must Design"
Read Chris Crawford's "The Art of Computer Game Design"

October 17, 2020

Good sleep really makes all the difference. Woke up this morning, had a quick round of Modern Warfare before getting back to the grenade.

I really wouldn't call Bergholz's tutorial a good resource for learning how to model game-ready assets. There's a lot of shortcuts happening here. I'm tempted to override his instruction with my own good habits, but I've been sticking to following his method. It's not a terrible practice to imitate another artist's techniques, but be aware that they may not be engaging in best practices. The use of the Chamfer modifier beneath a Turbosmooth in the stack is actually interesting, as I was used to hand-chamfering all the edges of my low-poly models to prepare them for high-poly. I recall another technique, though, that lets you jump from low to high without any intermediary chamfers. It involved careful use of smoothing groups, and I'm going to have to dig up either my old notes or try to remember the tutorial I followed years ago to acquire that workflow. At any rate, after a couple of hours we're at what Bergholz calls "ready to high poly model":

Front, top, and left views of an untextured low poly model of a hand grenade

I'd never read Costikyan's essay in my previous time as an indie, and I hadn't needed to. But reading it now served as a great reminder of what game design is. There's an excellent definition of what a game is in there, "an interactive structure of endogenous meaning that requires players to struggle toward a goal" (p. 24), and the overview of Matt LeBlanc's taxonomy of game pleasures (pp. 36-30) was not so much eye-opening as eye-rubbing. I'm not one for the academic side of games; it's hard for me not to feel overwhelmed by the pretentiousness of it. But there is value in these readings, if only to see things from the viewpoint of those who've dedicated themselves to the granular study of the field. Always remember that there's a huge divide between talking about a subject and actively engaging in practice, and be wary of those who talk more than they act. Costikyan, to his credit, has done quite a bit.

The start of Crawford's "book" on game design is an interesting fish. Written in '82, it literally describes computer games as a "fad" (p. 3). That should tell you what kind of terms are being brought to the table. Crawford's story as a game developer is fascinating. He was one of the first to gain some notariety in the field, and produced several commercially successful games. I think this may have gone to his head just a little. He believed very strongly in a formula for producing hit games, and if anyone tells you they've got the secret sauce like that it should start alarm bells ringing. He dramatically "retired" from commercial game development during an impassioned presentation where he likened games to a dragon, and saw himself as some kind of knight errant out to slay the impossible. At any rate, the first chapter was an interesting look at how he defined games. Whether those definitions still stand nearly 40 years later is a question I'll leave to more academically-minded readers."

Chapter 2 of Rules of Play boiled down to distinguishing the difference between game design and game production. It highlighted the importance of iteration, or the cycle of design > play > design to determine what's working for a given game. This was one of the things that Vancouver Film School managed to drill into my head, so the chapter was pretty easy reading. And I do still agree with this. It's critical to get a working prototype up and running and have as many people as humanly possible testing it early in the production. I had brief flashes of confidently launching something into Early Access on Steam, fully justified that I was making proper use of the system for iterative purposes. It would be amazing to reach that stage.

I'm going to have to leave some time tomorrow for providing feedback to my fellow creative writing students. While I'm supremely motivated by this whole game development undertaking, I can't lose sight of what's still putting rent money in my pocket.

Completed today:
✔ Ultimate Grenade Tutorial 1.2
✔ I Have No Words & I Must Design
✔ The Art of Computer Game Design, Chapter 1
25% Complete - Exploring Blueprints (Learning Path)
✔ Rules of Play, Chapter 2

Tomorrow's plan:
Continue Exploring Blueprints (Learning Path)
Start Ultimate Grenade Tutorial 1.3
Read Rules of Play, Chapter 3
Read The Art of Computer Game Design, Chapter 3
Read "Rules, Play, and Culture: Towards an Aesthetic of Games"

October 18, 2020

Unreal Engine has a visual scripting, node-based programming "language" called Blueprint. It's a graphical abstraction of C++, and it's very powerful. It makes it possible for a solo developer to create a fully working videogame without writing a single line of code.

When I was first introduced to coding for videogames back in the 2nd month of my Vancouver Film School game design education, I immediately became obsessed with learning how to program. I fell in love with the absoluteness of it. You may have heard the phrase "garbage in, garbage out", or GIGO, when it comes to instructing a computer to do something. What this amounts to is "if you give the computer bad instructions, you'll get bad results". This means that there are ways to program well, and get great results. The trouble with "classical", non-visual coding, is that there are an insurmountable number of rules that you have to learn and abide by in order to produce this "holy grail" clean code. Especially when starting out, and having the goal of "produce a working videogame" supercede that of "write clean code", most neophyte programmers end up with "spaghetti code". Broken (but often functional!) instructions that actually make things happen on the screen. It may surprise you to know that the vast majority of enterprise-level programming is this way. The systems that run banks, hospitals, military defense, and other critical aspects of society are all built on foundations of toothpicks and popsicle sticks held together by chewing gum and rubber bands.

So chasing the ideal, clean code is a pipe dream. We end up settling for whatever works, and in doing so sabotage our future selves with unmaintainable and inflexible code. One of the key things about good coding is that it can be reused and repurposed if written well. So there's all these caveats, rules, and best practices that take years of dedicated learning and revision to nail down. In my 7 years of writing games "by hand" in C# code, I never reached that level of proficiency.

Fast forward to the 3-ish years I spent learning actual computer science. While I never graduated, I did manage to put some best practices under my belt. I learned how to properly manage memory, how to format my code to make it human-readable, and how to properly test and document my programs. One of the biggest hurdles that I had to jump, and one that I see so many others trip over, is the vocabulary of programming. What's a method? How is that different from an algorithm? What's inheritance? It's kind of shocking how (and I want to say easy, but it's not really easy) much less painful the process of learning to code becomes when you open your mind to the vocabulary. Being commited to learning what the different accepted terms mean makes all the difference in the world. It's like any esoteric pursuit, and make no mistake: programming is an arcane art with its own language and passphrases that one must make second nature in order to effectively communicate.

So where am I going with all this? Well, Blueprint makes coding somewhat easier to comprehend for the visually-minded developer. Yet it has the same fundamental caveat that "classical" programming comes with: you gotta learn the darn language. Know what the various terms mean, and how they modify each other. I don't believe that this practice takes forever. I think a dedicated student of visual programming can become proficient with the right mindset and attitude. Heck, that applies to most disciplines. With where I'm at now, in this new approach to game design and development, I'm committed to getting Blueprint in the toolbox. And so far the available learning resources have done a fantastic job of lodging it in there.

Lantz and Zimmerman's essay on game aesthetic almost immediately uses the term "rhizomatic" (p. 1), meaning "a philosophical concept developed by Gilles Deleuze and Felix Guattari, used to describe theory and research that allows for multiple, non-hierarchical entry and exit points in data representation and interpretation." That should give you some idea of what you're in store for. I'll never understand why so much academic writing has to go so far overboard with the use of high-falutin' words. Abstracts, or summaries, are even worse offenders! Something else I'm learning while absorbing the written side of game design is that most of these writers are terrified of commiting to their ideas. Many of the proposed definitions for what games are and how they contribute to society are prefaced by "these [definitions] are not absolute or distinct" (p. 2). Listen, I get that you're dealing with theoretical propositions, but by disclaiming every idea put forward all that you accomplish is weakening the position. But again, I'm not an academic and I'm kinda hateful when it comes to this sort of stuff, so take what I say with a grain of salt.

I don't know when the essay was written, but it mentions that computers have yet to master the game of Go. Google's DeepMind AI beat Lee Sedol back in '16. This is not to undermine the point being made: that when simple rules are iterated across a playfield they increase the amount of complexity in a game (p. 4). Later, the paper asks "should we consider Quake as the ultimate embodiment of male computerdom's phallocentric obsessions?" and "[is Quake the] ironic product of a generation of young men with no war to fight?" (p. 7). This is invariably where academic investigation of games goes, and it's not territory I wish to walk upon. The more I read introductory academics of game design, the more it seems like importance is being placed on having a definition of "game". What is "game"? How does "game"? Why does "game"? And while I think it's important to have a personal set of definitions that try to answer these questions, I believe there is no universal answer, just as there's no "allgame for everyone". When the end product becomes a communication between a designer and players, just as how a book is a communication between a writer and readers, or a movie a communication between a director and an audience, there are far too many vagaries involved to real nail down a hard and fast ruling on "game". There are only brief alignments of ideas and ideals. To me, the discourse is as uninteresting as hearing about someone's thoughts on religion, or their ideas about what constitutes art. And of course this is hypocritical when weighed against my complaints that these writers disclaim every definition they come up with, but that just serves my point. Doesn't it?

The paper closes by admonishing the god-like game designer to "explor[e] the experiences of games [by] taking fun seriously". I went for a long run in the rain after closing the document.

The 3rd "chunk" of the Exploring Blueprints learning path was the first hands-on tutorial I've come across. It was very well structured and in about 90 minutes I had a great refresher on how to build user interface in Unreal. The UMG (Unreal Motion Graphics) UI designer is really powerful. I never got a chance to deploy a working Unreal game when I was (last) an indie, and for my Unity game solutions I'd always relied on Aren Mook's "NGUI". There are a lot of similarities between the two tools, but right off the bat it feels like Unreal's is more user friendly. It's the Blueprint integration that really seals the deal. UI/UX is a whole discipline unto itself, and I've always treated it as such. I'm really looking forward to crafting more UI as I start in on some actual projects.

Grabbed some Chinese takeout but only had appetite for a little. I'll save health-related stuff for a separate page on this site, but I'll mention that I've been really buckling down on the calories. I've been stuck at 101-103 kilograms for about month now, and it feels like I should get more aggressive with the diet and exercise. At any rate, after a quick dinner I stuck back into the grenade tutorial and realized that the whole bottom section of the body was messed up. After meticulously cleaning the vertices and faces I was exhausted, so I called it a day there.

Completed today:
✔ Rules, Play, and Culture: Towards an Aesthetic of Games
75% Complete - Exploring Blueprints (Learning Path)
10:08 of UGT - 1. 3DS Max Modeling - 1.3 (Grenade)

Tomorrow's plan:
Continue Exploring Blueprints (Learning Path)
Continue Ultimate Grenade Tutorial 1.3
Read Rules of Play, Chapter 3

October 19, 2020

I purposely gave myself an "easy" day for today, yet after finishing the morning's Twitch broadcast and doing a 400-calorie run I was exhausted. Took the rest of the day off from development and watched some of Tarkovsky's "Stalker". Interesting film.

Tomorrow's plan:
Continue Exploring Blueprints (Learning Path)
Continue Ultimate Grenade Tutorial 1.3
Read Rules of Play, Chapter 3

October 20, 2020

Jumped right back into Exploring Blueprints and made a fair amount of headway. Because it's the first "hands on" tutorial, there's a lot of stop-start going on: watch a bit, do a bit in the example project, watch a bit more. This makes for a slower pace than simple absorbing and answering quizzes. One new thing I've found is the ease with which we can now import .csv (comma-separated value) data sheets into Unreal. It used to be a real headache, one I ended up breaking down in a YouTube tutorial. That tutorial is now woefully out-of-date, given the new system. Basically, a developer can create a spreadsheet of data, export as .csv, then drag-and-drop into the editor. That data is then easily accessible to Blueprint. I had some specific needs for this in my last few designs, mostly in dialogue and item descriptions. I'm looking forward to using this once more.

Mid-morning I got inspired to write a short essay on my feelings about the way player progression and the new player experience is handled in Call of Duty.

The more I follow the UGT, the more frustrated I get with the way it's delivered. I'm now in the UV unwrap process. This involves mapping the surfaces of the 3D model so that when a texture is applied it "fits", i.e. not stretched or distorted. It's a complex procedure and one for which I had a really good workflow. The one presented in the UGT is convoluted and, for lack of a better term, weird. I'm tempted to skip through it, but I feel the need to stick with it and get it done. I think to offset some of the frustration, I'm going to do some simple models of my own.

Chapter 3 of Rules of Play boiled down to "the goal of successful game design is meaningful play" (p. 33). I like how this is a multifaceted axiom, too. Play can have meaning on many levels: to the player, the the observers, and to the culture that surrounds a game. Also the moves a player makes in a game should have meaning. The systems that wrap the game up for player consumption should mean something, as in they should be understandable to the player. I'm just glad this chapter was short and to the point.

Completed today:
✔ Exploring Blueprints (Learning Path) - Configurator Part 1
✔ Rules of Play, Chapter 3
✔ Analysis Essay: Call of Duty Progression

Tomorrow's plan:
Continue Exploring Blueprints (Learning Path)
Continue Ultimate Grenade Tutorial 1.3
Read Rules of Play, Chapter 4