Hi, I'm Rebecca Novis! I graduated May 2025 from Boise State University with a BS of Science in Games, Interactive Media, and Mobile Technology (GIMM).
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.
Website
WIP Video Game
Co-op Video Game
Website
Website
VR Game
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, Unity, C#
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. However, I also handled some work on the Unity side of things. 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.
Unity, C#, Puzzle Design, Maya, Roadkill, ChucK, Audacity, Procreate
Congrats, you have just been hired at the Advanced Dimensional Research Institution for Forward Thinking, or ADRIFT for short! At your new job, you are expected to perform testing in ADRIFT’s various labs, testing the institutions discoveries. As you do this, you will need to examine the things around you, break down and understand clues, and test your ingenuity in order to meet ADRIFT’s high standards, and hopefully figure out what exactly is going on in their labs.
ADRIFT is a VR puzzle game inspired by escape rooms, with sci-fi theming. I developed ADRIFT entirely by myself over the course of several semesters. By doing so, I learned how to make a video game entirely on my own from start to finish, including ideation, programming, 3D modeling and texturing, and music and sound design.
Aside from the base VR character and controls, I developed each part of the game myself. I developed the game in Unity using C#, including the VFX which I created using Unity’s VFX graph. I also created the models in Maya, unwrapped the models using Roadkill, then textured them in Procreate. For the audio in the game, I created the music in ChucK, and recorded the sound effects myself and edited them in Audacity.
I started this project as a way to learn more about puzzle design in video games when my Senior Capstone class gave me the opportunity to freely choose and dive into a topic I was interested in. I spent time both researching puzzle design, and putting what I learned into practice. This project is very much a work in progress, and I plan to continue to add content, iterate on ideas, and test what I create whenever I can in my free time.
I love puzzle games, with some of my favorite video games being puzzle games. So, I wanted to learn how my favorite titles made such fun puzzles, and try my own hand at it. I had tried making puzzle games previously, such as in my game ADRIFT, but I found that I didn’t enjoy the puzzles I created, and had a difficult time iterating on the mechanics I built ADRIFT around.
When I was going into this new project, I initially thought that I would take ADRIFT and improve it, but through my research, I found that in general it is best to approach puzzle design by having a variety of different mechanics that interact with each other in interesting ways. The mechanics I developed for ADRIFT were fairly limited, so I decided to instead start fresh with a new game and new mechanics.
Through my research, I also found that the core mechanic of a puzzle game should be something that has a large variety of potential states. So, I started by brainstorming different ideas for a core game mechanic. It was pretty overwhelming to just try and think of something as broad as “can have a lot of different states” so I had to narrow my focus. In ADRIFT, I had a color mixing mechanic that I thought was pretty fun. So, I decided to spin that into something more versatile. I had some vague ideas for mixing different colored liquids and having to move different pipes around to end up with the right concoction, but I was worried that it would take me too long to figure out the mechanics for how to achieve that, and I wouldn’t get to focus on the puzzles design as much.
After a few more ideas, I landed on the light beams in my current game. I liked that they felt versatile in that they could be used to change the color of other objects and the beam of light itself could change colors. I also immediately had ideas for additional mechanics that would play well with this, like the mirrors.
Once I had an idea I was excited about trying, I got to work on the game and its mechanics. I started with just getting a beam of light working, then bit by bit I added in other functionality and mechanics. I was less concerned with the polish of the game and its mechanics, and more interested in experimenting with how the different mechanics could overlap and work together for puzzles. So that’s what I did. Once I got a few initial mechanics in a working-enough state, I started throwing things together to see what I could do.
As I messed with stuff, I also took note of what seemed interesting or like it could be spun into a puzzle. Then, I tried to turn it into a puzzle, while keeping in mind some of the things that make a good puzzle as I found through my research. Once I had a few rooms with puzzles, I started rearranging them to try and build a curve into the game. As I was rearranging, I realized a few times that it would probably be good to have a level that introduced a mechanic that would be used later, so I went back and played around some more until I got a new room that I thought would improve the curve.
Some future improvements I have planned include:
React.js, JavaScript, HTML, CSS, Node.js, Leflet, Bootstrap, Figma
Communication, Teamwork, Problem-Solving, Critical Thinking
The GIMM Alumni website is a website created by GIMM students, for GIMM students. This project was worked on by a team of students across two semesters as part of our senior capstone. Our professor, Karen Doty, was our client, and asked us to create a website to help GIMM students network with GIMM alumni.
The main thing she asked for was an interactive map, where users could see where alumni were working across the world, and get information about them. She also asked that we create a page to view alumni’s senior showcase demo reels, as well as a page for students and staff to post job listings for students. For example, if a student was looking for people to voice act in an animation, or if a professor was looking for a student developer to help with a project, they could make a job post on the website.
The website also has an admin side, where GIMM faculty are in charge of approving or denying submissions to the job postings page and the GIMM Alumni, to ensure that nothing inappropriate gets posted.
Our team was split into three groups, with some overlap: frontend developers, backend developers, and UI/UX designers and testers. I was primarily a frontend developer, while also helping with some UI design and setting up some of the backend. Each frontend developer was given a page of the website to build according to the Figma design created by the UI/UX designers. I was in charge of creating the interactive alumni map, which also acts as the home page of the website. Additionally, I worked with the UI/UX team when designing the final iteration of the home/map page, and I set up the EC2 instance for the website on AWS.
Our team also made sure to make pull requests as we finished portions of the website, and so someone else on the team always had to approve pull requests before they could be merged into main. While the team leads primarily handled reviewing pull requests, myself and some others would also occasionally handle reviewing pull requests.
The first design of the mape page made on Figma.
The second iteration of the mape page made on Figma.
The third iteration of the mape page made on Figma.
The final iteration of the mape page made on Figma, which I worked on.
Code from AlumniMap.js. Checks session storage for cached alumni survey responses. If found, it uses them; if not, it fetches them from the server and stores the approved ones in state.
Early into the project, our team decided to use a React based framework along with React Bootstrap. In order to create the interactive map, I used the Leaflet/React Leaflet library. I structured the page by creating an AlumniMap page, and then creating two components: an InteractiveMap component and a BriefInfoCard component. The information about the alumni displayed on the page was collected from the website’s survey page, which was sent out to GIMM alumni. The information submitted by the alumni is fetched from the server to be used on the Alumni Map page. Only submissions that have been approved by an admin are shown on the page.
The user is given a variety of ways to filter the listed alumni, such as by the job field they currently work in, the type of job they have (remote, hybrid, etc.), the country and state they are in, and just a search bar. The country and state search makes use of the country-state-city npm package.
Code from AlumniMap.js. This UseEffect runs whenever any of the filter values or the alumni list changes. It filters the alumni data, then updates the filteredAlumni state with the matching results.
Code from InteractiveMap.js. The getCoordinates function finds the latitude and longitude of each alum based on their country and state. locationCounts uses the data returned by getCoordinates to count how many alumni are located at each unique location, then builds an object using that info.
I had originally planned for there to be markers for cities, states, and countries, but I ended up running out of time, and only incorporated the state and country map markers. While trying to incorporate city markers, I ran into an issue where the name of a city can be used in many different states, and so I had to find a way to effectively find the specific city and its coordinates. If I was able to return to this project, that is probably the first thing I would figure out and implement.
I had a lot of fun working on this project. I found that this project helped me refine my frontend web development skills, as well as my ability to work on a team.