CS199 W26 Reflection: Space Game by Ngoc

Space Game Reflection

This quarter, I had the privilege of working with Krystal, Butch, Lucas, and Leyth to build our “friendslop” multiplayer game, we’ve decided to call “Space Game” for now. Space Game, while built on a familiar game engine, Unity, was a rollercoaster of challenges and learning, as our team explored new libraries and technologies, like Netcode, Blender, and 3D game development. This quarter, my role on the team was primarily as an artist, which meant learning how to animate for the first time, make and rig 3D models, learn how to correctly import them into Unity, and handle materials / textures / post-processing.

Brainstorming

Towards the end of winter break, our team sat down and worked on narrowing down an idea for the game. We worked on Zoom whiteboards, and all shared out 3 ideas we each came up with independently. Then, we pitched each, voted for ones we liked best, and eventually chose to work on Lucas’ “space game” idea. The concept was simple, since we wanted the game to be fast-paced and replayable across multiple sessions with different friend groups, as with most friendslop-genre games. There would be waves of monster-like enemies and you would need to survive them with friends, while managing fuel-based resources. Everyone would get their own “individual ship” or “mecha” and people would go back to a central ship to deposit their resources, as well as completing on-ship tasks. To complete the round, you and your friends would need to find a portal to escape the enemy.

Fig 1. Brainstorming on Zoom whiteboards

Character Art

We initially decided on a 2D game, but eventually switched to 2.5D for visual aesthetic, and before we knew it, decided to just commit to doing a 3D game. Since this was the first for most of us, we knew a lot of the quarter would be spent learning, iterating, and getting comfortable. Krystal and I decided our character should be cute, like Among Us or Repo, rather than more serious or realistic looking. We decided on a “blob” species. Krystal initially drafted some ideas, but the one that stuck was shaped like a humanoid character with a big blob hat or head.

Fig 2. An animation of the blob character running (front, R-side, back, L-side) for the original 2.5D concept

Above is an animated character I created while preparing for the 2.5D concept. However, once we started working on it, we ran into two major issues. First, producing the character in multiple angles– as required for 2.5D– would be extremely demanding. It would involve more than four angles, multiplied by the number of frames, different animation sequences, and variations in the blob-hat shapes. Creating all of this by hand would be an enormous amount of work, especially for just one character. This led us to a key decision: either continue working in a medium we’re comfortable with and commit to a large volume of drawing, or shift to learning 3D to avoid the complexity of drawing every angle manually. We decided to do the latter.

Shifting to 3D

3D is hard. Especially if you’re new. During this quarter, I was luckily taking ARTSTUDI162A: Intro to 3D Art and Animation, which helped with some concepts, like keyframing, Blender-specific keybinds, and motion capture, but the rest felt like I had to learn from scratch. I started with learning how to rig and animate, as well as how to work with the non-linear animation tool in Blender to export animations into Unity correctly. My first creation was an animated cow in Blender. I didn’t model and texture the cow, but I did create the bones and 5 unique animations: the classic walk cycle, an idle, a charge-up, an attack, and an eating grass animation. This process was really fun! While it was challenging to learn how to properly make bones and make the animation look cyclic, seeing the cow actually move was exciting. The cow looked a bit naked, so the last step was giving it a collar and triangular-shaped bell (the lore is that they’re domesticated by the triangle enemies!).

Fig 3. Cow walk cycle

One frustrating part of this process was getting animations to look right. For example, Krystal and I initially played with Adobe’s Mixamo software for auto-rigging and animations (S/O to AS162A for showing me Mixamo) for our bipedal character. However, we found that while that would give us many options for pre-made animations, the Mixamo rig causes a lot of deformations in the body that Krystal had created, especially in the hips and arms. Frustrated, I tried to rig Krystal’s “blobman” myself. I wasn’t quite happy with the result. The weight on certain bones was simply incorrect, causing movements in one part of the body to deform another. I tried to play with a tool called weight painting, where you can manually edit how much effect a bone has, but as a novice, I couldn’t get it quite right. I paused my work on the main character, and hopped to some other tasks like making planets and learning materials.

Fig 4. Posing the blobman rig

Next, I learned how to model and make custom planets in Blender as well. A big thing I learned during this process was materials and how to get them to look correct in Unity URP (Universal Render Pipeline). The post-processing effects that allow for glow emission ended up making the game look really great and atmospheric. In the future, I hope to do some research on ensuring the game’s visuals are optimized in terms of post-processing effects, meshes, and more. I can see this being an issue once there are more planets, multiple players, and multiple enemies.

Fig 5. Planets in the game

Towards the end of the quarter, I decided to pick the task of character animations back up. What was my fix to not knowing how to get the body to animate correctly? I found a cute animated character online and did some surgery. Found on SketchFab (open-source 3D models), the cute horse’s head got replaced with the blobheads Krystal made originally. The rig that came with the model was by no means perfect, but caused less deformities when animated. Lastly, I added a few more animations, like jumping and idle, completing the basic movements required for Space Game.

Fig 6. The horse before and after (after is a visualization of various characters with different blobheads, but the same base body walking)

What’s Next?

To conclude this reflection, I wanted to thank CS199 and Christina for the opportunity to learn something creative, new, and challenging while getting units for it. Without the independent study, I don’t think I would have ever pushed myself to learn how to create assets for 3D games, let alone make a 3D game. In the next quarter, I hope to take my learnings to add more and more assets into the game, plan for 3D asset optimization, and wrap up Space Game with some of my closest peers. For what’s next immediately, I’m going to create more enemy types, models of in-game resources (collectables like grass, ores, and animal droppings), different types of planets, and EMOTES (our monetization strategy). Thank you for reading! 

About the author

Sophomore studying CS!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.