I coded one project EVERY WEEK for a YEAR

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
I spent an entire year coding one new project every single week including a 3D game with its own renderer a gan that creates magic cards and a whole host of other cool experiments and games in this video I'm going to go over some of the highlights of that challenge and talk about the things that I learned I've decided to break the projects down into three major categories and I'll be showing the projects's improvement over time in each category without further Ado we'll jump into the first category which is [Music] games this is the very first project I made in the entire challenge it's the small platformer game which is based around this gliding mechanic it uses the HTML canvas for graphics which provides a lot of functionality to draw simple shapes like rectangles and circles to the screen the HTML canvas also has a lot of other functionality that can be used to make some really cool things but at the time of making this project I didn't know how to use any of it despite its graphical flaws I think this Glide mechanic is pretty good and sometime in the future I'd love to come back to this game and make it functional but for now we'll move on to to the very next game I made in the challenge which is this polar Flappy Bird game you can see I was still making extensive use of the simple shapes and only the simple shapes but there is a little bit more color and the game overall looks much better than the last one for just a couple of weeks of time I chose to feature this game in the video because it uses a cool math trick called polar coordinates which replace X Y coordinates which measure right and up for R Theta coordinates which measure distance and angle you can see if I go to Desmos and type R equals Theta the resulting graph exactly matches the floor and ceiling of the game by using polar coordinates instead of normal coordinates it was much easier to make the game go in a spiral I also got the game running pretty well on my phone I'm not incredibly proud of these first two games but I really wanted to include them in the video because of how much they contrast with the other projects like this next one I made this project just one week after the polar Flappy Bird one I was really excited to make a 3D game for the first time ever so I watched a whole bunch of lectures by the professor who runs 2-minute papers with a lot of help from these lectures I learned how to make a simple rasterization based renderer rter ization is one of the most popular 3D Graphics techniques and it requires 3D objects to be represented as a collection of triangles then for each pix on the screen a ray of Digital Light is shot from the position of the camera with the direction and start position of the Ray and the coordinates of the three corners of the triangle there are linear algebra formulas which together calculate whether the ray intersects with the triangle or not if the ray does intersect with a particular triangle the pixel corresponding to the ray will change color to the color of the triangle after a whole bunch of trial and error I eventually got the game to run like this I didn't even know how to begin to optimize it or even use the GPU which is why the resolution looks like that the game features enemies which you can kill with left clicks and the ability to teleport anywhere you can see by right clicking this project holds a really special place in my heart because it's the next iteration on one of the first games that I ever made which also features large red obstacles that you have to dodge by teleporting one of the really interesting things about this project is that despite all of the fancy math that I learned and used to make it I still didn't know how to draw directly to pixels so each quote unquote pixel you see on the screen is really still one of the same HDML canvas rectangles as from the very first project over the course of the project I made a couple more games including this one where I finally learned some of the other features of the HTML 5 canvas and a fun little text based dungeon Rog like but to keep the video a little shorter I want to talk about the last game I made for the entire challenge around this time I was really into chess and I found out about this 16th century Japanese game called soku shogi which is really similar to chess except the board has over 1,000 squares and the game is set up with 804 pieces of 207 different unique types it turns out the Wikipedia has a whole collection of different pieces from all sorts of unique chess variants this inspired me to make my own chess game where I picked a couple of my favorites including some fancy historical pieces like the ALF wiir and Furs from chaturanga an ancient Indian version of chz and some cool pieces like the flying cat and the wizard ST which both come from taikoku shogi the big chess game from earlier I also added some fun ones from Fairy chest puzzles like the chameleon which changes what type it is every single turn and the root 50 leaper which jumps Square < TK 50 units of space at a time which you can check with the Pythagorean theorem one of my favorites is this variation of a rook called the hyans from chess on an infinite plane which can jump over pieces but it can only move a prime number of squares and finally the only piece that I made up the cannon which just shoots cannon balls here's the full list of pieces if you want to pause the video also made a couple different game modes with this custom board out of fairy pieces normal chess random 8x8 and 16 X6 boards elk chess which is the worst game of all time and my personal favorite chameleon chess where every single piece changes what it is every single turn that was the last game so let's move on to the math [Music] projects math made up a pretty large component of projects in the challenge one of my favorite themes of the challenge and math in general is complex numbers my best explanation for why they're so interesting is Oiler formula which is taught in some calculus classes its Discovery and derivation is hidden behind some of the most insane math ever but one of the key things it implies is that when you multiply two complex numbers together you're really just adding their angles and multiplying their magnitudes which means that complex multiplication is actually just a form of rotation and rotations are often times pretty intrinsically beautiful a good example of this is a spirograph or slightly more complicated this version of a spirograph where instead of just a tip drong the entire length of the hand leaves a mark since complex numbers have these rotational properties baked into them you can find them in most of the prettiest parts of math like the mandal broset the mandal BR set is all about following the path of complex points to see if a point is in the mandal BR set we first initialize a variable C to it then we start with zal 0 and repeat this equation setting Z to the result each time in each iteration we double the angle Square the radius and then add the original number back to the result the points that eventually leave are not in the metal BR set while the points that stay in the circle are part of the metal bro set the different colors show how many steps it takes for a point to leave I made a simple mandal bro plotter earlier in the challenge which also lets you change the repeated equation I also made it initialize Z to the point instead of zero which just Skips a step for the metal bar set keeping it the same but it makes some other equations more interesting later I made a project which lets you track the path of a specific point and you can see how the points in the metal bro Set Don't Escape while the points outside of it do one thing that I thought was interesting is if you look at the equation Z * C it gives you this simple Circle however when we look at the points as path inside the circle it's still incredibly complicated I also learned webgl sometime during this project which let me make a better plotter and a cool project to draw Julia sets which fun fact were created by a noseless mathematician named gastone Julia Julia sets are almost the same as mandal bro sets except we use the mouse coordinates for C and initialize Z to the pixel coordinate all of these fractal are really good examples of how simple rules can be used to create intricate patterns another theme in the challenge like this was cellular automa which show larger Trends through populations of individuals which each follow a small number of rules the first autom based project I made was this little tool where you can describe a rule for each cell to follow and then it'll simulate it a cellular autom consists of a grid of cells and each cell is given a state of either alive or dead then to get to the next step each cell looks at itself and the eight cells around it and uses a rule to determine whether it will be alive or dead in the next step one famous example is Con game of life but I think that even some of the simpler rules were really interesting one week later I made voids which get used in video games and movies to simulate bird flocks each boid follows three rules but together we get this cool flocking Behavior the Wikipedia page used to point out that boids sounds like if a person from New York said Birds but sadly between making this project and releasing the video it's been removed from the article between voids and the next project I learned how to use the GPU to accelerate code which is perfect for cellular automa since the GPU is all about doing a small task thousands of times normally for each pixel on the screen with the GPU I could work with multiple Neighborhood Cellular autometa where instead of each cell looking at just the eight cells around itself each cell can look at hundreds or thousands of other nearby cells before determining whether or not it will be alive or dead in the next iteration by breaking these hundreds of cells around the cell into quote unquote multiple neighborhoods we can more easily write rules about them multiple Neighborhood Cellular automa are more continuous and often times look more organic than normal cellular automa the last cellular automa adjacent project I wanted to share is this Lon T it's not really a cellular automa per se but I think it fits pretty closely with the aesthetic so I'm going to talk about it here lon's ant is an ant which lives on a grid and leaves a pheromone trail of either black or white when it steps onto a white square it makes the square black turns to the right and then goes forward to the next Square when it steps on a black Square however it'll make the square white and then it'll turn left and continue onwards by itself this doesn't make a very interesting pattern but if we add more colors and Associate directions with each of the colors we can get new and cooler patterns most of the other math projects don't really fit into a specific category but I'll go over some of the cool ones quickly I made a 2D and 3D grapher for some equations that I thought were cool in Desmos and I also made a lot of animations on the weeks where I kind of just wanted to call it in which was a lot of the time I also made a barely functioning wave function collapse project which is a cool algorithm based on information Theory and a fun multiplayer competitive version of Conway gam of life that's about it for the math project so we'll move on to the next category the final category is AI projects the first of which is this genetic algorithm I made which learns how to play Flappy Bird genetic algorithms are a lot easier to make than other forms of machine learning since they don't need nearly as much math the basic idea for most machine learning techniques is to take a couple of inputs like the distance to the pipe current speed height of the next pipe and current height and then a desired output like should I flap this turn and create an equation that takes those numbers from the input and uses them to calculate a number related to the desired output in many machine learning techniques programmers create an equation using structures called neurons and layers which use a lot of random variables and generate a completely random output to start with then the learning part of the algorithm goes back and fixes the values of the random variables until the output is closer to correct there's a lot of fancy ways to figure out how to change these random variables but most of them need a lot of advanced calculus genetic algorithms on the other hand are easier a lot of the time because they're based mostly on just random numbers the way they work is you start with a generation of a thousand of these equations and then you let it run until there's only 10 left you take the top 10 and you make a th copies of them with with slightly random changes from the first 10 as the generations continue these top 10 equations get better and better until you finally have an equation which can play Flappy Bird pretty well this version of flappy bird is pretty easy so you can actually make just a one layer neural network to play it and it would learn faster but when I made the project I thought that the bigger graph looked a lot cooler so I used it anyway right after this I made an adventure game using open ai's Da Vinci gpt3 model which would soon become chat GPT there's not really that much to say about this since chat PT is out now but at the time I do remember being really surprised at how amazing the AI was afterwards I made a much much much less amazing AI as all it does is the xor operation which tells you if exactly one of two things is true the reason I chose to make this is because the xor problem is one of the first steps in ai's development early AI were called perceptrons and they only had one layer which meant they could only solve problems where you can draw a straight line to separate the correct and incorrect answers there isn't a straight line to solve the EXO problem so you have to include a second layer this project was the first time I use gradient descent for multiple layers in a machine learning project which is much harder than the genetic algorithm that I did earlier once I learned how gradient descent worked for multiple layers I felt like I understood enough to finally use tensorflow which is a popular machine learning library I use tensorflow to make a gan that creates magic cards a gan or generative adversarial network is really two AIS a generator and a discriminator the discriminator learns how to tell if a card is real or fake and the generator tries to get better at making fake cards to trick the discriminator over time both AI get better and the generator is ideally eventually going to be able to create realistic cards after training it for a long time on Google collab it did learned some of the key features of a magic C but I think it would be hard to play a game with them and that's it for the projects that I want to show from this challenge last video I asked for a 12th subscriber and instead somehow y'all gave me more than 12,000 the uh the support really does mean a lot to me and it does take a lot of time for me to make these videos so if you like this one please do consider subscribing bye
Info
Channel: Carter Semrad
Views: 542,666
Rating: undefined out of 5
Keywords:
Id: nr8biZfSZ3Y
Channel Id: undefined
Length: 13min 13sec (793 seconds)
Published: Sun Feb 04 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.