Categories
Uncategorized

5 Lessons Learned

Hello again, as the term comes to an end I would like to share 5 things I’ve learned from working on my capstone project. Our team is developing our own version of Pac-Man and Frogger in virtual reality. Over the past couple terms, I’ve learned quite a bit about teamwork, expectations, time management, and more.

Lesson 1

START EARLY!! You hear this all the time here at OSU, and for good reason. When working on a project this large scale, it can be easy to push deadlines or work slowly. I did this too, and now we’re scrambling to finish our alpha version as our finals approach. My team encountered bugs and issues almost every step of the way during implementation. Don’t expect everything to go your way, especially with code.

Lesson 2

Make a plan, but don’t stress the details. Our team spent almost an entire term strictly planning our project. This helped us tremendously because some of the most time-consuming parts have been coming up with concepts, designs, and gameplay choices that we all needed to agree on. The problem began when we got ambitious and tried to plan every little detail. This time would have been better spent working on the big picture because the details can always be added later. Spending a week of time on the design of a ceiling probably wasn’t worth it in retrospect.

Lesson 3

Create a good relationship with your team. My team and I have gotten along well, and it makes the decision-making process a lot smoother. Furthermore, I know I can depend on them and they can depend on me. Life doesn’t always go smoothly, and there are times when you’ll need to help each other out. Forming a good relationship with your team makes the development process fun and less stressful for everyone. I really appreciate my team for looking out for each other when needed.

Van Der Laan, G. (2017, September). The Importance of Teamwork. FCAP. https://www.fcapgroup.com/flcaj/flcaj-articles/the-importance-of-teamwork/

Lesson 4

Don’t be too hard on yourself. Sometimes, plans fall behind, or the outcome of your work doesn’t look like you wanted it to. It can suck, but it’s all a part of the process. Take a step back and try to enjoy the journey. While it’s frustrating at times, we’re all learning how to do it together. It’s ok to need to take a break on something if it’s not working, and it’s ok to ask for help. A set of fresh eyes goes a long way. Making these blog posts has been a fun way to relieve some of the stress. Remember, we’re here to learn, not be expected to be perfect.

Lesson 5

Backup your work! Our team frequently merges our work together, and it can get messy. There can be partial merges that corrupt files, or your work can get entirely overwritten. It can take a long time to redo work that’s been disrupted, and the best way to prevent this is to back up your files. It has saved us a lot of headaches as a team by keeping a couple of private branches to which we upload our work. It’s happened to us, and it will happen to you, too!

Categories
Uncategorized

Technology Overview

In my capstone project, we’ve used a few different technologies as tools to progress our development. I’ll be going over what programs became my favorite and which ones aren’t worth the headache.

Starting with my favorite…

Unity

I have experience using Unity in the past, so I may be a bit biased. However, Unity is one of the best game engines out there, especially for those new to game development. It’s versatile, free, and has a smaller learning curve than other engines out there (such as Unreal). Unity provides thousands of free courses and documentation as well, which comes in handy since there are so much that goes into developing a game.

Here’s a look at our project. As you can see, Unity makes it easy to stay organized without being overwhelmed with different controls and options.

Perforce

We’ve been using Perforce as a way to share files and make sure we have the same scene, similar to Github. We were able to connect Perforce to our Unity to easily update files, but it’s been causing a lot of issues recently. As our scene gets more complex, there are more merging issues and corrupt files. In the future, I would probably just use Github. The convenience of Perforce is nice, but there is definitely a learning curve with it and the amount of issues we’ve had with merging has taken away more time than it has saved.

We set up our own streams (branches, essentially) and copy our changes to the main branch, which others can then merge down to their own stream.

Trello

Trello is a project management tool that has helped us stay organized with our tasks. It keeps us on track and stay informed on what has been completed and what we should be focusing on. I highly recommend Trello as a project management tool. It’s easy to learn, visually pleasing, and completely customizable. I like being able to get a quick overlook at our project without needing to see all the details (you can click on each card to reveal more details if you choose).

Categories
Uncategorized

Smelly Code

Welcome back to my Senior Capstone Journey where my team and I are developing VR Arcade Classics. Today we’ll be exploring good and bad coding practices to help improve your skills as a programmer. It’s important to learn good habits early on to save yourself and your team from avoidable mistakes that can cost you valuable time. Specifically, code readability.

DON’T…

Use random names for functions and variables. This quick adjustment improves the readability of your code tenfold. Using vague names can become confusing quickly. It forces you to remember what everything does, rather than just knowing by reading the name. It may seem unnecessary when writing short pieces of code, but let me demonstrate the difference it can make.

Let’s look at this chunk of Python code here, which contains a plethora of bad coding practices.

We could analyze this, mentally keeping track of each variable. However, simply changing the names can provide some clarity on what this function does.

DO…

Follow standard naming conventions. When everyone follows the same rules for naming parts of your code, it makes it easier to read others work as well as your own.

Now that we’ve changed the function and variable names, we already get an idea of what this function does. It calculates the average number of an array and prints it. Much better!

DON’T…

Expect yourself to remember what all of your code does. Comments are incredibly beneficial and an overlooked aspect of coding. When caught up in the moment it can be easy to stop adding comments because you assume it’s self-explanatory or you won’t need it. However, as your projects get more complex you’ll begin to forget and re-analyze your code to find what you need. Furthermore, if you’re working on a team it’s essential to make clear comments to quickly catch them up to speed. Utilize comments in all your code to form this good habit.

DO…

