stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

syntaxbrew_dev

@syntaxbrew_dev

Joined June 4th, 2026

  • 5Devlogs
  • 3Projects
  • 1Ships
  • 4Votes
A guy who devs
Ship

I made a Wolfenstein-inspired 3D raycaster built from scratch using C++ and Raylib!

I personally found the math and geometry behind the 3D rendering logic the most complicated portion of the project, but it certainly felt rewarding when my code actually worked and didn’t crash!

I’m proud of the fact that while creating this project, I was simultaneously improving my C++ knowledge, graphics programming concepts, and low level programming skills, all in one month. I’m also proud of how I still persevered even when things were confusing or didn’t make sense.

To test my project, people can simply use the web-playable version. If they want to run it locally, they must clone the repo, install CMake, Ninja, use a valid C++ compiler, and build/run the project.

  • 4 devlogs
  • 21h
Try project → See source code →
Open comments for this post

1h 57m 21s logged

Today’s the day I ship, I finally released a web-port version of my raycasting engine, and created a detailed README on the Github repo. To do this, I had to use a tool called emsdk which allowed me to convert all my C++/raylib code into Web Assembly + HTML code!

I now have live web page up and running using GitHub pages & actions, and I debugged any issues that arose (such as the mouse not properly locking to the screen)

0
0
21
Open comments for this post

6h 0m 10s logged

This took a while, but I successfully added texture rendering to walls, alongside solid roof and floor colors.
To do this, I created my own MapTexture class which extracted pixel data from a loaded image.For each ray that fired, its final hit position was mapped to a specific pixel from that texture. (using some row and column calcuations)

Some things I also did:

  • Added support for multiple wall types
  • Added noclip toggle, zooming in/out controls
  • Optimized shading calculations for walls
  • Fixed raycasting bug dealing with negative coordinates
0
0
11
Open comments for this post

6h 25m 51s logged

Today I finished implementing the core rendering loop for my 3D C++ raycasting engine and also added player-wall collision detction!

In summary, for every column of your screen, a ray is fired to draw a single vertical strip of a specific size based on how far that ray travels. Then all these strips are combined to form a 3D scene. I also added shading to specific sides of walls.

I then learned how to fix edge distortions (fish-eye correction) and uneven ray distributions using math + geometry.

I also spent ALOT OF MY TIME trying to fix a bug where the player could clip into a corner and get stuck inside, which got very annoying to debug. But I eventually solved it by checking for wall overlaps across the player’s every possible movement position.

0
0
8
Open comments for this post

6h 20m 26s logged

I have started working on my new pseudo-3D raycaster project. Using raylib and C++, so far I have created the basic boilerplate code for the main window rendering loop for a basic 2D map. But most importantly during this first session, I created a basic, but working raycasting system which used an algorithm called DDA. (grid-traversal algorithm)To implement it, I worked through the underlying math and logic behind the algorithm, and went through some examples before implementing the code myself. I faced many bugs while coding it and it took a lot of trial and error before I finally had it working.. . The CastRay() function I created allows rays to traverse efficiently across grid cells, skipping over unnecessary positions and without missing any collisions. For the next dev log, I hope to have completed the actual Player object + movement + collision detection, and implement the 3D rendering loop that constructs the 3D scene using my CastRay function.

0
0
11
Open comments for this post

4h 8m 47s logged

Dev log #1

For the past 2-3 days I got started working on a python discord bot that I named Kairos, meant to be something that helps people (like myself) maintain or track their habits through the use of Discord pings, and streaks as a reward system.

I never actually built a Discord bot before :(, so I didn’t code much of the actual features yet. My first dev log is mostly about spending my time learning new tools/libraries such as discord.py, and SQLite (for storing user data).


Progress so far:

  • I made a new application on the Discord dev portal, configured bot intents and gave it administrator access to a test server
  • I created the initial discord bot boiler plate code, using classes and methods provided by discord.py: setup_hook, on_ready, on_message
  • I created a .env file to securely store and load the bot token
  • I implemented the aiosqlite library, that runs SQL commands to an SQLite database (.db file)
  • System that currently logs in new discord users who run a Kairos bot command for the first time
  • Created a command group for running slash commands related to managing user habits (only has 1 command currently tho)

Things I learnt:

  • Setting up a discord bot, and creating the boiler plate code
  • Usage of asynchronous functions
  • How bot slash commands are created and synced within discord’s command tree
  • First time using SQL, learning database concepts and understanding each of the clauses: INSERT, SELECT, FOREIGN KEY, was a bit confusing but I feel like I’m getting more of a grasp on it
0
0
1

Followers

Loading…