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!

tiydwe

@tiydwe

Joined August 26th, 2026

  • 40Devlogs
  • 2Projects
  • 1Ships
  • 18Votes
hi :)
Ship Pending review

Introducing JAM, a 2D puzzle game based off of creating and modifying road networks to get cars from here to there! In JAM, you build a road network and watch simulated cars try their best to traverse it. Then, you get feedback on your road network and try to make it better!

If you want to play JAM, it is incredibly easy! Just follow the quickstart instructions in the README here https://github.com/tiydwe/jam!

JAM is the most challenging, in depth, project I’ve ever done, and I’m proud of it! JAM is built from scratch using C++ and the Simple and Fast Multimedia Library, without any game engine. I’ve learned and grown throughout building this project and many ways.

For example, one thing I’m proud of is the underlying abstraction and code structure. I’ve spent countless hours making, learning, and struggling with proper memory management, ownership models, and relationships.

Another example is the UI. Although the UI might look a bit simplistic, it was built entirely from basic primitives, without fancy game engine features. Getting the UI functional and good looking was a major challenge for me.

After spending over 70 hours on JAM, I’m proud to say that this project has exceeded all of my expectations and been an amazing learning experience!

  • 26 devlogs
  • 74h
Try project → See source code →
Open comments for this post

1h 42m 2s logged

Added cars fade out animation

Cars now fade out when they despawn and when they reach a destination! So when I sent this to a friend they got confused why cars kept disappearing, so I added this.

When a car reaches the destination, the car will fade out green, but if the car despawns because it has no route it will fade out red. This was actually harder than it seems because my code was just basically freeing the car class as soon as the car reached the destination, but I changed the code so it would decrement a counter before deleting itself and use the counter to change the color of the car.

0
0
11
Open comments for this post

2h 12m 44s logged

Fixed some copyright issues (oops) and created first release

So basically since the beginning of this project, I’ve been just putting ARIAL.TTF in the assets folder. It turns out that thats actually illigal and copyright infringement (oops), so I’ve switched to a different open-source font (and I included the license/attribution). I’ve also cleaned the repository history to remove any lingering font files so I’m not violating copyright or anything.

Besides that, I’ve created the first release, v0.1.5 (the 4 before were all broken/tests/copyright font issues). I used AI to help me write the github actions workflow (because like literally NO ONE knows how to do that) and got builds for Linux, MacOS, and Windows. I’ve only tested it on windows so far, but I’ll try and test linux on a VM later.

Anyway, I’ll be continuing to work on the game and make some UI/UX improvements.

0
0
36
Open comments for this post

57m 6s logged

Improved the title screens, fixed some more bugs

Bugs fixed / features added:

  • Added another car type
  • For some reason cars went backward, so I fixed the sprites
  • Added title screen images
0
0
41
Open comments for this post
Reposted by @tiydwe

1h 34m 9s logged

Tried adding buildings, but didn’t work out

So I tried putting SimCity style buildings and it didn’t really go very well. I think its mainly because

  1. I’m not a good artist
  2. The roads aren’t axis aligned and I’m not going to do some crazy work to get all the buildings nicely lined up and angled like City Skylines.

Other than that, I also updated the stats screen to make it look better and more easily show the requirements.

0
1
162
Open comments for this post

1h 34m 9s logged

Tried adding buildings, but didn’t work out

So I tried putting SimCity style buildings and it didn’t really go very well. I think its mainly because

  1. I’m not a good artist
  2. The roads aren’t axis aligned and I’m not going to do some crazy work to get all the buildings nicely lined up and angled like City Skylines.

Other than that, I also updated the stats screen to make it look better and more easily show the requirements.

0
1
162
Open comments for this post

1h 59m 12s logged

Lots of new misc. features!

I got some more friends to try my game and got lots of feedback. Here’s what I added:

  • Crosswalks at intersections (makes them look so much better)
  • Cars will show a no route icon if they can’t find a route (now players won’t get stuck wondering why cars arn’t moving)
  • Hovering over cars will show their intended destination.
  • Another level!

I’ll keep working on more UI/UX upgrades. The game is looking a lot nicer now too!

