DanceTime is back!
Tags: webdev, javascript, tensorflow, machinelearning
Published: 2024-03-24 23:03:50


DanceTime is back and available for anyone to play!

[If you're only interested in DanceTime, click here to skip to that section.](#dancetime)

## Mental Health

Over the last few weeks, my mental health hit an all time low. I didn't have any motivation to work on [Simmer](https://simmer.cooking), or sometimes even get out of bed. I knew this was bad, so I started doing some introspection.

Why was I feeling this way? I felt like everything was going right.

And why didn't I feel this way in the past? What had changed?

## Realization

After a lot of time thinking and writing, I came to the conclusion that **_my brain needed more space to be creative._** This means that if I have a fun and cool idea I want to try out for a little while, then I need to give myself space to do that. Working on Simmer non-stop has been a bit exhausting, and not because of the amount of work that I am doing. I found that it was mentally draining for me to work on the same thing without having any creative freedom beyond that one project. 

In the past, I've always bounced between a few projects depending on how I'm feeling. If I get inspired on one project, I go after that one. If I want to work on another, then I go and do that and let my creativity flow.

But for the past few months, my brain has been locked up and trapped working on a single thing. I thought this was fine, but it was actually a huge mental blocker for me. I knew I had things to do on Simmer, I knew I could do them, but my brain just didn't want to do them. It wanted a break, and not just a break from working on it. It wanted a mental creativity break to be creative thinking about other challenges and problems beyond Simmer. It wanted to flex its muscles more outside of this one problem space.

After I realized that, I thought about possible solutions. What should I work on outside of Simmer?

I thought that games could be fun. I've made a bunch of physical card games in the past, and I figured it could be fun to convert those into online multiplayer card game experiences.

## A History of Card Games

When I was in 8th grade, I used to play Uno during lunch with my friends. Eventually I wished that Uno was more exciting with more cards that did special things. And then I realized: I could make my own version of Uno with my own cards. I could even put my friends on some of the cards!

And so I did exactly that when I created DINO.

DINO is just like Uno, but with a few new cards. Players take turns placing cards that are of the same type or color, and the first player to 0 cards wins. There are cards that make others draw, cards that reverse the flow of the game, cards that make _you_ draw when played (this one is not a good card to have), and even cards that allow you to place two more cards on your turn (which can result in fun combos and out-of-nowhere wins!).

Between 2013 and 2016, I created five total card games:
1. [DINO](https://www.thegamecrafter.com/games/dino): the first card game based on Uno
2. [DINO 2](https://www.thegamecrafter.com/games/dino-21): the refined version of DINO with a lot more special cards
3. [DINO: Age of Extinction](https://www.thegamecrafter.com/games/dino:-age-of-extinction): the crazier version of DINO 2, including an all-new DINO deck
4. [Challenger](https://www.thegamecrafter.com/games/challenger): an original strategy card game
5. [Challenger II](https://www.thegamecrafter.com/games/challenger-2): the refined version of Challenger

<aside>These card games are actually available to purchase through the above links - I'm surprised that the website is still up! If you're interested in them, I would only recommend <i>DINO: Age of Extinction</i> and <i>Challenger II</i>, as those are the most recent and most refined games. I can send you a copy of the instructions/rules as well.</aside>

In 2017 I went off to college, and since then I haven't made any new card games. I had big plans for another version of DINO called DINO: Dragon Age, which would have yet another all-new deck of dragons (in addition to the dino deck). I recently looked at the list of cards I had planned for it and some of them are pretty crazy, and it looks like it could have been a lot of fun. But I think the main thing that stopped me from working on it was (besides being busy with college) that it wasn't really that different from the previous versions of DINO. It was also getting a little bit too crazy and complicated. I wanted to create something new, something original, and something that wasn't just another Uno ripoff (although admittedly at this point, it didn't really resemble Uno at all).

So I stopped making physical card games and focused my time on creating things with code. I made a lot of different gamemodes for video games and hosted my own servers so people from all around the world could enjoy the experiences that I crafted for them (usually some sort of competitive survival gamemode). 

After thinking more about card games, I realized that it would be a lot of work for not a lot of reward. I would build complicated multiplayer systems from the ground up, but for what? Who would play them? These games are pretty dated and I don't even think I would play them. For me to be inspired while working on something, it needs to be new, fresh, and exciting.

Something that I'm passionate about.

And remaking my old card games online wasn't going to do it.

So I decided to revive my project from a couple years ago: **DanceTime**.

## DanceTime

[DanceTime](https://dancetime.io) is a web app where anyone can dance to any YouTube video. Think Just Dance, but for YouTube. As you dance to the video, you get a realtime score using your webcam of how well you're doing. At the end of the dance, you get a total score based on how well you did overall.

It's a ton of fun, but it broke about a year ago for some reason. The code in it was when I was just starting to learn Svelte, and it's pretty messy. But I think the potential for DanceTime is huge, so it's the perfect project to get back into.

I was also really impressed with some of the scoring algorithms I wrote a few years ago for it - they're surprisingly well thought out! The tech that DanceTime uses is also pretty cool - it all runs in your browser using realtime pose estimation for your dance moves with [TensorFlow.js](https://www.tensorflow.org/js).

I spent all of last week rewriting DanceTime to use a much more modern tech stack. I also reorganized the code and improved a _ton_ of stuff. I don't even know how DanceTime worked before - it was a miracle with how messy that code was.

It was surprisingly fun to rewrite DanceTime to get it up and running again! And now anyone can play it without having to log in!

[You can play DanceTime now right here.](https://dancetime.io)

I'm really excited for the future of DanceTime. I'll work on it whenever my brain wants to. I want to get it working on mobile devices soon, and then after that I'm going to look into integrating it with [Discord Activities](https://discord.com/build/embedded-app-sdk). Discord Activities is a brand new feature that enables developers to create games using web tech (think: websites) and embed them right in Discord for anyone to play and share. DanceTime is a perfect fit for this because people will be able to simply join an activity with their friends and start playing DanceTime, using their phones to record and score their moves.

I have _tons_ of ideas for DanceTime in the future and I'm excited to see where it goes!