My favorite technology so far during development is Blender, with Affinity Photo as a last-minute runner-up. My least favorite software would have to be Adobe Photoshop.
Blender
I have extensive experience working in Blender for manifold 3D modeling. However, game design has honed my skills in creating efficient topology along with new methods of texturing 3d objects. Further, creating a full game scene has given me ample practice in creating assets rapidly during our fast-paced development cycle.
Affinity Photo
This software takes everything that is good about Photoshop and packs it into a more intuitive, aesthetically pleasing user interface. And not to mention, for a one time price less than three months of Adobe’s “competing” subscription. I don’t think I will ever be going back to the Adobe suite after discovering Affinity’s products.
Unity
I had difficulty learning certain aspects of the Unity Editor as it is a large application with many different modules. Particularly, it was hard for me to learn how to use materials created in Blender and imported into unity. Now that I understand how to extract materials and associate them with textures, it is intuitive and quite useful to be able to manipulate those materials within Unity.
If I could start over, I would consider using Godot as the game engine. We are only really using Unity for its grid system at the moment, so I think Godot would have allowed easier flexibility in how we integrated the code base. That being said, I believe we will be using more of Unity’s modules in the next sprint including the grid system and animation.
As we begin the development cycle of our Let’s Launch a Game project, now is a good time to review general guidelines for writing clean code. While we have been working to maintain uniform formatting, informative naming schemes, and explanatory comments, there are other development philosophies that we can focus on to improve our code. Personally I found my research into common code smells the most useful. One design pattern that I think I often fall victim to is having Middle Men functions.
A Middle Man is a function that relies mostly as an intermediary between other functions. Removing Middle Men improves readability and can prevent potential downstream issues in future development cycles. Where I run into this issue most often is when I am contributing to an established codebase and don’t fully grasp the scope of an established function. I will often add additional functions within this function to do the bulk of the work. Paired programming and code reviews are one way to avoid this misunderstanding.
The figure below is an example of a middle man function. Within “Minion”, the main functionality is referencing is_frontline, this could be updated to a single call within action.
Going forward I intend to avoid using Middle Man functions.
Something I would like to start doing more of is writing shorter functions. This may seem to be an opposing issue to writing fewer Middle Man functions, but I think writing shorter functions can actually facilitate a clearer hierarchy. When a function isn’t bloated and sticks to its intended utility, the code becomes much more readable and reusable. In terms of design principles this might often be referred to as using SRP or the Single Responsibility Principle.
My teammate Jon’s one request this week was a walk cycle. Having never animated a walk cycle in 3D before, I was unsure how big of an undertaking this would be. About four hours and three YouTube videos later, the character was rigged and walking! Blender makes it surprisingly easy to animate a humanoid character.
While the animation is a bit exaggerated in some areas and robotic in other areas, I think it is a good base for future walk cycles. Recently, I worked with Jon to integrate this and an idle animation into our player movement script. The result is much more natural gameplay. It’s starting to feel like a real game!
The animation comes alongside a proof of concept of multiple systems within the game. I modeled a basic initial scene for the game after much back and forth during the design process. Jon and Matthew have been busy developing a robust player movement system, while Bran has developed an initial shader.
Reflecting on where I was beginning this term, I have learned many new systems within Blender. This enables me to develop assets of a quality I wasn’t sure I’d be able to produce for our game in this short timeframe. Of course, the assets we have currently are a bit janky, but I am confident that if we are able to narrow the scope of assets and revisions that the team will need to produce, I will be able to build some pretty polished characters and scenes.
I’ve familiarized myself with our current code base and hope to contribute more to our C# scripts. I will likely handle scripts for object interactions and the animations I create. This will streamline the process of uploading and integrating assets.
Over break, I will be working with Bran to develop a texturing pipeline that will work with the shaders we are developing. I will also build a block-out of our entire Bunker scene so that we can get started on a rudimentary game loop. Exciting updates to come!
My journey with the senior capstone project so far has taken the direction of honing my skills in using Blender 3D for game design. The “isometric” perspective lends itself well to our proposed farming game. While we could build a 2.5D title like Stardew Valley, we have decided that our specific game will benefit from a few different advantages of 3D. We are building a farming game centered within a post-apocalyptic world. Thousands of years after the collapse of humanity, the player is tasked with restoring the environment via agriculture. Two key levels of this game will be underground bunkers and the surface world. By building these levels in 3D, the meticulous process of managing transitions and depth within a large and varied environment is avoided. Another deciding factor for 3D development is that multiple teammates have experience with 3D asset creation and processes. Our experience will allow rapid development of a unique aesthetic that will help differentiate this title from other farming titles out there.
The above image is the most recent blockout I made of our v0.0.1 bunker level. While it still needs to be fully textured, shaded, and populated with assets, this provides a great starting point for the development process.
Something I am learning, working with my teammates, is that an initial concept may not convey the final vision very well. We are all eager to rush to the stage of development where concept becomes polished design, and ideas are fully visualized on the screen. It can be hard to meter expectations during early stages of design, so I have opted to finish one asset (the hallway) in order to show what something close to the final product may look like.
After a few stages of back-and-forth, I sought notes on the hallway asset. I found that my teammates are looking for a toon shader aesthetic with hard outlines. Notes also brought out that my teammates prefer contrast between bright and dark tones. This process of design and review is likely a good simulation of being a 3D artist. It is similar to the process of requirements gathering, except the clients are my teammates. Knowing this information moving forward, I have a concrete idea of what is needed for each asset. For hard outlines, sharp corners are favored over beveled geometry. Toon shaders simplify the interaction of materials and put the focus more on color value rather than material properties. I am glad we were able to describe these aspects so early on in development.
My prior experience with 3D modeling in Blender largely involves creating designs for my 3D printing business. 3D printing has a unique set of requirements, such as keeping models manifold, and notably, there is no major cap on polygon count. Game design, on the other hand, heavily relies on efficient topology with low poly counts. Because of this, I have held myself to a higher standard of efficiency when building concept models. Initially, this YouTube series on game asset creation in Blender by LMHPOLY was extremely helpful. It outlines modeling, texturing, and exporting a 3D asset from Blender to Unity while maintaining best practices. Adapting my previous workflow to this new set of standards, I now feel I am experienced enough to create any asset we might need for the game, given enough time.
My next focus will be modeling and rigging 3D characters. In our post-apocalyptic setting, there will be organic life, robots, and cyborgs. Each type of character represents a different combination of modeling techniques. For organic life, I will use subdivision modeling and rigs with weight painting. For mechanical AI, I will use hard surface modeling and rigid rigs via vertex groups. Cyborgs will use a combination of these methods. Below is a block-out of a cyborg Llamma trader that would likely pull carts of goods to be traded with the player.
When creating more detailed 3D art, a concept sketch is invaluable for referencing proportions, etc. Ideally, you can use sketches from multiple perspectives to facilitate the creation of 3D shapes against the reference. (As a side note, I have been working to further my 2D art skills. Inspired by my teammates, I think a more general understanding of art will improve my 3D work)
As with earlier stages of the project, I predict that further creation of concept art will be a great boon to development. With each new design, I learn new methods of simplifying the modeling process or improving the quality of assets for our game. Feedback from my teammates helps us hone the game’s aesthetic and design philosophies. In conjunction, these realizations will ensure smooth development.
Hello all! My name is Brandon, and I’m a student based in Washington State (PDT) taking Ecampus courses at OSU. I actually started out on campus in Corvallis for my first two years of classes but transitioned to Ecampus due to the flexibility it afforded in running my business.
I run a 3D printing business full-time outside of school. This mainly involves designing 3D models and creating CG renders on the promotional end. Blender is my main 3D software of choice, but I also use Nomad Sculpt on my iPad and Fusion 360 for CAD projects. I am also learning OpenGL for code-based 3D projects! Below is an example of some of my work:
Outside of school and work, I enjoy doing anything outside with my friends! This summer, I went on a good number of backpacking trips and got really into mountain biking. Below are some photos of the highlights:
This term, I am taking CS 461, the first in the Senior Design Project series. I am most interested in projects involving 3D game development because I have been wanting to learn a program like Unreal Engine or Unity for quite some time and game development is the avenue within my major that aligns most with my interests. The project I am most excited about is Let’s Launch a Game because I am a fan of sidescrollers and working with this team would provide a unique opportunity in real-world indie game development. The Escape Room Challenge would offer the opportunity to build interactive 3D environments within a game engine and is likely the project that I am most qualified for. I am also interested in the AR Arcade Classics project after talking with Hannalore, a fellow dev, about utilizing VR Headsets and building this project in Unity.
I am also taking CS 450 Intro to Computer Graphics this term, along with my business minor-related coursework. I am excited for all the learning to come!