Reed Evertt's Portfolio Site!
I'm a senior at Oregon State University majoring in Computer Science and minoring in Mathematics. This is my portfolio/résumé/personal website, which includes writeups and links to my various projects, and it has that wonderful WebGL-based custom fluid simulation in the background too! Demonstrably, I have an interest in full-stack development, computer graphics, and anything creative. There are links below showcasing a subset of my projects/accomplishments, and if you want a general overview: here's the link to my résumé. For further inquiries, you can reach me at reed@evertt.com :)
Projects:
-
Indeed! The very site you're on! Those wonderful shaders in the background are running my own custom WebGL Navier-Stokes simulation.
-
Two published games (and many more unpublished...) built in Unity with C#, HLSL, custom sprites, models, sounds, and everything else - never used a premade asset in my life.
-
I've also created many mods and plugins for other games (mostly Minecraft). One in particular I spent three months on full-time; it's the most complex enemy AI I've ever made!
-
Over the past 5 years, I've been working on an 10-hour long experimental animated film. And you know me, it's full of insanely complex geometry shaders.
-
More Coming Soon!
It takes a while to make all these pages, you know.
This Site
Overview
This site is a portfolio project that also is my portfolio. The subsequent sections walk you through every framework I had to learn and (some of the many) obstacles I had to surpass. Feel free to look through the code! The repository for it is here: https://github.com/everttr/the-site-static.
Shaders!
The flashiest part of this website I spent the most time on. The background is my own custom Navier-Stokes running on your GPU. Using the features of WebGL 2.0, every simulation step uses many render passes and many render buffers to get its final state. The simulation is spread across the input, diffusion, projection, and advection steps for both the density and velocity fields. Visual rendering to the canvas is decoupled from simulation to allow for frame blending; I toiled over many optimizations to get it to run in realtime and still be energy/mass conserving. Here's a link to specifically the shader/controller code: (I'm very much proud of it)
AWS/Spring Boot Server
There is also a dynamically served version of this site hosted on an AWS EC2 server. It's build with Spring Boot and Thymeleaf, and uses GitHub actions for continuous deployment to the remote server, and it also has a few dynamically served bells and whistles for good measure. Here's the link to its repository, and here's also the link to the server itself (though note that at the time of writing the SSL certificates aren't set up, so it can only load on Firefox).
Unity Games
Overview
I love programming, and I love art. Ergo: I love making games. Below are three of my favorites that I've developed in the Unity game engine.
Anathemia
This game was my take on the melding of Horror and the Rogue-Like genre. Originally titled "procedural horrors", its ethos is that nothing is predictable. You move through a randomized maze with randomized attributes fighting a randomized enemy with, you guessed it, a menagerie of randomized abilities. Months and months were spent on just the AI for the monsters, making them as unpredictable and intelligent as possible; they simulate the player's movement when they go out of sight, they lay in wait in strategically advantageous positions, and they have dozens of possible tools to trick, surprise, and disorient the player. And that's not to mention the secret 3D area! Here's the game: (though be warned: it is intentionally very difficult)
Save State Game
This was the first game I ever published, and its story is about a game developer creating many different iterations of their first game. It's a puzzle game where you play "Save State Game" throughout different (fictional) stages of its development, using various features added as development continues. The primary gimmick involves saving and loading different "states" of your character, and using those to navigate levels which are not saved alongside you. One little feature that I think acts as synecdoche of the care that went into the whole is this: every particle effect is randomized based on the character's loaded state, so no matter how many times you load a state, your interactions with the world will be identical. Here's the game: (I still think it holds up very well!)
Infinite Sudoku
This is generalized sudoku. There are many variations beyond the classic 9x9 we all know: 16x16, killer sudoku, sandwich sudoku, samurai sudoku, latin square, and about one trillion more - this game implements a sudoku generating and solving algorithm which allows combining all of these at once, and also runs in a fraction of a second. I still believe making this was the most difficult logic and time-complexity challenge I've taken on; believe it or not, five 25x25 sudoku boards smashed together have a lot of incorrect board states to prune! I also implemented an entire custom GPU-based particle simulator to act as a background - it can render tens of thousands of physics-adhering particles at hundreds of frames per second! That last part may be why I haven't finished the polishing stage of the game. Regardless, here's some images of what's been completed.
Game Modding
Overview
I don't just make my own games - I add to those of others as well! Of all the custom scripting I've created, my favorite and most ambitious projects have been made for the sandbox that is Minecraft's engine.
Terminator++
I spent 3 months working on this one full-time. You know it's serious because I didn't open blender once in that time! This is a fork of a pre-existing PaperMC plugin that allows the spawning of AI-controlled "bot" players which run towards real players and attack. My goal was to make these AIs act like real people. I ended up implementing an extremely complex behavioral system, where bots dynamically chose to explore, sneak around, hunt animals or players, and strategically retreat based on their environment and their randomized personality attributes. They can also chose between dozens of different attack styles: from melee weapons to ranged to fire-based to literally snowballs. I even made a custom chat system with a combinatoric millions of possible messages they can say depending on the context of their environment! This was made for a friend's YouTube series that hasn't come out yet, so I unfortunately can't release the source code just yet. Below are a few screenshots of these bots running wild.
The Game Inside a Game
This was made for a collaborative mapping project between friends. It's a top-down, block-pushing, enemy-avoiding, fully-fledged puzzle-action game within Minecraft itself. It's hard to overstate how difficult it is to code inside Minecraft's very limited Datapack system, where iteration is barely implemented and parameters all but don't exist - but I was able to get it working through clever use of globals & macros. It's hard to show how large Minecraft Datapacks are, but let's just say the source code (which is entirely plain text files) is 83KB. That's a lot for the official Minecraft scripting engine. Here's a link to the map download, if that's your style.
Miscellaneous Work
There's not enough room in the world to list every Minecraft mod, plugin, and datapack I've made. One of them spawns TNT every time an entity dies, one of them makes the whole world slippery, one of them randomly rotates your character, one of them spawns a billion slimes everywhere. I take every potential feature as its own problem to solve, and there's no problem too big or too small.
Blender Work
Just about five years ago I embarked on a project which ballooned into a 10-hour experimental animated feature film. I'm tenacious, so I still work on it nearly every day. Through this process, I've had to learn 3D modelling & texturing, audio engineering, cinematic lighting and framing concepts, and, of course, a lot of stuff about shaders. Blender has a wonderful system for procedurally modelling objects using an intuitive form of geometry shaders, and I've made liberal use of this to make particle simulations, physics simulations, procedural surface noise, complex whole-scene animations, and so much more. Below are some images of just a few scenes from this behemoth - of which everything, from the models to the textures to the animation to the shaders, was made by me :)