2023 Computer Science Capstone Symposium
The Computer Science Department senior capstone presentations will take place Saturday, May 6th. If you’d like to join the capstone Zoom session, please email Assistant Professor Jeff Caley at email@example.com.
Saturday, May 6th
9:30am – Ray Tracer
Hongsen Zhao (BS)
Ray tracing is a widely used rendering technique for generating realistic images by simulating the behavior of light in virtual scenes. In this project, we focus on enhancing the quality of offline ray tracing to achieve visually appealing and realistic image generation while compromising on efficiency. This ray tracing project focuses on generating different images by introducing the triangle mesh object, optimizing the rendering performance of mesh objects by implementing a bounding volume hierarchy (BVH) tree acceleration structure to efficiently organize and traverse the scene’s geometry, reducing the number of ray-object intersection tests needed and significantly improving rendering efficiency. The project aims to achieve fast rendering speeds for complex scenes with high-quality ray-traced reflections, shadows, and global illumination effects, making it suitable for requirements for accurate and high-quality images.
10:00am – Hate Crime Mapping
Andrew Bauer (BA), Evan Ringler (BA), Jasneet Sandhu (BA), Lid Young (BA)
10:30am – Break
11:00am – LaserDrive
Erick Arcos (BA), Christian Galang (BS), Ben Poplin (BA)
LaserDrive is an autonomous RC car racing project, with the primary goal of having two autonomous RC cars capable of racing one another in a map. To do so, a second RC car was custom built to have a LiDAR sensor mounted alongside a Jetson TX2, power board, and a Vedder Electronic Speed Controller (VESC). To safely enable autonomous functions on the cars, algorithms were implemented in Python, and connected to F1-Tenth’s simulation package using Robot Operating System (ROS). Reactive navigation algorithms such as Wall Following, and Automatic Emergency Braking (AEB) were implemented first. In order to build 2D maps of the car’s environment, Simultaneous Localization And Mapping (SLAM) was configured with the LiDAR sensor using Google Cartographer. Access to maps allows for path planning capabilities enabling the car to behave reactively while planning the best route throughout its environment. Path planning algorithms provide the safest and most effective method of racing multiple cars.
11:30am – Stratosphere
Chris Holland (BA), Matthew Jugovic (BA), Caleb Churness (BS)
Designed to help players improve their gameplay performance, Stratosphere is an analytics platform for the competitive car-soccer video game Rocket League. With its intuitive website and in-game overlay mod, Stratosphere provides players with comprehensive match analytics and machine-learned insights. By uploading match data generated by Rocket League, players can access a wealth of statistics, such as team comparisons, positioning heatmaps, goal-shot ratio, and more. We utilized a microservices architecture in our development for greater flexibility and scalability. Our frontend was developed with React and C++. Our backend was developed using Apollo GraphQL as its API gateway, Docker for deployment and infrastructure, and RESTful services using FastAPI with PostgreSQL and MongoDB for data persistence.
12:00pm – Lunch
12:45pm – Eve’s Quest
Cora Maier (BA)
Eve’s Quest is a proof of concept for a 2D action roleplaying game and its component systems. It has top down player movement, dialogue that reacts to player actions within the world, a combat system with varied enemy AI, a world map that can load different explorable areas and visual polish achieved through clean art and animation. This project focused in depth on how game code for these systems can be structured using design patterns to make them as robust, reusable and easy to build off of as possible. The game demo was created using Godot Mono 3.5 then transitioned to Godot Mono 4.0 and written predominantly in C#. Other languages were used for simpler or more specialized scripts. Supplemental art and writing demonstrating potential plans for the game’s future story and world have also been done, including character designs, area concepts, scripts, and lore. The goal of this game proof of concept is to find game design strategies that are manageable for one person and simple and strong enough to be compelling as a product.
1:15pm – Poker AI
Kioni Kamau (BS), Logan Margo (BA), Natalie Sayre (BS)
Solving poker games using artificial intelligence (AI) has been an active area of research for many years. However, the imperfect information nature of the game, combined with the large state space and the presence of multiple players, makes it a challenging problem for AI to solve. Two player Texas Hold’em has been solved, but extending this solution to games with more than two players remains an open challenge. This project explores this problem further by applying techniques similar to those used in two player games to three player Texas Hold’em, like the deep contrafactual regret algorithm, to develop a machine learning model from scratch for the game. The model is hosted within an interactive web application, allowing users to play against the model in the form of a bot. Through this platform, users can evaluate the model’s performance and engage with the technology in a practical and accessible way. This project represents a significant step towards the research of scalable and effective solutions for multi-player poker games.
1:45pm – Hexponential
Elijah Yi (BS), Romeo Garcia (BS), Avery Carlson (BA)
Hexponential is a multiplayer first-person shooter battle royale game that generates a new map each time a match is played. The game is set on a hexagonal grid, with eight players fighting each other to be the last one standing. The game is divided into three main components: player controller, multiplayer connection, and procedurally generated map. The player controller component includes the combat system and the ability for the player to run, jump, crouch and grapple using a held weapon. The multiplayer connection component facilitates smooth and consistent gameplay for up to eight players connected over the internet. The procedurally generated map component uses 2D perlin noise to manipulate the height of the vertices in each of the hexagons within the grid. Each hexagon attempts to imitate a unique environment, giving rise to a much more complex and chaotic environment that will keep players engaged. Overall, we created a smooth gameplay experience with an entertaining and repeatable gameplay loop that lasts around 10-15 minutes.