Learning Plans & Projects for Development
Updated: Apr 23, 2021
This first blog post will be a little bit different than what I typically plan to post on this site. I am required for an assignment from my school to make 'my first blog post', so that's what this is, just about a month earlier than I had anticipated starting my blog. Typically I want to focus my posts on personal projects I am working on, as a sort of retrospective of their development with a little bit of tutorial and guidance thrown in. I would also like to make a few curation posts of quality tutorials, infographics, and content I find around the internet relating to my interests.
I guess this would be a good time for an introduction. My name is Jake Pigg, I am currently a student at the University of Advancing Technology, majoring in Game Programming and planning to specialize in graphics & rendering programming. My hobbies include programming, game development, playing video games, cooking, playing drums, flying planes, and learning. That last one is the primary reason for the development of my learning plan (main content section), I absolutely love to learn and have a hunger to always figure out something new. For some reason I really enjoy exploring what is unknown to me and am absolutely fascinated by the amount of quality information that is available to us online.
For the past few months I have been building, refactoring, decimating, and rebuilding a personalized learning plan that is designed to serve as a guide on my quest for knowledge, which I have dubbed "The school of Jake Pigg". The objective of this is to serve as a backlog and stockpile of all the things I want to learn. It covers a wide range of topics such as game development, math, reading lists, music, AR, VR, business management, graphics programming, machine learning, etc. I have it broken down into a couple of different Trello boards to keep myself from becoming overwhelmed by the sheer number of items presented to me. The main board I operate off of is my 'current focus' board which just contains a few categories that I am currently pursuing to keep myself from being too spread out. Then each of the categories has a handful of items that I'll pick and choose from over the course of the next few weeks.
This board is still pretty broad and only features some of the learning tasks associated with each of these categories. The hardest part about building this learning plan was realizing that it is going to take a tremendous amount of patience and be something that I have to work off of for years to come to even become close to accomplishing what I want to. That in itself poses a challenge because most of what I am interested in learning is technology based, which as we know is always changing. This means that something I found as a resource for my board a few months ago could become outdated and irrelevant by time I get to that category or card. Essentially, my learning plan is always changing and shifting.
Something I have tried to implement in my learning plan are small projects that utilize the topics I just learned as a way to ensure I am retaining and understanding the information, for example, after learning about compute shaders, I have a project to create a hydraulic erosion simulation. These projects are what I plan to make the majority of my blog posts on. They will cover a variety of topics, but will all be technology related, as that is what I am most interested in writing about and will help to keep this site relevant to my portfolio. Ideally, I will complete one of those mini projects every month and be able to do a write up on it, but realistically they will probably end up a little more sparse.
In addition to the minor projects I also have a few large scale items in the works. These are, SUDS: my student innovation project, Isla Inca: a game being developed by my company Half-Way Games, and a depth camera motion tracking system. I will make sure to keep the blogs updated with information about the project of these three major endeavours in the form of a little designated section in each monthly post. In case you are wondering about these projects I'll share a short description of each:
SUDS (Scalable Uniform Deformation System) - SUDS is my innovation project that I am working on for school. Its a real-time water system built with customization in mind. The plan is to release it as a Unity plugin that allows for a developer to effortlessly add great custom water effects to their projects. (You can learn more about SUDS here)
Isla Inca- Isla Inca is the development codename of a small first person story driven game being developed by my company Half-Way Games, which I run with a few of my friends. We are developing the game in Unreal Engine 4 and currently just in the early stages of development. Technically the game hasn't been announced or even teased yet (oops), but if you want to follow along with its development you can check out our Twitter, Instagram, or Website. Which at the time of writing this are all still empty.
DCMTS (Depth Camera Motion Tracking System) - This is just an idea at this point in time, which is why the acronym is very unfriendly, but the general idea is to develop a system that would allow us to do motion capture without needing any fancy suits or spending tens of thousands of dollars. This will heavily rely on the things I learn in my AI/Machine Learning category to use depth cameras to track individuals and objects and turn the results into animation data. There are already a few similar solutions available on the market, but I figured it would be a great learning experience and money saver to try and build something like this myself
Since this blog post is mainly just an explanation of my future plans and what I am working on, I figured I would make things a little more interesting and show off what I spent the last few days working on.
This is my introduction to ray tracing and graphics programming. This was my first real item I accomplished from my learning plan, and although its pretty much just following along I am pretty happy with myself in actually getting it done in a timely manner. Bellow is a gallery of pictures I took at each stage of the process in following along with Peter Shirley's great starter book "Ray Tracing in One Weekend", the images go in order of development with the top left one being the first picture I took. There are actually 3 books in the series, but so far I have just completed the first one. You can find these books on Amazon or as free PDFs on RealtimeRendering.com.
I wrote this raytracer in C++ since I was following along with the book and figured that it would be a great way to become more comfortable with the language. I really enjoyed working through this book and can't wait to get started on the next one.
If you are interested in following along with my journey to learn, then I suggest you follow me on twitter @JakePigg97 or subscribe to this blog. If you have any learning plans of your own I would love to hear about it in the comments down below!