Welcome! I am a Gameplay Programmer with several years of development experience. Beyond game development I have a love for cooking, the circus arts, and film! I am an absurdist, queer, and so excited to get started!
Physics based Party Game;
D-list Supervillains try to Steal from the Hero
Double down is a rogue-lite shooter, Gamble to beat The House
Using Tak to explore board game ai
Tak is a Board Game first conceived by Patrick Rothfuss. It is described as a simple but beautiful game, like chess but in the novel The Name Of the Wind. This was then designed and sold in the real world! The goal is to create a road from East to West or North to South. Much like chess, if you could just go twice in a row, the game would be over in a flash!
This is all secondary to the point of what I'm trying to achieve with this project, which is the exploration of Tree Searching Algorithms.
The set up for letting the player and the computer interact with the board and each other started with the Tiles and the Stones placed on them. The stones can be placed as Paths which create the Road, or as Walls which block roads. Finally each player gets a Capstone, which Counts as both.
With this Base we need to make the player and the computer actually speak the same language! The crux of this is to make this as small as humanly possible for the tree algorithms. Regardless of algorithm strength, missing information renders the process ineffective.
With this requisite setup out of the way we can get to the moment I’ve all been waiting for. I began by implementing MiniMax, the simple solution. It starts by generating every possible move for a given board. Then it generates every board for that and so on to the given depth. Finally it scores the boards and seeks the highest possible score. Deeper the search the better the move and the longer the process takes.
To attempt to address this I improved the minimaxing process by adding Alpha Beta pruning, so there would be less boards actually considered. This is a logical process to cut the amount of boards considered. This is done by comparing the quality of boards and concluding that the board and all deeper boards will be worse. Though this did help this wasn't the true issue.
After some time to research and some time away I came back to the real problem. Mini Maxing was generating hundreds of thousands of boardstates if looking any more than 4 or 5 moves ahead. This is the real issue , and so to solve this I decided to use a randomly based chess algorithm, the Monte Carlo Tree Search.
The main reason I like this algorithm is because it simulates how I encounter problems.
It starts with one board, generates a random next board.
Then creates a further move from the best board.
This means terrible moves will not be considered, and promising moves can be given more thought.
This also addresses the issue of too many boards generated, because this just generates as many boards as possible in a given time period.
This was a really fun project to put together and gave me a great excuse to look into interesting board game ai.
I also got to relearn the architecture I set up originally, as this project was interrupted several times.
But I also know that if I got to reset this from the ground up I would put more thought into how the board is quantified into information the algorithm can use.
Like I said at the beginning, missing information renders the process ineffective, so how I deal with the info is just as important as the info itself.
Villainous Intent is a physics based party game where d-list supervillains try to steal from the hero!
Champlain College’s Capstone is an effort to create the experience of taking a project from concept to publication in a few short months.
This means we have a wildly brief 2 weeks to concept out a set of ideas and land on 1.
How our team decided to go about this is to spend 1 sprint on 1 concept and the second on another concept.
There are several problems with this design but at its heart this project is an educational experience over an endeavor to make a product.
Though I am obviously very happy with the final product, more than anything this was a profoundly useful learning experience.
The heart of our concepting was to create a physics based party game to lean on our team’s technical advantage.
We began with a cooking game, which does not really matter as this is not the game that went forward.
During this week we did explorations and proofs of concept, and it went exceptionally well!
The team was ready to just push forward with this idea, but I personally pushed to give options and continue concepting, which I still believe was the right decision.
However how concepting continued was not done perfectly.
As the team continued we tried to flesh out a second concept.
Through the week we made much aesthetic progress, but little real progress was made mechanically.
Though this idea was less sound it was more exciting to the majority of the team.
The technical team was not confident that the idea was feasible.
However as the team was all close friends communication was more complex and we decided to move forward with the mechanically weaker idea.
This false start was a fantastic learning experience, especially when attached to a project that I am so deeply proud of! The choices made along the way past concepting were sound given the challenging circumstances. How I spent the beginning of the project was supporting systems that needed my attention: setting up versions of networking and local multiplayer, Working on setting up behavior trees for ai, modifying a ragdoll controller to fit our specifications. Though none were areas of specific expertise, I was still able to achieve whatever the team required for the final product.
The Ai began with the implementation of a behavior tree. A simple evolution of the state machine, connecting nodes that link together cause more complex behaviors. This allowed for rapid iteration and response to the weekly testing. The main focus of the AI was balancing threats to the player and interrupting gameplay experience. This meant communicating with the player, interacting with design and art teams to create an environment that the ai could fit into. I also personally dedicated research to how the AI could be done better by comparing to other games and seeing how realistic it would be to repeat.
As the project progressed we believed that networking would not be essential for the final project so we dropped it, allowing me to focus on ai. With the focus on ai interactions that I implemented above I also supported further development in required areas. Supporting the development of the player ability system, continued iteration of the ragdoll controller, among other things.
Separate from the technical development I also performed the greenlight standup to the entirety of the college as well as alumni.
This is primarily a learning experience and I have learned everything I could possibly ask for from this project.
Improving ability to assess feasibility and necessity, learning more about effective communication within and outside disciplines.
With this achievement complete we were then on-boarded onto other projects that required our support.
With this in mind I’d like to take away some final thoughts on this project.
Villainous Intent is a project I am deeply proud of. I began working on games in freshman year with this team of people and we got to work together until this project. Our silly dynamic is what allowed for such a fun social game. I am equally proud of my ability to fill in the gaps in technical need, and complete the work necessary to create a fun game!
Past my pride and simpler takeaways lies a more important lesson. A team of people who are all friends doesn't actually work. It interferes with important reports of needs through the pipelines. This was felt through the project in many areas. At its root, the only issue of this project was that the disciplines weren’t effectively communicating. I feel overwhelmingly lucky that I got to get past this lesson in a safe college environment. I feel like a better programmer and a better team member after this project, and I could feel my changes much more strongly in my experience on Double Down.
Double down is a rogue-lite shooter in a casino! Gambling against the floor bots to beat the house!
Before moving to Double Down I never had the chance to learn the ins and outs of unreal. I feel so lucky to have had the opportunity to use it on such an interesting project! That being said, undertaking this challenge while being onboarded to a new team was a really exciting challenge. This meant communicating with the team very openly and working mindfully.
I started by creating a system needed to create a boss room. This lower pressure task allowed me to add value to the team while focusing on the endeavors of learning unreal and the onboarding process. The lead programmer Ashley Tucker and producer Preston Suarez were integral in the smoothness of this transition, along with my roommate and product owner Willow O’Hara.
I then transitioned more truly to my role of gameplay programmer by integrating my boss system into the larger boss level! This allowed me to apply the understanding I gained from the onboarding process. This went swimmingly, allowing for early testing of the boss room! With me more integrated into the team and the idea of unreal I jumped into the larger goals of the team.
With unreal under my belt and an understanding of the team's goals I was able to take up my job full throttle after just a week! I was very worried about this challenge but the team was able to work really well together. Another perk of working on this project is I get to work much more in my wheelhouse of Gameplay programming!
The first priority was to improve the gambling experience for the player, what would a casino game be without gambling?
This came in two fronts, one larger and one that I led.
Primarily we wanted to create many more upgrades for the player to receive from The Slot Machine.
This is the primary way players interact with combat, so adding more depth to this system was a priority throughout the project!
I also led the Roulette system, allowing players to gamble for rewards at the risk of defeating challenges.
This Roulette system was then expanded while I got to use my ai experience for this project to expand the enemy interactions.
When I came into this project they had lots of ideas for brand new enemies to add.
Though I did have time to implement some of these enemies I knew to create more real variety in the enemy interactions we would need to do wider changes.
The idea we landed on was creating an upgrade system for the enemies.
An Elite Variant System to create far more interesting combat interactions
without actually expanding scope too much.
The main Elite Variant System is based on an event system, allowing attachable components to activate given specific events. This Supported rapid prototyping of enemy abilities and quick additions to the final product. The abilities are communicated by lighting the enemy in different colors. We also worked to keep the enemy variants simple and understandable to the player, so they could learn what exactly they do, or if nothing else that bight color = BIG BAD!
The development of Villainous Intent was both profoundly educational and extremely valuable. This being said I am more proud of the work I have done on Double Down. This project has allowed me to flex my skills and support the team in making this wonderful game.
We are still in development, but the game is set to come out summer 2025 so stay tuned!
Feel free to email me at Henry.Bennett@mymail.champlain.edu, find me on LinkedIn at LinkedIn, or check out my resume Here!