 So today we are going to see how I ended up creating this game and how we ended up being second on a Godot competition. So last year there was a Godot Jump that my brother and I decided to participate in and it was kind of simple, just 3 days, a basic theme which in this case was temperature and just make a game with Godot and we decided that we wanted to try it, we were working with Game Maker by then and we did a lot of game jumps before so we wanted to participate and even though we live very far away from each other and coordination is kind of difficult sometimes, we blocked the time and we decided to make a game for this jump. We jumped on a call, we started discussing about things but there wasn't anything really that was interesting to us. The first thing that I thought about creating was a game in which you had to guess the temperature because it was like just the most obvious word for it but maybe it was like too complicated to build, especially like where do you get the information from or how does it happen but after a few failure ideas we ended up deciding to go with the temperature one and as you can see in our commit history we have here the first commit which is on June 16th one day after the official deadline started so that's when I started to get the code into github and we're gonna go back and see a bit of how the game looks like at the beginning so the first problem to solve was where are we going to get the information since we wanted the player to see a name of a city and guess the current temperature in that place right now we need to get that information from somewhere one of the issues with this API is that it wasn't free I mean yes it was free like 60 calls per minute but if we're making a call for each city and there's like a lot of people trying the game I had no idea how many people were going to download it and try it when the game was going to be out we needed to have a plan in which this information was served to all of them but I only made the queries myself and posted somewhere so my idea was to get the information first locally save it into a file and have it hosted in a github page that way if people are going to query the github page I can serve infinite amount of data I have to do that and keep updating it so people could try the game at any time so what I did was I created a script in my server which had access to this repository it executed the Python file querying all the information created a JSON file which contained the name of the city and the temperature and from there I serve it on a github page so anybody could get it this script will outrun every x amount of time and one of the problem was that to update it I had to also commit those changes to the repository as you can see this history I had to do that a lot really a lot every time I query it do you see here the temperature of each city at that time which is kind of cool like we can know what the temperature was in London in June 18th 2018 but yeah this service had to be going and not going and going and going for several days until I ended up making a solution that will do it directly from Godot but let's go back a little bit and see how the game actually worked so the game started here and we built everything in the most crappy way possible for instance we did everything with animations so first animation that we had here the fading and you see the effect here of the screen and one of the things that maybe you notice is that the style of the game has these sprites that really like has like a wiggle thingy going on and to make it fit for the text what I ended up going with is having a separate scene and in this scene an animation player which is a rotation of one pixel for one side to the other it's happening so fast that you cannot even see it but direct rotation makes the text wiggle a little bit the lines so that generates the effect that it's moving us with the rest of the sprite we have here the show-up animation which is the sprite doing like this with the hand like this so yeah if we change here the frame yeah okay and goes in this was all done on a sprite instead of doing the animation we had no real knowledge of how to properly use the animation notes so my brother ended up creating just a couple of images with the animation that he wanted and we plugged that in we had a signal set up here so when the animation finished we knew that we could show the hand that is actually staying there and those are the the text that you have there so when you press enter the this label disappears and the new level appears and after that you go to the next screen which is the intro for the game here okay so this is an animation frame by frame all sprites this is really inefficient but it was again remember it's game jam we had to do it really fast so my brother created this I think it was in After Effects and he sent me the export and if you see here like the animation like goes in and we try to calculate some time all this at the beginning was kind of like trying to make the music fit so it felt better but also like even some time for the queries to come in because we were querying the servers for getting the information of the temperature of each city but we were not really sure if the user already got that information in sometimes it took longer or less so to make sure which is added a lot of time at the beginning and it ended up working here we have the main screen which is the game screen that you actually see and I did everything with a regular node as a parent I really wasn't aware of what control nodes were what sprite nodes were but this works and most of the time you really want to start making games and use whatever you think you can use to get to your goals later you're gonna start learning how to do the things properly but this worked for us at the beginning so that was okay we had the idea of having the newest thing but we needed some music so we went and looked for those online I usually look for public domain music in YouTube audio library or freesound.org they are both great resources and they give you the rights to use those sounds in a lot of ways so if you're looking for something for a game jam or for your current game please be sure to check that they are allowing you to use it on commercial projects if it is commercial and always credit the source. Now I think that was really important for us to communicate what was going on was that if you see here this character I don't know if I can select it because there are so many things in front of it so let's see here the water guy it's one animation that loops all the time but when you fail you have this one which is a separate one so instead of like having it on the same node we had two different animations and we show one or the other for a while with together with the error message so those are again animations all built on an external program imported into Gerard as animated sprite and changing the frame which makes this animation to display same happened with the camera guy if you notice the camera guy here the camera operator has two animations this is when I learned that you could do several animations in the same node that you don't have to create those two different nodes but hey so here you have the fail animation and you have the default animation so the fail one here it looks like it's like oh no and I did the code here like when I had no clue on how to make the signals work properly I believe this was a bug in Gerard like if you did animation over signal here on this node animation finished it wasn't triggering properly in the version I had there was probably a bug which was later fixed but in this version this was what I had to deal with so I made just an alarm again I had no idea about timers but in game maker use alarm so I said okay yeah you're just going to add one to a counter when that ends go back to the beginning which is the default animation I hope you don't take this as a tutorial because these are not the proper ways of doing things I remember that we were doing this a very very short amount of time but what I like about this kind of product is that whenever you encounter a bug instead of just getting angry and starting to complain about the engine or riding a form of something like that you just create different way of doing same thing you just continue moving forward so we have now had a bit of the mood now we have the camera guy the animation with the guy there the text at the bottom I added the time here which I thought it was like a cool idea getting the time real time because in the news you'll usually have it and the score because you have to show a way of you know saying like okay you're doing good you're doing bad or not so very simple score everything is on the main script and if we close this time you have the timer and for this a very simple thing you can get the time you got out with the OS library so we got it there and I formatted it in regular text so now the interesting part we wanted to get the city and an input field so this is where the people type in and the problem with this was that I had no really knowledge of how the input nodes worked how the themes worked so I ended up using a basic label text and modifying that label with the user input so all the input is handled with code it's not an input field like you like I would do right now and getting that text to work was a bit difficult because of all the limitations you know that it has to be like positive or negative temperature or whatever once we got that input and you press enter and it compared with the city that we had I also needed to set a way of saying okay you are close to the to the weather or you are far from the weather so you give them more or less points and you get all this here's the code for setting the numbers as you can see everything is custom built so if it's perfect we set the score to this and we play a sound if it's one degree below or one degree above we do an almost and 500 points 2 degrees 250 and 3 and 4 the same I wanted to add more options because it was really hard to get it right especially if you have no idea where that city is or if you know what that city is like getting the exact temperature is hard so like having four on top and below seems like a reasonable thing and yeah depending on that I played a sound and I just added another answer so this function basically like gets one city from the list and gets the data information that we need and we'll just compare it with that very simple gameplay it wasn't really hard to program the most complicated things was to get the things in place especially because there's not so much room here to add a lot of cities but that's why we ended up doing with the three letter things and the answer that you gave and the correct one and after everything happens we wanted to have this kind of warrior where like very fast-paced feeling that whenever you finish you have to continue again because there's really no point on ending this so we created a few of the answers so at the end there's a few messages which if you get it everything perfect they say oh yeah everything's perfect you have another in 10 minutes and if you fail let me see where are those messages so like if you're fired and yeah you're fired you know but we have another broadcast you have to do it again if you get it by if you get it good very good so that added a little bit of variation to what the game gave you after finishing it and playing to play testing it and train it out everything was working but most of the people that were going to participate on this game jump were from the US and they use Fahrenheit for some reason so I had to create the code also for Fahrenheit which I'm not really proud of it's a good I it's a good thing that it's there but it's not really well done basically I got the temperature in I think the one that they give me is Calvin something like that and then I transform everything to Celsius and to get the Fahrenheit I just transform everything to Fahrenheit and I feel it's not as fair as Celsius because the amount of degrees that happen I feel they are different here you have like the global unit so basically if the user picks like a different one you have the Fahrenheit Celsius yeah but yeah after adding that which was really important everything was ready to commit and I had to publish the game what happened after publishing there were a lot of people sending games there were 110 entries I tried to play them all it was really hard I had no time I was very tired but I played a lot of them and when the results came in actually they took a long time to get we found out that we were second I don't know why here it's only my name I feel big it's because my profile but yeah it was my brother and I who made this and we were really proud actually getting second it's not always what you're aiming for but it's pretty good like we're always aiming for just getting first place or the rest is kind of like okay yeah I mean we tried but I feel that we were really close just 300 points away but it's a big difference if you count that the third place was really really close to us like just almost there so we can say that we can we barely like just got third place but anyway the game that won it was really good he continued working on the game and you can check it out there are links in the descriptions I really recommend them recommend the top 10 are really good games and after a while when the game was like release and everything people started complaining that the game wasn't updating the information properly and I noticed that the service that I wrote in Python if you remember that was running and updating the website all the time it wasn't working at all like it crashed I had a problem with that server and I completely forgot you know like to continue updating that I did something a bit risky which was instead of having that middle man getting all the information I just do the queries from the game itself since now barely anyone is playing it and if you have if you get it right now you're gonna be doing the queries directly to the API which will give you the results in real time but of course if a lot of people start playing this will like fail because of the pricing as we discussed before but it was like a nice addition to do and right now that I open it again I'm doing a few fixes to make it work properly in color 3.2 and hopefully now that the game is on 3.2 I can I don't know make a few updates or clean some of the code to make it proper instead of making it like a game something and that's basically how you get a second place on a gameshine if you want to try it out you can download it in the description and I want to see your high scores maybe you can leave a comment and I hope you like this insight in how I made a game from the beginning to the end and hope you learn something from it if you want to check out some other tutorials on how to learn to make things in good old programs or video games you can check the links in the description or to get to the end you can subscribe and all that crap there's probably nobody already listening here but if you are thank you bye