++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INTRO
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hi, I'm 5you (it's an english pun in french, a concept in itself).
I think we all oughta learn about what we did good and what we did wrong when we make a game. A jam is a good place to reflect on that since it all goes so fast and everything is still fresh in our memories.
Of course I invite you to play the game, so we all know what I am writing about (and yes, I need ratings).
https://ldjam.com/events/ludum-dare/40/addtris
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
WHAT'S ADDTRISS+++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Still here ? Have you played the game ? If you haven't, you can stay but be extra attentive.
If you just like to read, know that Addtriss+++ is a Tetris kind of game, meant to be played on smartphone. There's no iPhone version because I couln't compile it without Apple credentials or whatever... There is a Windows version, that I used for testing and I chose to make it public so more people can test the game. I will not debate about the problems inherent to this version.
If you ever played Tetris on a GameSomething, you have a good idea of what Addtriss+++ is. But the game adds to the original formula to show that yes, it all becomes much more dificult when you "add more".
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
THE CONCEPT
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"The more you have, the worse it is" Go now ! You have 48h.
Except I totally forgot there was a LD and I wasn't even home. In France, it started at 3:00am on saturday and ended at 3:00am on monday. I learnt about the jam on Saturday morning and started at about 2:00pm. I say "made in 38 hours" in the game, because I didn't even took the time to calcul, it's actually 37h and I submited at 2:00pm so it's a total of 36 hours.
With much less time left to an already tight schedule, I had the idea to enter the LD with a humble GameBoy™ like project, using my GemToy™ virtual machine for android. This schedule also oriented me in the idea to rethink an already existing game in order to adapt it to the theme, so I could go faster, skipping some of the thinking I would normally do.
So I took a somewhat simple game that could totally be broken if you add just a tiny more to it. What if Tetris had bigger shapes ? It would definitely "get worse" for the player.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
THE ENGINE [part one]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
No time to waste, I directly worked on Tetris engine. Used some tuto, adapted to what I wanted and felt like. And I imediatly based everything on an original Tetris metric. You could superpose the two games, it would feel right.
It took some work, but it turned out fine, and it was playable with the GemToy™!
If you've just raised an eyebrow, you probably played Game A and not Game B. This "first engine" is what's used in game B.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GRAPHICS & RAFINEMENT
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I then worked on the visual aspect of the game, something that I really like doing, as it require no thinking, which is a very welcomed thing to have in a middle of a jam. That's why I don't delay it to the end. Also, I think it's important for the apeal.
I wanted to make something more pleasing to the eye than the cold and simplistic look of the original game.

It's also at this point that I realized that the game would be too overwhelming if your next shape is too hard to shove in your construction and I could as well give the player a choice between two shapes, because there was room for that in the UI.
After some testing and tweaking I added sounds that I quickly made on a virtual synth and "borrowed" a free of right cover of Freebird, a song that starts calm and become crazy after a while, a good fit. I finally went to bed. The prototype was ready.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
THE ENGINE [part two]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I woke up pretty late (around noon) and had a good lunch with my dad. I then watched TV, a great documentary about WWI pilots, french aces like Charles Nungesser, René Fonck or Georges Guynemer. I wasn't too scared to waste some time because I had an engine working and more important, time on resting is NOT wasted time !
Your brain (espacially mine I recon) needs this time to wash out all the strain and exhaustion from all this work. Crunching is a part of programming yes, but too much crunching also makes you do stupid things and you end up wasting even more time. Plus it's not pleasant, and I'm not here to hurt myself.
With bigger shapes, the game started to get it's own interesting thing, but I soon came to a conclusion, It's too close to Tetris with just a few 5 blocks shapes, and I would have to add an infinite number (actually totally finite but it's a lot) if I want to include every shapes you can make out of 1,2,3,4,5 or 6 blocks ! I needed something that would generate them automaticly !
Let's get technical.
The original engine had shapes that only were sprites. It's very simple to handle, rotate etc... The new engine had to create shapes randomly out of a given number of blocks. And then be able to handle them with rotation and collision. It also had to be able to give you a preview of two possible next shapes.
My first idea was to make blocks work together, glued into one shape but it wasn't working properly. I then had the idea of using something I'm not very familiar with : surfaces. The engine actually creates shapes with blocks, register their coordinates and then draw blocks on a surface using those coordinates and finally turns this surface into a temporary sprite, with precise collision, that will be the sprite you're playing with.
As I stated in a blog comment, my brain melted at this point and things started to simply not work ! I had lines of my "old" code copy pasted in the new, it was exactly the same but it kept on crashing for no apparent reason! To this day, I still don't know what went wrong. I decided to re-type all this part of the code from scratch and it finally came alive ! I almost abandoned the jam and in a few minutes it was back on rails.
I added a system that increses the number of blocks per shapes with time and decreses it by one if you manage to destroy 3 lines in one shot or by 2 if you destroy 4. The scoring system is also more generous (comparatively to Game B) to compensate with the difficulty.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
THE FINAL STRAIGHT LINE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Not much time left, about 2 hours.
The game still had a major issue in Game mode A. Note that there are minor and major issues.
I know the rotations are a bit erratic because the middle of the sprite is not always in the middle of the shape (this is due to the creation of the sprite on the go, handled rawly with no after adjustment). For the same (almost) reason, preview shapes sometimes appear a bit outside of the preview windows. And the dificulty balance is a bit off. Those known issues would normaly be adressed and corrected, but this is a jam and there is no time left.
There is also a somewhat game breaking problem, the major issue. In Game A, blocks seems to appear from nowhere either when you land (most often on the bottom right of your shape) or more critical, in the air, stuck to your shape. I'm not really sure why this is happening but I do have an idea.
The conundrum here was the following : do I finish the game and leave this nasty bug ? Or do I wrap it up into something that resembles a game, with working menus and a small score keeper ? I chose the later. A game has to be a game first, and then it has to work flawlessly. Plus I wasn't sure if I could correct the bug in time. I then proceded in uploading and shipping and the time was almost over.
With the last 20 minutes I could have tried to fix the bug, but I had no clue (now I kinda have) about what was wrong.
So, I hope people will see the game for what it is when it works and not for what it is when it's broken. The Game mode B works fine, so it helps understanding how Game A should feel.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EPILOGUE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I'm really glad that I participated again ! Making a game in such a short time is always a huge challenge for me. It's also a very very good booster as I realise that with some effort, I can come to a result pretty quick.
I hope that I'll be able to keep some of this energy in my next work.
It was also a good way to test out my GemToy™ project. This environement is meant to be used for a lot of smartphone games I'm working on and I want it to be solid. I realized after a while that the version I intergrated (it's more the other way around) in Addtris+++ was obsolete (for instance youcan release the diagonal buttons and they still show pushed if you hold a direction), but nevermind. It's working and the first feedbacks about it are positive.
Speaking of feedback, I hope I will get more. I didn't expected an Android game to get a lot of attention in a Ludum Dare, and so far I was proven right. Nothing grievous, but just a thought. My previous attempt at LD were worse and I had more reviews.
I suppose I have to play the game of playing/rating other games ! I only reviewed a few so far, maybe I'm more tired than last time.
Well, THANK YOU if you took the time to read all that ! I hope it was as interesting for you to read as it was for me to type ! And please feel free to comment and share your experiences during this month !
5you. (by the way, the pun is that it can be read as "cinq you" in french which resembles "thank you" with a french accent)
https://ldjam.com/events/ludum-dare/40/addtris