InVein

Link to Steam page: https://store.steampowered.com/app/4642060/InVein/

InVein is a short horror story experience created by students of the University of Texas at Dallas under the studio name of SlowDrip Studios. I am the UI Programmer of the game, and primarily focused myself on that aspect of the game.

The first hurdle I had to go through at the start of the project was learning the engine. This game used Unreal Engine 5, and although I had some experience with the engine in school classes, at the time it wasn’t really my engine of choice for making games. Having to learn a different workflow compared to other game engines always takes some time to get used to, but one of the biggest differences with Unreal Engine compared to other game engines was Blueprints.

I typically code via text, like most programmers, however, Unreal Engine Blueprints allows the programmer to code more visually, using nodes and wires to simulate typical text based code. I presumed that learning Blueprints would take me some time to adjust, but I was surprised by how intuitive and user friendly Blueprints were. Drag and drop, drag to connect wires, search bar for nodes, commenting sections, all of these features of Blueprints were an incredible quality of life from the text based coding I was used to.

Example of Blueprints from Early InVein Main Menu Blueprint

There was also the hurdle of learning the relationships and terms of Unreal Engine’s building blocks. Pawns, Controllers, Maps, and specific to my work in UI, Widgets. Learning how to use Widgets in Unreal Engine was pivotal in creating the UI systems that are in the game now. In fact, I was one of the only members to work in Widgets, since no other department really needed to utilize Widget in their work or workflow, which meant I had to learn not only how to work in Widgets, but also the relationship Widgets had with other parts of Unreal Engine.

The UI Team for InVein was very small, only involving a UI Programmer and UI Designer. Meghan Roesler was the UI Designer for the first half of the project, and I was, of course, the UI Programmer. One of the biggest issues regarding our small team was due to the department structure. Our Designer Department would make decisions about the game and delegate those decisions to the other departments. Because of our small team and the fact that we were in different departments than the Designer Department, our team would often get forgotten to be told what our work was supposed to be. Miscommunication and general confusion about our work was one of the hurdles early on into the project, and one that thankfully, as the project went on, slowly became better and more streamlined as we addressed our concerns regarding communication.

Despite the initial hurdles, our small UI team would create our initial prototype for the Main Menu UI of the game, one that would create a nice groundwork for what would end up being the final Main Menu UI. Meghan Roesler did the placement and animations of the elements of the menu, while I worked on the functionality of the buttons, sliders, and checkboxes so they do what they were supposed to do. One of the more interesting tools we had to use was Widget Switchers, which allowed us to easily switch between different sub menus with the ease of changing a single number, along with it being intuitive to edit each individual sub menu for us.

Prototype for the Main Menu
Prototype for the Graphics Menu, a submenu of the Main Menu

Meghan Roesler graduated midway through the project, and thus stopped work on the game there afterwards. The Game Designer role fell onto Rishabh Shreevas, who was also part of the Media Department, and primarily focused himself on that. A lot of the work regarding UI fell onto me during the second half of the project.

Due to that amount of work, and the limited time I had to work on the project due to classes, I learned to recognize my limits on what I could reasonably finish regarding UI on my own, and asked my fellow programmers to help with some of the tasks I was given on UI. Malik Danab, Daniel Blank, Avery Lanier, Eric Wilhoit, and others were among the people that helped me with UI, and I give many thanks for their help. They helped take the load off of my shoulders so I could work on the more complex parts of my UI work.

One of the most challenging tasks that I had as a UI Programmer was adding controller support for the UI menus. Many of the resources online for adding controller support to UI that me and the UI team looked at would typically involve an Unreal Engine plugin. Unfortunately, our game couldn’t use any plugins for Unreal Engine for copyright reasons. So, I had to use Unreal Engine’s built in tools and code to add my own controller support, of which such tools were not as intuitive as the other tools for UI.

Some of the many things I had to code for UI controller support:


  • Hovered and Pressed Functionality: Had to make sure that whatever the controller was hovering over would play the same hover animation as hovering with a mouse, and the same with pressing along with sound.
  • Controller Navigation: Had to adjust the default controller navigation that’s built into Unreal Engine to seamlessly navigate through the odd positions of interactable widgets in the menu.
  • Seamless Switching of Control Schemes: Made the switching between using controller and using mouse and keyboard as easy as just pressing anything on either control scheme.

Working on UI controller support allowed me to have a deeper understanding of Unreal Engine Widgets and on Blueprints as a whole, as I would often experiment with different coding solutions to a problem I would have with controller support. I learned about how widgets relate to the game world, the differences between Game and UI Input Modes, how delays and timers get affected by tick, and much more.

Finalized Main Menu
Finalized Interaction and Text UI

I learned a lot in my time working on InVein, learning about Unreal Engine and especially Widgets in the engine. Being a part of a group of talented people working hard on making the best game they can was a positive experience. I am very happy and thankful to be a part of SlowDrip Studios in creating a game released on Steam. I especially thank the team of programmers in the Programming Department for helping me with some of my work and being honest and straightforward with what needs to be done for the game. This game taught me the importance of communication, time-management, and experience when it comes to making a game with a large group of people.

Link to Steam page: https://store.steampowered.com/app/4642060/InVein/