As my 3D modeling journey continues, I find myself getting closer and closer to a comfort level with adding my models into a game. The world of 3D modeling has been a complete mystery to me for a long time, so about a month ago I started a Blender course on Udemy. That course has, so far, focused entirely on rendering 3D models and has lacked any sort of mention about using 3D models in game engines. Though the course does promise to teach this process, I got antsy.
I recently completed a portion of the course in which I created a Chess set in Blender. The results are quite nice, I must say. Take a look for yourself.
Blender 3D Eevee Render of a chess set, with a focus on the KnightsBlender 3D Eevee Render of a chess set, with a focus on the KingsBlender 3D Eevee Render of a chess set from an above angleBlender 3D Eevee Render of a chess set from atop the Rook towerBlender 3D Eevee Render of a chess set as the black Knight stares down the white King
For these renders I decided to focus on the Eevee engine, instead of the Cycles engine. The Eevee engine is much less computationally expense, which will become very important as I start working with my models in Unity. Though Unity has it’s own lighting system, learning about non-ray-tracing engines like Eevee should help me better understanding the lighting methods I’ll use in Unity.
Once I had the models created, I felt compelled to put them in a game (see above: “I got antsy”). This lead me to search out some existing Chess game logic that I could use with my own models. This process required that I dig into someone else’s code in a way I’ve never done before. I’m teased apart bits and pieces of other people’s code, but never have I taken an entire project’s worth of code as both a starting and ending point. This lack of control, or maybe lack of insight, is very uncomfortable for me. I don’t like seeing something work while not fully understanding why it works.
This process taught me an important lesson: things move much faster when other people are helping.
After all, if I didn’t let the author of the existing Chess game logic help me with this project, it would never have become a project at all.
Head over to my Itch.io page to play my Chess game.
Lack of exposition + personal artifacts = introspective environmental storytelling. Gamifying the mundane. Anywhere decisions can be made (ex: where to place physical items in a room) a game can be born. (Unpacking). Shout out to Ian Bogost’s “How to do Things with Video Games.”
All characterization is with dialog, conversations with demons. Fiction writing rule: Dialog, not exposition, makes for the best characters. Show don’t tell. This game is a reminder that mechanics alone don’t need to bear the weight of a game alone; the “what a crazy character that is” appeal can support and, maybe even, still the show. (Shin Megami Tensei 5)
Obligation is inherently less motivating than discovery. Obligation lacks personal investment. (Mass Effect 2)
Music both directs and enhances the mood. Chill must support a chill atmosphere but also it provides feedback to the player that this is a game (or section of a game) that should allow for chilling out. Lack of enemies alone doesn’t signify a conflict-free scenario. (Valheim)
Pawns as a terrain generator. Live environment manipulation disguised as offensive actions. (Chess)
Character movement is the most important part of games in which moving a character is central to the experience. Duh, right? I’ll be refining movement in my next game for a very long time before moving on. This means the environment and puzzles I create will be anticipating the good movement, rather than possibly having been built with sub-par (ie, only suitable) movement in mind. (NieR Replicant ver.1.22474487139…)
One of the best TV shows of all time is Reno 911. It’s a mockumentary style series in which a squad of inept police officers in Reno, Nevada are followed around by a camera crew for…some reason. [1]btw, I am super happy that the mockumentary genre has so far avoided needing to justify the cameras. Somehow, this complete refusal to acknowledge the occasion, and instead fall hard into the ego … Continue reading
One of my favorite skits involves an apartment fire. A panicked tennant tries to convince police officers and firefighters to brave the burning building in order to rescue the only copy of his in-progress novel. This man’s life work is about to be destroyed.
This scene is a potentially heavy one wrought with questions about the frailty of a human being’s contributions to a world always trying to destroy them. Think about it: in one instant, this person’s entire record of being, his legacy, could disappear completely. In a way, destruction of a legacy is even more daunting than destruction of one’s own life. A legacy is forever. A life isn’t.
Instead, Reno 911, being a comedy show, pauses to allow the police officers and firefighters to consider the merits of the novel before deciding whether or not to rescue it. This forces the novelist to defend his work…which he simply cannot do. Over the course of the skit, the officers and firefighters ask questions that the author cannot answer. Simple questions about the book’s plot are met with the author’s deflated attempts to rationalize the book’s hackneyed themes. In the end, we see the author learn a valuable lesson, as spoken by one of the firefighters: “If you can’t get excited about your work, how can you expect anyone else to?”
If you can’t get excited about your work, how can you expect anyone else to?
This is advice I’d received in college (as I pursued an English Literature degree), but never really processed. Well, I guess I processed it, but in a way that I don’t think the advice intended.
In college, I took this advice to mean that everything I create should be so different and so creative that its novelty alone would inspire passion in both me and the audience. I reasoned that it’s easy to get excited about my work when the work itself is so…out there. And this worked…for me. For the audience? Not always. I was passionate, sure, but I was passionate for an idea that was difficult for an audience to care about. In other words, my passion was not contagious. The audience had no reason to engage with it.
Rather, the advice means something else, I think. It means that a creator should not avoid convention; a creator should instead be able to get excited about conventions and genre tropes. A creator should understand why conventions and genre tropes work and should use their creativity not to avoid conventions but to accept them for what they are and to build something special with them.
The novelist in the Reno 911 skit immediately deflated when asked to defend his work. He collapsed amid accusations of trite storytelling. Instead, he should have embraced the accusations. He should have defended his creative choices and his role in writing a novel that fits within expected genre tropes.
I think about this often when designing games. Sometimes I worry about “creating yet another platformer” or “creating yet another game with a humanoid player character.” And so I have to remind myself that platformers are great, that humanoid characters are great. The sign of a creative game maker with eyes toward a legacy isn’t about creating something brand new from nothing, but is about something so much harder and ultimately more worthy of praise: creating something brand new from something. Because with “something” comes expectations and opinions, and navigating those expectations and opinions to emerge on the other side with a product people love, now that’s something to get excited about.
btw, I am super happy that the mockumentary genre has so far avoided needing to justify the cameras. Somehow, this complete refusal to acknowledge the occasion, and instead fall hard into the ego mania of the situation, is funnier than any contrived justification could ever be.
My lamp model makes a comeback in this lesson! This time, it’s helping a golf ball reach the hole at the top of a stack of books.
I cheated a bit by looking up a tutorial on how to make the golf ball. And somehow, even with the tutorial, I managed to mess up the golf ball. The dimple pattern is weird in some places. But, I have to remember that golf is weird in some places. Looks like I just turned this bug (ugly ball) into a feature (ugly ball…because golfers like it that way).
Also, the transition from the cylindrical metal eraser ring on the pencil to the hexagon shape of the pencil is pretty jarring. I’m excited for future lessons where I might learn about ways to fix this.
A few things I learned while making this that I can apply to future projects:
Applying color early to a model can help identify geometry issues. I realized, very late in the project, that the spine of my hardcover book model doesn’t align with the cover, which causes a dark like (empty space) along the entire length of the spine.
When using the same base model over and over in a scene, think about whether the parts should be a single object or many. For example, with the books in this scene, I wasted a lot of time adding the Paper color material to surfaces within a single object. I probably should have 1) created a “paper” cube, 2) applied materials to that cube, and 2) THEN added covers of varying colors.
Desk Golf, a scene made in Blender 3D featuring a golf ball and his lamp friend measuring up to a hole at the top of a stack of books.
I call it “Lamp Lessons.” Because even non-sentient desk furniture should know to put pencils away when done with them. It seems the mom lamp is scolding the child lamp for some reason. Maybe the child lamp forgot to put the pencil back with it’s mate? How did the child lamp hold a pencil, you ask? Don’t ask. It’s rude.
Lamp Lessons
I took a short break after completing the donut tutorial to learn a bit about Unity’s Mecanim system. And a bit is exactly how much I learned. I feel like that despite the endless complexity the Mecanim system offers, I learned it more quickly than I was expecting. One short Udemy course does not make an expert, I understand, but I feel comfortable with that I know. Comfortable enough to move on and take another Blender course.
See, Blender, unlike Unity and the Mecanim system, is not coming to me quickly. 3D modeling is quite hard for me, actually. So, for now, I’m turning my focus to Blender with the hopes of coming back into the animation side when I learn how to create custom animation rigs in Unity. At that point, I think, the words of Unity and Blender will truly collide, and then I will truly be able to make some cool games.
Always follow passion. Right now, I have a passion to learn more about 3D modeling. It sure doesn’t hurt that I’m having a ton of fun doing it (Fun is the strongest direct motivator).
Teaching my own desk lamp to always put pencils back when finished with them
You know, when you’re watching a coding tutorial and you think things are going great? You’re even a few steps ahead of the instructor. The world is your oyster, and your oyster is a perfectly encapsulated method with no exception errors for miles. It’s a good feeling, right?
But then, the tutorial ends. You throw away your freshly coded pearl-making shell and decide to test yourself by building the oyster from scratch.
You freeze. What the hell was step one, again?
My first, and so far still biggest, frustration when learning how to make games is the post-tutorial paralysis.
As the steps come, those steps seem logical enough. Every instruction reads like a natural progression. Like chewing once and then chewing again. “Of course I’m meant to chew again; there’s still food in my mouth and chewing feels right.” Run that while loop until the food is masticated enough to swallow. There comes a point in all tutorials, about 75% through, when I think “if my internet went out right now, I could finish this lesson. I don’t even need the rest of this tutorial.” In other words, the tutorial has taught me that swallowing is the natural next step after making mouth mush.
But then I get cocky. I close out the tutorial and I try taking a bite all by myself. Suddenly, I’ve never held an apple before. I have no idea what to do first.
This post-tutorial paralysis still happens to me a lot, though thankfully, a lot less than it did when I first started learning how to code.
Part of this paralysis comes from the inherent problems with learning by tutorial. Tutorials are often meant to teach a specific task, not a general concept. I don’t advocate avoiding tutorials as a beginner. Task-oriented tutorials can still be helpful simply by their required exposure to a system. But it remains true that tutorials are designed to teach rote processes. Rote process isn’t very conducive to learning.
Tutorial paralysis is exacerbated by the near-infinite nature of task solutions. One tutorial “teaches” to bite an apple by applying pressure from your lower jaw while another “teaches” to apply pressure from the incisors, while a third says to rotate the apple 90 degrees along the x axis. As a beginner you fear there’s only one way to bite an apple, and to find that right way is a battle unto itself.
And if your task includes sounding like a douche every time someone says they are going to eat an apple.
So, maybe there isn’t a single right way! Freedom acquired, right?
Well, no.
This idea that this apple-eating program can be approached in infinite different ways only furthers my paralysis. Even with infinite possibilities, I still tell myself that there is one ideal way of doing a thing. If I understood the problem well enough, then there is still an ideal, right? Infinite solutions don’t restrict a perfect solution, right?
This is much scarier. Knowing that I’m learning from someone who may not know this ideal (or that, I am not smart enough to understand the problem well enough to know if this person is tutorializing to an ideal), is the blind leading the blind. I don’t know what I don’t know.
Over time, I’ve come to terms with this fallacy of the attainable ideal. “Attainable” being the key word. I still feel there’s an ideal; I’m just getting more comfortable with understanding that it’s unattainable. Or, if it is attainable, I’ll never know that I’ve attained it. I’m blind, but I know I’m blind and will never not be blind, so I accept my blindness.
TL;SRiT (Too Long; Still Read it, Though):
There are infinite ways to eat an apple. Some may be better than others, but that doesn’t mean you shouldn’t eat the apple. And over time, you’ll learn new ways to eat new apples and perhaps, maybe, possibly (though I have my doubts) you’ll find out that some apples are best eaten in certain ways. At that moment, you will have become an apple eating master and will sound like a douche when you tell other people that they eat apples the wrong way.