+61 489296096
Jones.Jacob.Rhys@gmail.com Fernhill estate, Penrith, Sydney
NSW 2745
All of my projects can be found in my Gitlab projects folder
his project was an attempt to implement an AI opponent in a video game. It was developed over 18 weeks, utilizing an agile-style development methodology.
Developed in C++ with the use of one library, SFML, an implementation of OpenGL,
allowing for the drawing of shapes and some basic operations on those shapes.
I was the sole developer responsible for all other code.
The "AI", or more aptly the machine learning opponent I chose to implement, was a variant of
Q-learning, which, loosely summarised, uses the game’s state, possible actions, and reward systems to generate a value known as a Q-value.
This value is stored in a hash map. The Q-value is used to evaluate which action yields the greatest reward and, based on the outcome of that action,
is recalculated and backwardly propagated.
I had planned to implement Deep Q-learning, which uses a neural network to approximate Q-values
for the game state. This approach eliminates the need for a hash map and reduces storage requirements,
but due to time constraints this was not viable.
I further developed two additional opponents: one using an A* style search algorithm and another that undertakes
random actions. These were implemented for comparison with the Q-learning approach.
Collision detection: Line-Line intersection.
Custom implementation of line-line intersection to allow for more accurate collisions between polygons and circles,
while also allowing for collisions at an angle, which the prior solution (bounding boxes) did not accommodate.
The program is grossly inefficient, specifically with regard to the A* search algorithm, due
to how it searches throughout the game space and the frequency with which it operates. This could be addressed in a variety of ways,
such as changing the storage of in-game objects to a more component-system-style approach,
switching to a more efficient search algorithm (such as binary search, though this would
necessitate ordered object storage, as would many other search algorithms), or reducing how frequently the algorithm runs.
The website you’re currently looking at was written in HTML using an IDE. Utilizing responsive design and a minimalist style, I aimed to create a simple and easily legible website to showcase several of my projects. Throughout the process of creating the site, I went through several iterations of both style and functionality, below is one such example.
In this group project, the goal was to create a working exercise app within our group.
I was elected to the role of programming lead and developed much of the application, ranging from backend features
such as custom timers to the front-end UI.
The project taught me many valuable lessons about teamwork and collaborating on a shared codebase.
This project was completed for my applied graphics assignment, in which the task was to model a snippet of life in the local town (Aberystwyth). For this, I modelled the main street of the town and several human-esque figures that interact within the environment. There are multiple renders depicting different scenarios aside from the one shown, which are available on my GitLab.
This project was completed for my Algorithm Design assignment and includes a Sudoku puzzle solver and generator. I implemented a recursive solver, as it was an ideal scenario for the use of recursion. Much of the code, as instructed, was written based on several provided interfaces. The puzzles were supplied within one of the classes, and the task was to solve all of them within a reasonable length of time. No additional libraries need to be installed.
Over the last year, I have undertaken a project to convert a van into a habitable living space. During the initial stages of the process, to gain a better understanding of the dimensions and final appearance of the space, I created several models and renders, which are displayed below. All relevant (and numerous) files can be found on my GitLab.