Development was a fairly smooth process at first. The game itself is quite simple so I completed the core gameplay in a few weeks of spare classtime (with a solid week or so of that dedicated to solving a bug related to me missing a case of aliasing). The game was fairly small at this point and had all the basic features I wanted, so I set my mind on adding feature after feature to set it apart from all the boring JS Tetris-clones I had found on the internet. Adding functional features like wall-kicking, holding pieces, and score multipliers were simple, but visual features took much longer. I am not exactly adept when it comes to art, so creating things that looked at least somewhat decent took many hours of trial and planning. I settled on the galaxy theme because that meant I could just draw a bunch of random shapes and apply a heavy blur. The end result I thought looked pretty good by my standards, but every time I went to add new flair to the game I was forced into another cycle of repeated trial and error until I reached something I was happy with. This includes features like making sure all the pieces are centered in the upcoming queue, making lines flash white when they're cleared, and displaying scores in real time when lies are cleared. I understand that it may not seem very impressive to most people, but I am very proud of the art I created for this game and I think it represents the high point in my visual design so far.
After completing the menus I figured that the game was ready for "release". I bought the domain www.elijahcirioli.com and created this site. Well, it didn't really look like this. But it quickly became popular, at least within my computer science class. At this point I decided to commit further time to improving the game and adding features. I'd sporadically add new gameplay options like swappable block palettes, and my own custom system for Delayed Auto-Shift (DAS) with which I could customize the movement delay. I would also commission my close friend, James Nicholson, to produce an original song to accompany the gameplay. I really don't know anything about music, but I was very pleased with what he created. At the same time I tried my hand at creating some sound effects to play alongside the game. They're not amazing but I'm not too upset since I doubt many people play with sound on in the first place. I also added a bunch of random little features like T-Spin detection and reworked wall-kicking but those rarely get noticed by anyone which I'm okay with.
The largest addition I ever made to Tetrisn't post-launch was the addition of online leaderboards. I had dreamed of adding this since I discovered how interested my peers were in my game, and I had a rough idea of how I'd go about it, but I knew I'd have to learn a lot of new technologies to make it a reality. Eventually, I felt bold enough to give it a go. The system consists of a Node JS server running for free through Heroku. I had previously used Node JS for a couple chat-bot projects hosted on a Rapsberry Pi Zero W but that was kinda a pain to work with so I decided to go with Heroku this time. I finally got to learn all about git so I could get my code onto the server. It was about time I actually learned how to use it, and I was thankful to find out that I already knew a lot of what I needed from seeing git-related programming memes. The Node JS server is connected to a PostgreSQL server which is just the weird Heroku branch of SQL. SQL was new to me as well but that wasn't too difficult. The end result has the main game sending GET and POST requests to the Node JS server which handles the data and stores it in the PostgreSQL table. This was a lot of work (and a lot of asynchronous callbacks) in the span of two days but the end result makes it worth it to me.
This was far and away the largest programming undertaking I've completed. Through it I was able to learn a lot about maintaining projects post-launch and releasing things publicly. All in all, would recommend, please nobody sue me.