Hi! I'm Rebecca Novis, a student at Boise State University in the Games, Interactive Media, and Mobile Technology (GIMM) major, expected to graduate May 2025.
I am an experienced Full Stack Web Developer with a passion for frontend development. I specialize in building responsive, user-friendly, and robust web applications by leveraging my expertise in both frontend and backend technologies. In addition to web development, I also have a background in game development, working with both Unity and Unreal Engine to bring interactive experiences to life. I thrive on tackling creative challenges and continuously pushing my skills to new heights, no matter the project.
Co-op Video Game
Website
Website
Mobile AR Application Prototype
Website
Website
Website
Interactive Comic
2D Video Game
Star Bay is a 2D platformer I developed in Unity. In the game, you navigate the wreckage of your base in order to reach the safety of the Star Bay. Along the way, you are expected to collect stars, avoid meteors, and continue moving before the wreckage of the base falls away from you.
This was my first video game I developed independently in Unity. Through this project, I learned much about using Unity and programming in C#, as I was only somewhat familiar with Unity and C# prior to making this game. I created several different game mechanics for this game, including platforms that fall away after the player collides with them, meteors that damage the player, and a key item the player must collect in order to complete the second level. I had difficulty making each mechanic work properly, but with each new addition I made to my game, my understanding of Unity and C# grew.
The first mechanic I implemented was the falling platforms. While I can look back at my code now and recognize its simplicity, I in fact spent several hours researching how to get the desired outcome. The result was the script FallingPlatform, in which I created a function called killIt() that disables the platform’s rigidbody’s isKinematic by setting it to false, allowing the platform to be affected by the physics of the scene. Then, after half a second, the platform is destroyed. This function is invoked two seconds after the player collides with the platform. This gives the player two seconds to jump off the platform before it falls away from under them. For a closer look at on the code for this project, you can view my Github repository for the game here.
Aside from coding, I also drew four sprites in Procreate: the meteorites, the buildings you enter at the end of each level, and the nebula key. The yellow and red collectable stars were created in Photoshop.
Creating Star Bay was a challenging endeavor, but I am proud of creating a fun and challenging platformer, with a story tying it together.
Download the game build from Github
Unity, C#, Adobe XD, Illustration, Procreate,
Writing, Conceptualization, Communication, Teamwork
Pursuit of Time is an interactive comic developed in Unity. The interactive comic is about the bi-linear flow of time, and the journey of Janus, a teenage girl, as she explores her past and future in order to avoid a grim fate.
The interactive comic is a mix of the comic and video game mediums, with interactivity taking form in visual novel style dialogue and 2D side scrolling exploration. Most of my contributions were in the conceptualization and writing of the story, as well as maintaining the organization of our group. I also created some of the art and dialogue in the comic, and helped troubleshoot the code.
This project was the result of a collaborative effort to create an interactive comic about a prompt given to us by our professor: the bilinear flow of time. A bilinear flow of time is a theory from quantum physics, and essentially boils down to the idea that time flows both forwards and backwards. In other words: the future affects the past just as much as the past affects the future. With such a broad and complex topic, the group and I initially struggled to decide on what our comic should be about, and how to best add interactivity in order to connect to the stories' themes and concepts.
We tossed around many ideas throughout our initial meetings, with the gameplay and story frequently changing and evolving. Some of our initial ideas included the main character using a clock to navigate through time and drawing the comic in a circular format so it could be read in any direction. However, as we continued to talk about and work on the interactive comic, our concept for it continued to shift until the final product was finished. Even our storyboard made using Adobe XD, while mostly true to the final product, still contains some ideas left in there that never made it into our final project.
I had a lot of fun coming up with ideas for this project, especially since concepts related to time loops, time travel, and the general nature of time are particularly compelling to me. While working on this project, two pieces of media that I drew a lot of inspiration from were the movies Tenet (2020) and Arrival (2016), and the way they each handled the flow of time. The video game Braid was another core inspiration for me, particularly in how the final level demonstrated that by changing the flow of time, the context of events happening shifted drastically.
Pursuit of Time does not have a huge plot twist like the above stories. Instead, it takes a much more mundane approach to the concept of a bilinear flow of time, asking what we can learn from and embrace about it in our day to day lives. Thinking about these stories in relation to my own life experiences led me to push for the main theme of our game: that time may be uncertain, but by embracing life moment by moment it becomes easier to navigate. If you are interested in further insight into some of my inspirations while working on Pursuit of Time, see my rhetorical analysis of the interactive comic here.
I wrote and drew two comics for Pursuit of Time, one set in Janus’ past, and another in her future. I am much more practiced in creative writing than I am in illustration, but I am happy with how the two comics strips I created turned out, as I believe they effectively convey the ideas I was aiming for.
I had a minimal role in the programming for this project, but whenever bugs or unexpected issues arose in our Unity project, I assisted in troubleshooting and fixing the problems.
The mockup search page I created in AdobeXD
Sustainability and Systems Thinking In Chemistry Education (SaSTICE) is a website intended to provide information and resources to chemistry educators on how to incorporate systems thinking into their teaching. I was brought onto a small team working professionally for the International Union of Pure and Applied Chemistry (IUPAC) to begin development for this website from February 2023 until April 2023. I worked on this website alongside two other students, Gamma Gamel and Carson McMahan, and my professor, Jack Polifka. My primary contributions to the website involved user experience testing, as well as creating a mockup design.
As part of my work, I created a mockup for the website using Adobe XD, which can be viewed here. Each of the other members of the team created a mockup of their own as well, and sought feedback from the client about what they liked and disliked about each one. The client noted that they liked the look and format of the search page and projects page in my mockup. However, they did not like how much I leaned into the IUPAC’s branding, particularly in regards to the colorscheme. In addition to the feedback received on my teammate’s mockups, the four of us were able to get greater insight into what the clients wanted from the website.
The mockup projects page I created in AdobeXD
Our team also performed user experience testing and research in order to decide the organization of the navigation bar for the website. To do this, we first asked our clients to provide us with a list of the various pages they planned to display on the SaSTICE website. With the list of navigation categories from our client, we first wanted to simplify the names of each item, as several included jargon that may have made navigation more difficult. To do this, we provided a survey to various educators at Boise State University, asking them how they would simplify the phrasing given to us by the client. This allowed us to ensure that the language used made sense to the target demographic of the website.
In order to determine the best order for the navigation, we utilized open card sorting. I contacted and tested three participants: a chemistry professor, an undergraduate studying biology and chemistry, and an undergraduate studying UX design. Including the participants I gathered, our team was able to receive results from a total of eight participants. We focused our efforts on finding participants that were educators and/or within the field of chemistry, since the focus of the website was chemistry education.
After receiving feedback from our client about the results of our UX testing, we then began working to create the website using Wordpress. My involvement in this process was minimal, and I primarily provided feedback to professor Polifka about design changes I thought would benefit the website.
Working on this website was a fantastic opportunity, and taught me how to better communicate with a client in order to provide desired results. For example, creating mockups helps the client identify what they do or don’t want to see in the final product, without needing to spend the time and resources to create the full website. Furthermore, card sorting is a very effective method in determining what will make the most sense to the average user, creating a better user experience for more people.
This website displays my statistical analysis of how items are implemented in The Legend of Zelda series. I gathered information on every item used across the Zelda franchise, such as what game they first appeared in, and how many games each item appeared in across the series. Then, I displayed this data using data visualizations.
This was my first big broject utilizing what I had learned about HTML, CSS, JavaScript, Node.js, and MySQL. I gathered and analyzed all of the data myself, then displayed them using a variety of data visualizations, the majority of which were made with d3.js. I also began using MySQL databases to hold my data for some visualizations.
This website was created as a proof of concept for how reservations for bowling lanes at Boise State’s Games Center could be made, stored, accessed, and edited online. I developed this website independently for a class. Working on this website expanded my skills with using MySQL as a data storage system, as well as designing a variety of website interfaces.
I chose to make a prototype for a reservation system, because at the time of making this website, I was working at BSU’s Games Center, and I had noticed how the reservation system was less efficient than it could have been. So, I attempted to create a website that could streamline the process of both making and storing reservations, simplifying the process for both customers and employees.
I created the front end pages with HTML, CSS, and JavaScript, aiming for a simple, clean look. I utilized MySQL, Node.js, and express.js to connect the front end to the back end server and database hosted on phpMyAdmin. I created the website according to REST and CRUD APIs.
Code snippet from reservation.js
Full code from connection.js
Code snippet from index.js
React.js, JavaScript, HTML, CSS, MySQL, Node.js, Leaflet, D3.js
Communication, Teamwork, Problem-Solving, Critical Thinking
While working as a Full Stack Web Developer for the GIMM Works Dev Team, I collaborated with a client to create the Treasure Valley Water Hub website, a centralized resource hub focused on water-related information in Idaho. My role involved working on both the front-end and back-end aspects of the website, collaborating closely with another full-stack developer and the UX/UI designer on our team.
Our team was given about three months to complete the initial development, followed by additional work to finalize the project handoff. Using the wireframes designed in Figma by our UX/UI designer, the other developer and I translated the design into a functional and visually engaging website. We maintained consistent communication with the client through weekly meetings, ensuring that their feedback was incorporated into the website's design and functionality with quick turnaround times.
Throughout the project, I utilized HTML, CSS, and JavaScript, along with several JavaScript libraries and frameworks, including React.js, Node.js, Leaflet and React-Leaflet, D3.js, Swiper.js, and Simple-Statistics. Although React-Leaflet-Heatmap-Layer and Kriging.js were initially implemented to build a predictive groundwater level map using the Kriging model, these features were ultimately removed when the client determined that the model’s predictions were not accurate enough. This process required significant trial and error to achieve a working prototype before the client’s decision.
An old iteration of the groundwater map page with scrapped functionality, such as a heatmap of groundwater levels based on the kriging model that utilized react-leaflet-heatmap-layer, and kriging.js.
I also developed multiple data visualizations inspired by examples from the React Graph Gallery, including a line graph and pie chart that were featured in the final website. Additional work was done on a scatter plot, a standard bar graph, and a stacked bar graph. On the back-end, I imported several data tables into the project’s MySQL database using MySQL Workbench and crafted MySQL queries to efficiently integrate this data into the website's features.
This project enhanced my skills in full-stack development, agile communication with clients, and data visualization, while demonstrating my ability to adapt quickly to client feedback and project requirements.
Unreal Engine 5, Blueprints, Level Design, Puzzle Design
Communication, Teamwork, Problem-Solving, Critical Thinking
Slurgin N’ Snop is a two-player 3D puzzle platformer developed in the Unreal Engine, about a snail that wishes to become a slug, a slug that wishes to become a snail, and their journey to self-acceptance. I worked on this game alongside 3 other students as one of our class assignments. Each of us took on a primary role, but we also helped each other out when needed. I primarily worked on the level design and puzzle design. However, I also worked on mechanics such as the checkpoint/respawn system, and the destroyable walls with vines.
Examples of early concepts for the level design. On the left is a sketch of the level layout and ideas for obstacles and how to overcome them. On the right is ideas for how/when to intruduce new mechanics.
The four of us took inspiration from the game It Takes Two, and how each player has their own unique set of skills, and are only able to get through the levels by working together and using both of their own unique mechanics to help the other player through. As the level designer, I first needed to know what each of the player characters was going to be capable of. So, my group did some brainstorming on the unique mechanics for Slurgin the slug and Snop the snail. While we went through many ideas, we eventually decided that the primary mechanics of Slurgin would be the ability to jump, and the ability to shoot slime.As for Snop, he would be able to climb over objects and roll down slopes to destroy objects and back his shell into enemies. Additionally, Slurgin would be killed by copper but immune to salt, while Snop would be killed by salt but immune to copper.
With this decided upon, I was able to begin iterating on the level design, and I sketched out a few different iterations of what the level could look like. I knew from my own experience playing puzzle games like Portal, that it helps to slowly introduce new mechanics and how to use those mechanics to your players. You don’t want to throw too many new things at them at once, otherwise they could get overwhelmed. So, I tried to build out the level in a way that would slowly introduce the players to the mechanics, and show them what they could do with them. While I am not totally satisfied with how the level turned out, I think it was a very helpful learning experience for me.
Late stage concept art for the level layout.
React.js, JavaScript, HTML, CSS, MySQL, Node.js
Communication, Teamwork, Problem-Solving, Critical Thinking
IdaGem is an interactive educational website used in K-12 schools across Idaho to make learning about the state's history engaging and fun. The project was developed by two teams: a Unity team and a Web Development team.
I joined the Web Development team as a front-end developer after the original web developer left GIMM Works. My primary responsibilities included:
Working on this project gave me hands-on experience in maintaining and improving an existing codebase, reinforcing the importance of clean, well-structured code. It also highlighted the critical role of CI/CD (Continuous Integration/Continuous Deployment) practices in software development—demonstrating firsthand the challenges that arise when they are not properly implemented.
XCode, Swift, Adobe XD, ARKit, FLAnimatedImage
Leadership, Communication, Teamwork, Organization, Problem-Solving, Critical Thinking
Let's Breath is an iOS Mobile AR Application intended to help aid students with emotional disorders by leading them through breathing exercises and having them journal their thoughts and feelings. It created through the collaboration of students from Missippi State University and Boise State University. My team met with a team of MSU students throughout the semester to develop an application for them that would help aid students with disabilities. Through our initial meetings with them, we learned exactly what kind of app our clients at MSU wanted.
For much of this project, I acted as project manager by organizing meetings, leading conversations with our clients, planning our project, and organizing each group member’s responsibilities when developing the app. I also created a wireframe for the app in Adobe XD, which was used to get feedback from the clients. The feedback my team got from each of our initial wireframes allowed us to create a final look for the app that our clients were happy with.
When we started on the actual development for the app, I was in charge of getting the face tracking working. I worked with Swift and ARKit in XCode. After talking with our clients in Mississippi, we knew that we wanted the app to include a breathing exercise, and that we wanted to ensure that the kids would actually do the breathing exercise, and not just fake it. So, we decided that using ARKit’s ability to track and recognize facial expressions could be used to make sure the user is doing the breathing exercise.
When I started working on this, I used an example XCode project provided by my professor, Dr. Anthony Ellertson, as the base, and modified it to better suit our application’s needs. The first thing I did was modify the facePoseAnalyzer() function to check for the two facial expressions we needed: breathing in, and breathing out. The function recognizes both eyebrows being raised as the breathing in facial expression, and a tunneling of the mouth as the breathing out expression.
Once I finished my main job, I then moved on to combining the work each of my teammates did into the AR face tracking scene I made. I started with incorporating the breathing animation our artist created of the guardian Momo into the scene. I did this by importing a library called FLAnimatedImage into the XCode project. FLAnimatedImage is used to play GIFs in iOS applications. I created a gifView and added constraints to keep the gif at the bottom center of the screen. Once I had that working, I then worked on incorporating the progress bar our UI designer/programmer created into the AR scene. The progress bar is used to indicate how long the user should be inhaling and exhaling. Once it was in the scene, I worked with the UI designer to style it and get it working properly with the rest of the code.
Finally, I incorporated the work of another programmer, who worked on code that would measure the volume coming in through the microphone and measure it in decibels, into the main project. This code is used to check if the student is in a loud environment, and if it detects that the volume is over a certain threshold, it gives the user a warning and recommends that they move to a quieter space. The other programmer got the code working to where it was able to detect the volume level input, and then print out a warning into the console. When I moved it into the main AR scene, I added a popup that would actually display to the user. With this, I added an option to either continue and let it keep warning you if the environment gets too loud, or the user can select “Ignore Warnings” and prevent the popup from showing up again if they can’t/don’t want to move to a more quiet area but still want to do the breathing exercise.