0
0
84
Open comments for this post

46m 59s logged

Added some more UI features and fixed misc. bugs

So I showed this to some of my friends and got some very helpful feedback especially on UX.

Feature improvements:

  • In the simulate window, I added a back button to go back and cancel the simulation so you no longer have to wait for the simulation to finish.
  • When you are building the start of the road, it shows a preview of where the road will be to help with snapping

Bugfixes:

  • My buttons were previously accepting any clicks, even when the focus was not on the application, I fixed that by checking the focus of the application before accepting mouse clicks.
  • Road snapping stayed the same distance from intersections even though there might be cases when the user wants to create a road near another road but not directly adjacent. I fixed this by multiplying the snap distance by the zoom factor to get a new corrected version.

Overall, I don’t plan to make many more changes and will probably just add another 3-5 levels, work on the title screen, and get the game ready for shipping.

0
0
63
Open comments for this post

1h 14m 40s logged

Fixed a few problematic bugs and updated the buttons.

There were two major bugs that I fixed today:

  • Lane merging: Cars would often get stuck trying to merge when other cars also wanted to merge. This was because the merging positon was behind the actual car so they were in a deadlock. Fixed it by making sure to actualy update the new merge position if the car still has velocity.
  • Button press: Pressing a button which switched to a new screen would press the button on the new screen directly under the press. This took me embarassly long to debug, mostly because evey time I put a breakpoint, the issue would go away. The fix was changing the initilization of a button from isPressed false to true, which was pretty funny considering I spent 30 minutes debugging this.

I also updated the buttons and added a 4th level where cars are going both directions. It’s actually pretty hard to reach the target.

I also changed the pathfinding to take into account the speed limit of the road and put penalties for going through routes with more intersections.

0
0
21
Open comments for this post

3h 37m 42s logged

Huge UI upgrade and fixed a few small bugs!

I’ve added a background, two different car assets, and 3 different levels! I also upgraded the buttons (but I forgot to apply them to the simulation window, so you’ll see them in the next devlog). Additionally, I added dragging in the simulation window, which was in the Editor but not the Simulation for some reason.

There were also two major bugs that I fixed today:

  • Broken pathfinding on some cases: I was kind of stupid and had this weird edge case in a set where roads would not insert because the set thought they were equal because of a dumb comparison function, but that is fixed now. It took me way to long to fix this, but at least that’s done now.
  • Cars always faced right (east): If you didn’t notice, in all my previous devlogs, the cars (which were just placeholder red squares) didn’t ever turn, which was kind of silly of me. Luckily, that was pretty easy to fix and I only had to change 3 functions.
0
0
89
Open comments for this post

40m 43s logged

Made kind of a stupid mistake, used an NPN transistor for high-side switching.

So basically, you aren’t supposed to use a NPN transistor high side to drive a higher voltage than the microcontroller because you can’t and it will just always be off. IDK how I didn’t catch that earlier, but I’ve fixed it and now am using a p-mosfet to switch and a n-mosfet to drive the gate of the p-mosfet low from my microcontroller, which should actually work. I also added some capacitors to help smooth the power supply output.

0
0
32
Open comments for this post

1h 41m 39s logged

Added 3 new road types and updated visuals for the 4-lane road!

Well, all 4 road types are now added so I can safely say that I am done with ALL the major parts of the game!

  • Saving/Loading
  • New game
  • Title screen
  • Editor window
  • Simulation
  • End-of-game window

I also added anti-aliasing so the roads don’t look so jagged anymore. One lane roads were surprisingly easy (only like 2 easy bugs in the code) because most of the work I already did was generic enough to accept a road with 0 lanes on the left side. The rest of the time will be spent polishing everything up! Here’s my idea list so far:

  • Add backgrounds so everything isn’t all black
  • Change the color palette (those were supposed to be placeholder colors…)
  • Add some more QOL features (i.e. shows if you are building the road before you click)
  • Improve the car visuals (maybe add some random cars if its not to hard)
  • Add audio!
  • Do a bunch of testing to get it ready for shipping
    If you want to add any more to this list, just tell me.
0
0
69
Open comments for this post

