Today I sprinted to finish the Reverse Bird prototype. I have a new project planned for June, so I’m trying to finish the prototype before then. It should be done tomorrow!
Comic Sans for Coding
I write the first draft of all these posts in Comic Sans. It’s a controversial font, but I like it for writing. Comic Sans is warm. It doesn’t judge. I feel more free writing with it than other fonts. So I thought, “If I like writing with it, why not use it in my code…
A Better 2D Camera (Reverse Bird)
Today I worked on an improved camera for Reverse Bird. It’s still kind of a hack, but it’s less of a hack than the first camera. Now I’m rewriting Reverse Bird to use the new camera. I also started using Git to track the project version history.
Game Development and Stacking Pancakes
I just watched this video by Lazy Devs about game development and I wanted to write about it. So I did write about it. You might even read what I wrote. I know I did. Although, you should watch the video before reading because it’ll make more sense. I understand if you can’t; it is…
Reverse Bird, Prototyping 1
Today I’ve been playing some of the original Flappy Bird. If I’m making a Flappy Bird clone, I may as well do it right and reference the original. While playing, I noticed that the bird’s rotation and jump are much more relaxed than I remembered. On the coding side, I fixed a bug where the…
Sprite Rotation in PICO-8, 2
Today I worked more on sprite rotation, but it seemed best if I used filled triangles instead of sprites. I ported the triangle fill function from my 3D render and with that working, here’s a prototype of Reverse Bird: It’s still missing collisions and everything else that would make it a finished game, but the…
Sprite Rotation in PICO-8
I have a game idea which needs rotated sprites or at least rotated rectangles, but PICO-8 doesn’t have a built-in way to draw either. I found some sprite rotation libraries and, while I may end up using them, I wanted to at least try writing my own code. I started by porting the textured triangle…
Optimizing The Bubbles Screensaver, Again
I already optimized this once before, but I’ve found a much better collision checking system. The new bubbles screensaver now supports 70 bubbles, up from 50. The new system Here’s how it works: it sorts the bubbles based on their X position and loops through the bubbles. For every bubble, it looks backwards in the…
Learning C, Day 29 (Terrain Collisions)
Today I worked on adding terrain collisions to the 3D renderer! I looked into 3D collision detection, but it seemed like a lot of work just to have the player walk around on angled surfaces. I had the idea to use pseudo 3D collision detection with a height map. So I render a depth pass…
Review of “3D Graphics Programming from Scratch” (Pikuma.com)
Here’s my review of 3D Graphics Programming from Scratch by Gustavo Pezzi. TL;DR: It’s amazing 11/10, just buy it already. I can confirm the other positive reviews are all true. So in this review I’ll focus on things the other reviewers haven’t already said. Cue the montage! How I started: And here’s some things I’ve…
3D Dots Demo (PICO-8)
Just a quick demo I made in few hours between yesterday and today. Controls: Up and down arrows to control the rotation speed “Z” to toggle FOV sliding
Pineapple Skroob (Meme)
Pineapple skroob! Rendered in my 3D renderer. Credits/sources used: Original meme “it need skroob” by u/freesurrealestate. Pineapple by grafi, licensed under CC-BY. Robot hand by SeanNicolas, licensed under CC-BY. I made the scrub brush, download (CC0). This meme took a while because I had to rig the hand, pare down its face count, add shading…
Learning C, Day 28 “End of the 3D Graphics Course”
Today I finished the 3D graphics course! I’m super happy with how everything turned out. I’m a little sad that it’s over, but mostly excited to do more projects. I started making a 3D meme for this post, but it took way longer than I expected so I’ll probably finish it tomorrow. I’ll also post…
Learning C, Day 27 “Camera Controls”
Today I updated the camera to use the mouse and WASD! The renderer is really starting to feel finished. I also made the camera able to look up and down, cleaned the code, and added a method to simulate low resolution displays, all of which took about two and a half hours. Next up is…
Restoring Discord’s Blurple Color
Discord updated their branding a few days ago. I’m okay with the new logo and I can live with the new wordmark, but I don’t like the new colors. They’re so saturated, especially the new Blurple. I want the old Blurple back, so I made a script to restore it. Here’s what it does: The…
Learning C, Day 26 (Camera Clipping 4)
Camera clipping UV coordinate interpolation! It only took like an hour to add and it was really simple. I used linear interpolation between the polygon points on either side of the clipping plane to get the UV coordinates of the new point. I thought I might need barycentric coordinates to interpolate the values, but because…
Learning C, Day 25 (Camera Clipping 3)
Today I spent about two and a half hours implementing camera clipping. Now the renderer doesn’t crash when objects go off screen! I have yet to interpolate the UV coordinates, though. Textures look broken right now because the new points use the old UV coordinates. The method for creating triangles from polygons ended up being…
Learning C, Day 24 (Camera Clipping 2)
Today I spent another hour on camera clipping and I’m almost ready to start implementing it. My idea of using dot product to check whether points are inside a plane was correct 🥳. I do have some questions, though. If I’m clipping triangles by creating new vertices, the resulting polygon may not be a triangle.…