Add useful comments that explain the logic of the code. This both saves you time and mental power when reading your code. This is especially useful when coming back to old code or when you’re having a code review.

Now we quickly understand the purpose of this function and how it works. We also know that ‘array’ is simply a sample list and can be replaced later on.

Conclusion

Let’s compare our code from the beginning to what we finished with.

Stinky Clean

Without changing any logic, we can now clearly understand what this function is doing. With the combination of good naming conventions and comments, it takes only a few seconds to understand the importance of each part of our code.

Categories
Uncategorized

Level Design

Group Decisions

My Capstone team and I have been making finalizing decisions on the design of our game the past couple weeks. We are recreating Pac-Man and Frogger, however we want this to be a unique experience on the market, not just an exact replica in VR (Virtual Reality) form. The result of our brainstorming has become fruitful and I have completed basic blocking out of the level design for the Pac-Man game. Another member on my team, Miguel, has been working hard on creating the ghost designs in blender to be imported into Unity.

Debugging and Struggles

For our project we all need to be able to collaborate in Unity together and to do so we’ve been using an application called Perforce. It allows us to share and upload files to each other to be updated in our Unity scene. We ran into a few issues, as this is new to all of us and there’s been a learning curve. I’ll save you the technical jargon, but basically, we weren’t seeing each other’s changes and there were issues with being unable to work on the project if someone else had unsaved changes. After a debugging collaboration with another one of my team members, Michael, we were eventually able to solve this problem.

Screenshot of our Perforce workspace.

Level Blocking

As I mentioned, I completed blocking out the level design for our Pac-Man inspired game.

Unity Scene with the level blocking complete.

It obviously has a long way to go, but I’m glad we have our environment set up with a space to test game functionality. I also integrated an XR rig, which allows us to test the game in VR with full remote and transportation functionality. Soon, these corridors will be a lot spookier!

Next Up…

Stay tuned to see my progress with the level design. I’ll be adding wallpaper and setting up the general atmosphere of the game. I believe our ghosts are almost done to be uploaded in the scene and begin coding some functionality!

Categories
Uncategorized

Beginning Steps

My capstone team and I have been hammering out details for our virtual reality (VR) Arcade Classics project. We are integrating our own version of two retro arcade games into VR. One of the most important steps to tackling a long term project such as this is preparation. Since the start of the term we have been rigorously planning, in hopes to have a polished game to be available on the Meta Quest market by the end of the year.

Getting Started

The hardest part of any project is getting started and knowing where to start. That’s why my team and I are using Trello, a simple project management tool that allows us to easily communicate our ideas and plan for the future. This is how we completed the first step in our journey: picking the classic arcade games we want to recreate. After brainstorming several games, each with their own pros and cons, we landed on Pac-Man and Frogger. These games will provide the user with a dynamic gameplay experience, reimagined through our lens.

Trello Boards are very helpful for group projects!

Now that we had decided on what games to make, it was time to begin the planning process. Our professor for the Senior Software Engineering Project (CS 461) class required us to submit several individual and group drafts for different parts of the planning process. This has helped us stay on track and tackle the difficult decisions in the design process. Although tedious, our group feels more confident in our ability to complete these games by the end of the school year.

Level Design

My designated part of this project is creating the level designs for Pac-Man and Frogger. Additionally, I will be assisting in integrating the user interface (UI). One of the most important aspects of any game is the environment and how the player interacts with it. I also must maintain the game’s retro aesthetic and general game mechanics while introducing a fun new factor to excite players with.

After much contemplation and feedback from my group, we have decided to retain the original layout of Pac-Man, but alter the wall designs and atmosphere. We want to take advantage of the fact that these games are in VR, and to do that we are making Pac-Man a scarier experience. The player will traverse through haunted corridors, collecting pellets as they avoid the ghosts that chase and lurk in the halls. To keep a retro-aesthetic to appeal to the nostalgic factor of Pac-Man, the game will be low poly and resemble an 8-bit game.

Frogger will require a lot more consultation and work into the level design. Since each stage is different, I must make several levels with increasing difficulty. This will require me to think critically about the layout of traffic lanes, water, safe zones, and more. Frogger will also retain it’s retro style with an 8-bit appearance.

What’s Next?

Since my team and I have fleshed out almost every detail, each of us working on different parts of the design process, we will soon be making our v0.0.1, which will simply be getting the environment set up. Stay tuned to get more updates and what’s to follow!

Categories
Uncategorized

Introduction

Hello! My name is Hannalore and I am a senior at OSU studying computer science. My goal after graduation is to be a game developer. Follow me as I blog about my video game Capstone project (TBA).

About Me

I was born and raised in rural Alaska, often moving between the Southeast islands and the Kenai Peninsula. Despite moving to Oregon for college, a much more populated region, it felt isolating at first. I left my commercial fishing family to study computer science, which was definitely a plot twist. I am so glad I took that leap of faith because now I have a wonderful support system of friends here in Oregon and I can pursue my dream career. Whenever I miss home I look at pictures of me in winter and go “Oh. Yeah. Ok, no thanks!!!”

As you can imagine, I spent a lot of time indoors on my computer playing video games growing up. This is what sparked my passion for game design. I jumped right into it freshman year of college and worked in a Nvidia Graphics lab on campus creating virtual reality environments using Unity and C#. I also assisted graduate students in their work.

What To Expect

I will be sharing my development in my upcoming Capstone project. You’ll see my struggles and how I overcome them, as well as tips and tricks to finding solutions.