2h 10m 36s logged

Added road hitboxes and placement restrictions!

Roads can no longer be placed overlapping other roads! Implementing this feature might seem really easy, but actually it was really, really annoying. One main problem was that SFML doesn’t have a native way to check if two sprites/rectangleShapes are intersecting so I had too implment the Separating Axis Theorem to check if two arbitray rectangles are intersecting. I also had some issues with rotating (wrong origin), but thankfully I fixed that pretty quick.

Anyway, I think the only thing left is to add all the road types (I’m planning on 1-lane one way, 2-lane one way, 2 lane road, 4 lane road, and maybe 6 lane road) and polish everything up!

0
0
58
Open comments for this post

3h 36m 29s logged

Almost done core game + ui!

I spend the last 4 hours working on the UI! So now when you start the game, you will see a simple title screen where you can start a new game from one of the levels (not shown in video) or load a saved game. Then you can go into the core gameplay loop: edit -> simulate -> stats screen (now shows pass/fail based on level conditions!).

It was mostly tedious to write every single ui class, but at least I finished most of the UI. The remaining things that I need to do is add more road placement constraints (no overlapping), add more types of roads, and POLISH! I’ll be working on those for the next two weeks until the end of Stardance I guess.

0
0
53
Open comments for this post

3h 33m 18s logged

Added game saving!

Pretty self explanatory I guess? The UI is still pretty horrible, so I’m still going to have to work on that. I couldn’t figure out how to get choose a folder, so I’m just using the portable-file-dialogs library. The file saving is pretty straightforward, you just choose a folder and it saves there.

The file format is pretty simple because it only saves the layout you made. Later, I’ll probably polish up the save dialogue and implement loading from the file. I might also work on the level selector screen or the stats screen to show how well you did!

0
0
66
Open comments for this post

2h 34m 5s logged

Added road demolishing!

Roads can now be demolished! Also, if you are in demolish mode and you hover over a road, it will highlight the road red. Some roads cannot be demolished, only roads that you placed can be demolished.

This feature seems really simple but it was a huge pain to implement, mostly because of the crazy amount of pointers to other objects everywhere. Also, remember how I said I shouldn’t be using size_t for both physical and internal IDs, well that came back to bite me. I spent like an hour debugging that, but at least that’s fixed now!

0
0
45
Open comments for this post

2h 28m 55s logged

Made intersections have some visuals!

As you can see in the video, intersections now are filled grey and it actually looks okay. The main issue currently is that if an intersection only has two roads or if the roads are really close together, it causes the polygon to look quite skewed. I’ll probally be working on that next.

0
0
15
Open comments for this post

2h 3m 3s logged

Made cars move smoothly at intersections!

This was an absolute nightmare to do. Mostly because my previous code was not designed at all to do this. I had to hack together a solution where below a certain threshold the car is in the intersection. This has some side effects of sometimes the car goes slow in the intersection and sometimes fast, but I think its reasonable (tighter curve = slower?).

The biggest issue is that my code was designed assuming the two roads on the intersection were symmetrical (idk why i did that) so I had to basically re write the whole intersection code.

0
0
8
Open comments for this post

1h 16m 12s logged

Fixed my BFS algorithm to use Dijkstra’s now!

IDK why but earlier when I first made the BFS I was lazy and just used number of roads. Well, now it uses real road length to calculate distance. I had some problems involving queues and stuff, but it was pretty straightforward to get Dijkstra’s working.

The video just shows a case where the old algorithm would choose the super long route because it had less roads, but now it correctly chooses the shorter route.

0
0
11
Open comments for this post

2h 4m 19s logged

I was feeling pretty tired today, so I didn’t add any major features and instead focuesd on quality of life stuff.

As you can see in the video, the biggest improvements are the road preview and clicking [ESC] cancels building the road. The road preview also shows whether the road is valid. I had a ton of issues with the coordinate systems (there are like 3 different ones! pixels, global, view), but I was able to figure it out.

There wasn’t anything very complicated, but next time I’ll add some kind of visuals at intersections and probally work on fixing BFS.

0
0
32
Loading more…

Followers

Loading…