BROCK
O'SHEA
WHO I AM
I am a software programming student, studying at the Academy of Interactive Entertainment.
I am eager to gain experience and learn from professionals in the industry, and would love any opportunity to work and further enhance my skills.
MORE ABOUT ME
In my spare time, I love to watch soccer and F1.
I enjoy playing chess, hanging out with friends and family, playing music and playing video games.
LANGUAGES
C++
C#
Python
Java
TECHNICAL PROFICIENCIES
Unreal Engine
Unity
Git
Perforce
SourceTree
PROJECTS
Heavenfall
Engine: Unreal
Language: C++
Version Control: Perforce
Heavenfall is a first person spell combat game where you, as an awakened demon, are fighting your way through the heavens to demand answers from the god who sent you there. At the end of your journey, be prepared to engage in an epic fight with Jahun, the final boss.
My key responsibilities included:
-
AI programming
-
Enemy spawners
-
Enemy wave managers
THE FOG
Engine: Unity
Language: C#
Version Control: Perforce
The Fog is an on-rails arcade shooter where the player navigates spooky environments, shooting down enemies and trying to defeat the King Zombie.
My key responsibilities included:
• Implementing the spawning system, stage system, and scoring system
• Integrating Cinemachine for dynamic camera movements and
programming AI behaviours
• Collaborating with a team, managing tasks with Trello, and handling version
control with Perforce
NEON PUNK CHAOS
Engine: Unreal
Language: Unreal Blueprints
Version Control: Perforce
Neon Punk Chaos is a fast-paced first-person shooter, made in 48 hours at the AIE Game Jam. In this game, you face off against attacking ninjas in vibrant rooms. As enemies are defeated, the environment becomes increasingly neon and colourful, intensifying the aesthetic experience. Players progress through sequential rooms, unlocking the next challenge upon clearing the current one.
My Key Responsibilities Included:
• Enemy AI
• Enemy spawning and death management
• Animations
• Other small including Niagara Effects and random coloured bullets
FEATHERED FEAST
Framework: Raylib
Language: C++
Version Control: Git
Feathered Feast sees the player flying through the sky, devouring burgers while evading crows, aiming to achieve the highest score by consuming as many burgers as possible. Some key features include:
• Implementing Dijkstra’s Algorithm for sophisticated AI pathfinding,
ensuring crows intelligently chase the player
• Developing decision trees for nuanced AI decision-making, allowing for
dynamic responses to player actions
MONTE CARLO MACHINE LEARNING
Language: Python
Version Control: Git
Learning about the Monte Carlo Method gave me great insights into the basics of machine learning. Understanding core machine learning foundations such as the Bellman Equation, Value Tables and Q Tables has given me a good basis to continue my learning from. Since learning about the Monte Carlo Method, I have continued my learning and am now in the process of learning about policy gradient methods.
Key Takeaways:
• Understanding of Bellman Equation, V tables and Q tables
• New insights into AI learning and recursive functions to achieve machine learning
VANYA WEBSITE
Language: Typescript, CSS
Version Control: Git
I am really glad I decided to undertake this project. Creating a website from start to finish was challenging, but gave me a completely new understanding of web development. As I worked through this project, I began to recognise the limitations of my code design, particularly when combing Typescript with CSS. I was able to create a solid final product regardless, and most importantly I was able to deliver the website I set out to create for Vanya. I am looking forward to creating another website soon, and implementing better practices from the get go.
Key Takeaways:
• Enhanced understanding of web development, and first exposure to Typescript and CSS
• MailChimp integration gave me new insights about API use in websites
• Vercel integration showed me the benefits of automating workflows where possible
BANKING APPLICATION
Language: Java
Framework: Spring Boot
Database: PostgreSQL
Cloud Service: AWS RDS
Version Control: Git
Security: HTTPS enabled
API Design: RESTful APIs
Stage 1 of my banking application which serves as a robust platform for managing users, accounts, and transactions, showcasing the implementation of fundamental and secure web application features. Some key aspects include:
• Designed a secure and scalable Java application utilizing the Spring Boot
framework to facilitate banking operations such as creating and managing user
profiles, accounts, and transaction processes.
• Implemented CRUD operations (Create, Read, Update, Delete)
for users, accounts, and transactions.
• Enhanced application security by incorporating HTTPS.
• Developed a RESTful API, enabling standardized interactions between the
application and potential external services or applications.
• Integrated PostgreSQL database for reliable data storage and management.
• Initially deployed using AWS RDS to leverage the scalability and reliability of cloud services, though it was later migrated away from AWS RDS due to ongoing cost considerations.
Future Enhancements (Please see project overview doc):
• Currently working on OAuth 2.0 implementation for advanced
authentication and authorization processes.
• Additionally, a front-end user interface is in development to provide an intuitive
and user-friendly experience, making banking operations more accessible to users.
DEV LOG
RED CARTEL INTERNSHIP
I learnt so much through undertaking an internship at Red Cartel. I gained invaluable industry experience during my time at the company, and gained a new understanding of how software development teams work. My work at Red Cartel was mostly focused on improving my understanding of networking and physics simulations. The main project I worked on was building a networked virtual reality system for throwing objects, engaging in combat with other players, and registering hits and near misses on opponents.
Key Takeaways:
• Software development team processes, version control, quality assurance, sprints, scrums.
• Networking for game development
• Creating physics systems, focusing on tracking and applying velocity and angular velocity
• Using SourceTree, making pull requests, and resolving merge conflicts
NETWORKED FPS
After finishing my internship at Red Cartel, I was intent on solidifying the information I had learnt about networking in games. With this in mind, I decided to undertake a simple multiplayer FPS. Additionally, I was very interested in learning more about procedurally generated terrains, and decided to add this in to create map variety each session. I have to say, this project was one of the favourites I have worked on. Although I am still very new to it, introducing networking into my games feels like a bit of a superpower, and is something that I have thoroughly enjoyed learning to do. As well as this, everything I learnt about procedural generation in this project, through following various youtube tutorials, was really interesting too.
Key Takeaways:
- Developed understanding of how networking works in games using Commands, Client and Target RPC’s
- Enhanced understanding of port forwarding and how players connect across networks
- Learnt about procedural terrain generation staples such as Perlin noise, lacunarity and fall off maps
AIE GAME JAM
The AIE Game Jam was a lot of fun. We had 48 hours to make a game around the prompt “You are the NPC”. We built a game where you start in a dull, grey and lifeless environment, but as you destroy enemies, you gradually bring Neon Punk Chaos (NPC) to the scene. This game jam was a great experience, working closely with some good friends from my game development course, and staying up all night refining our game and having plenty of laughs.
Key Takeaways:
• Building systems quickly with a key goal of having a working product
• Challenges that arise when creating a game with minimal planning time
• Unreal animation blueprints
HEAVENFALL
This game was created as the major production for my game development course. The process for this production was 10 weeks to create a proof of concept prototype, then 10 more to build a final product. For this project, I was responsible for the AI programming and the core game loop. I learnt a lot about behaviour trees, blackboards, tasks and decorators when working on the AI for this game. Additionally, I learnt the importance of accurate scoping, and thorough project management too.
Key Takeaways:
• Understanding of creating AI in Unreal Engine and using tools such as behaviour trees and blackboards
• Importance of creating regular builds for testing and feedback
• Enhanced overall understanding of Unreal Engine
MONTE CARLO MACHINE LEARNING
Learning about the Monte Carlo Method gave me great insights into the basics of machine learning. Understanding core machine learning foundations such as the Bellman Equation, Value Tables and Q Tables has given me a good basis to continue my learning from. Since learning about the Monte Carlo Method, I have continued my learning and am now in the process of learning about policy gradient methods.
Key Takeaways:
• Understanding of Bellman Equation, V tables and Q tables
• New insights into AI learning and recursive functions to achieve machine learning
VANYA WEBSITE
I am really glad I decided to undertake this project. Creating a website from start to finish was challenging, but gave me a completely new understanding of web development. As I worked through this project, I began to recognise the limitations of my code design, particularly when combing Typescript with CSS. I was able to create a solid final product regardless, and most importantly I was able to deliver the website I set out to create for Vanya. I am looking forward to creating another website soon, and implementing better practices from the get go.
Key Takeaways:
• Enhanced understanding of web development, and first exposure to Typescript and CSS
• MailChimp integration gave me new insights about API use in websites
• Vercel integration showed me the benefits of automating workflows where possible
BUILDING A MATHS LIBRARY
Undertaking this task was invaluable for improving my understanding of vector and matrix Maths. This project gave me a much better understanding of the way transforms and other mathematical operations work within Unity. By diving into the mathematical foundations, I was better able to appreciate the ways in which Unity handles game object transformations, including rotations, scaling, and translations, making it much easier to visualize and implement complex 3D manipulations in my projects.
Key Takeaways:
• In-depth understanding of vector and matrix operations.
• Improved ability to apply mathematical concepts in game development.
• Enhanced skills in debugging and optimizing mathematical computations in Unity.
THE FOG
This project marked my first experience working in a team to make a game. Collaborating with a designer, another programmer, and two artists taught me a great deal about the game development process in a team environment. The project benefited immensely from a team of hardworking individuals who were great at communicating. Using tools like Perforce for version control, Cinemachine for camera movements, Trello for project management, and conducting regular team scrums, were key to our success.
Key Takeaways:
• The importance of effective communication and teamwork in game development.
• Practical experience with Perforce for version control.
• Utilized Cinemachine for advanced camera movements.
• Managed tasks and timelines using Trello.
• The effectiveness of team scrums in maintaining project momentum.
FEATHERED FEAST
I learnt so much throughout the creation of this game. Initially, the project was more focused on implementing the Dijkstra’s pathfinding algorithm, but as the project progressed, I gained a lot of valuable knowledge beyond AI and pathfinding. Making a game in Raylib instead of Unity was a significant learning curve, as it required me to build many features from scratch. This project became the most thorough C++ project I had completed at the time. It taught me a lot about memory management and provided a clearer understanding of what happens under the hood when I’ve been using C# in the past.
Key Takeaways:
• Enhanced understanding of AI pathfinding and behaviour trees.
• Deep insights into game development without the aid of engines like Unity.
• Improved C++ programming skills, particularly in memory management and performance optimization.
FACIAL RECOGNITION MACHINE LEARNING
The facial recognition task was a formidable challenge that I tackled using Python and Jupyter Notebook. Although the project didn’t work out exactly as I had hoped, it was still a valuable project. It was my first experience training a neural network on image data and my first time using Jupyter
Notebook. This project laid the groundwork for my understanding of machine learning workflows and the practical challenges involved in training and deploying neural networks.
Key Takeaways:
• Gained foundational knowledge in neural networks and machine learning.
• Learned the importance of data preparation and augmentation for training models.
• Experienced the versatility and functionality of Jupyter Notebook for data science projects.
FURNITURE SEARCH PROJECT
This project was undertaken as a fun challenge for a family friend. It involved learning about populating fields from JSON files. I conducted some brief research into SQL and backend data management but decided not to take the project further. This experience was insightful for understanding how data can be dynamically handled and displayed in web applications.
Key Takeaways:
• Learned how to parse and use JSON data in web projects.
• Gained a basic understanding of SQL and backend data management concepts.
READING CLEAN CODE
Reading "Clean Code" was a transformative experience in how I approached coding. The principles and practices advocated in the book have significantly influenced my coding style, emphasizing the importance of writing clear, readable, and maintainable code. I intend to reread this book in the near
future to further solidify my understanding and application of these concepts.
Key Takeaways:
• Emphasized the importance of writing concise, readable, and maintainable code.
• Learned best practices for naming, commenting, and structuring code.
• The significance of refactoring and code reviews in maintaining code quality.