Game Jam Devlog Devtober 2021
My contribution to the Devtober 2021 Game Jam: Protect@. And this is the detailed devlog.
- 2021-10-17 Ads and Play Store
- 2021-10-16 Another Day of Website Work
- 2021-10-15 CORS Error Gone and Website Work
- 2021-10-14 No Encryption yet but CORS Errors
- 2021-10-13
- 2021-10-12 Highscores again
- 2021-10-11 Encrypted Highscores?
- 2021-10-10
- 2021-10-09 Highscores and Modes
- 2021-10-08 Additions
- 2021-10-07 Happy birthday
- 2021-10-06 Style decisions and bugfixes
- 2021-10-05 Resolution and Highscores
- 2021-10-04 Sound, Music and Stages
- 2021-10-03 Colors, Sound and Scores
- 2021-10-02 Stages and Levels
- 2021-10-01 Prototyping is Easy
- 2021-09-30 The Day Before. Or: Why?
Ads and Play Store
Finally back to the game. I’ve added the dreaded AdMob Plugin. I just don’t know what I’m doing and just following tutorials. Especially the process of publishing something in the Google Play Store is a real pain in the back and I understand even less. But it seems to be working! The app got accepted a few days ago and when this more or less final version is online with some annoying ads I’m happy as I can be. ;) Meanwhile you can still play the game here without any ads and it will of course stay this way. ;)
Another Day of Website Work
Another day of website work…
CORS Error Gone and Website Work
Again a day with not much to show. I think I finaly fixed the CORS issue after just stumbling upon How to win at CORS via Hackernews. What a coincidence that it was on the frontpage! That lengthy article (that I only skimmed, foolish me!) stated that you can just add “Access-Control-Allow-Origin: *” in the header. Seems to work now!
I also worked a bit on my still shitty and very much empty and incomplete homepage. I fear that such a thing is really needed in the long run, not just for devtober. I’m trying to write some articles just about what I learned in Godot, coding and whatnot related to gamedev. Sorry for not posting a link but it’s too early for that. ;)
No Encryption yet but CORS Errors
The spare time I had yesterday I was trying to get the highscores to work. And failed. Culprit was my wish to get an AES encrpytion of the transfered data to work. As this did not work out as expected, today I opted to at least get the highscores working some how. That is now the case but anyone who sniffes the URL can easily upload a highscore without playing the game… Please don’t try and abuse this. ;)
But that put aside, the highscores are working! They are far from pretty and need still a lot of a polish but at least we can compete now! :)
Edit:
Uh… The highscores did work in Godot, do work in the linux export but they don’t work in the web export… I see a cross-origin resource sharing error in the web console. Should be fixable, I guess. But I’m too tired right now. Next update then… ;)
Edit after Edit:
Looks like it is fixed for now by adding a Access-Control-Allow-Origin header. But itch.io is using a CDN and I don’t know if that URL is going to change over time. It probabaly is…
Highscores again
This week I have the feeling that not very much will be achieved… Lots of day job work is holding me back.
But at least I put up a database and hacked together a PHP script to load and save the highscores. Although there is no encryption yet and no real display. I hope to get this part of the game finished by the end of the week. We’ll see…
Encrypted Highscores?
Nothing to show today, but I’m working on a refined, online highscore system. It consists of a database and a PHP backend which will receive your highscore and display the world’s (ha ha) top ten. I already have a working system but it’s far from secure in the sense that anyone who figures out the URL could send a fake highscore. I don’t know enough about security and encryption to make it near perfect secure, but at least prohibiting the casual packet sniffer should be doable. I’m thinking about a simple AES encryption.
Higscores and Modes
Completed the highscores for endurance mode and also changed the stage mode to a kind of tutorial. I’m really bad at “level design” (if you can even call it level design in this case). So there are now just seven stages that progressively introduce different speeds, attack patterns and what not. After you’ve finished the tutorial you’ll be thrown in the endurance mode where you can try to beat your own personal highscore.
Tomorrow, I’ll take a day off. For the rest of the month I guess I’ll be working on the visuals. I really like to have a glow effect but I’m still unable to produce anything controllable. Either there is no glow or it just overshines everything and the carefully chosen colors (haha) get washed out. Another idea is to bring this game to the Android store — of course with ads. Every shitty game needs ads. ;)
Additions
This is a big change! Two special squares were added: a health regen and a spawn timer reset. Those are desperately needed for the also new endurance mode, where you can play the game endless. Well, technically only for one hour but noone would do that, I guess. ;)
The endurance mode calls for a change of the highscore, too. It should only count in that mode where the staging mode could be some kind of tutorial. But that is for another day…
A little change in the sprialing pattern was made, as those squares substantially slowed down when they were near the center. Now the speed stays the same:
PS: Now also available as a download for Linux and Android. Why not when it’s just a click away?
PPS: Could not withstand to change the highscores. :) They are now only available in endurance mode. This could potentially break the game at the end if you’ve already played it and your browser has a save file stored…
Happy birthday
Happy birthday Protect@!
You’re now one week old and doing great! Today I added a variation of the attacking enemies. They now might come in spirals which was really tricky to accomplish for me. First I wanted to compute the spiral pattern by myself and failed miserably. Then I had an insight: I only need to let the squares circle around the center and give them an ever so slight nudge towards the center. And the circling was also done without any calculations. I just added a pivot point in the screen center as a parent of the squares. Rotating that point also rotates the squares. Hooray! But it was a struggle and I’m pretty exausted now…
My lesson of the day: Don’t rush, don’t overdo, take brakes. That said: Over and out for today. ;)
Style decisions and bugfixes
In the itch.io game jam community forum I got some suggestiuns from ThetaTauTau. Not only are they sensible but looking at her/his games they are coming from a proffessional. I’m very glad for that feedback.
And as suggested I cleaned up the style of the game. Now with the higher resolution the game has lost it’s pixel art style. And so hat the font to be changed to make it a bit more uniform.
Also there was a silly bug in the spawning code that got fixed: It could happen that very few or even no enemies at all would spawn in a level. The origin of this bug was a routine that checked if a square is still on screen. If it wasn’t, it got deleted. And with the change in aspect ratio I changed the spawning regions so it could be that a square spawned off screen…
The lesson to be learned here: If you include code from another project (the spawning was taken from catch², make sure to check if the logic still applies. In this case it was of course not the case. All squares fall to the center of the screen and either get destroyed by the paddle or when hitting the circle. So they could never be outside of the screen (if not spawned there) and therefore never need to be deleted.
Resolution and Highscores
The aesthetics of the game have changed a lot. Not the overall design, but the resolution. It went from a pixel art style to a more HD like resolution with an aspect ratio of 16:9 to make it more mobile friendly. That of course makes the screen wider and not so tall anymore. So squares are now only coming from the sides. It’s a bit unfair to have them coming from top and bottom where there is no time to react.
Another addition: local highscores. Local means they are only saved on your computer. So no world wide competition. You can only beat yourself for the time being. ;)
Sound, Music and Stages
Today the SFX got replaced by more tolerable sound. I made them myself with the online version of SFXR. By no means I am a proffessional when it comes to sound design (or GFX design or game design or any desgin at all) but I’m quite happy with the results sofar. And speaking of sound: The game now also has background music!
The different stages of the game also got a little overhaul. There are no nine different stages wich get progressively harder. Up to a point where the game is not beatable any more. At least for me. I’m curious, if anyone might beat the last stage…
Last but not least there is a mystery addition: a cheat code. Won’t give anything away, you’ve to figure it out on your own. ;) Want to try for yourself? Check it out at pixelflausen.itch.io
Colors, Sound and Scores
With the newest update to Protect@ we finally got colors! And different squares with varying scores! This is only a minor update but might the game so much better!
Stages and Levels
With the installment of yesterday’s scene manager I could work on the level progression today. The prototype already hat a simple level system: Every n seconds the spawn timer would decrease by 10% and thus make the game harder. To add a little bit of variety this was changed to a staging system with goals.
Goals might be to earn a specific amount of points or survive for a given time. After you have achieved all given goals, you might procede to the next stage. Each stage will have different goals which get slightly more challenging.
Want to have a look? Play it on itch.io or watch the trailer right here:
Prototyping is Easy
That was a good start! After about 3h of fiddling the game stands! At least the core mechanics. Although it’s already playable, it’s not much fun. That will be the hardest part: Making it look like something.
But what did I do? The basic idea of the game is that you control a circling paddle while from the screen border squares are falling to the center. Admittedly, that is a pretty simple game concept. But anyway, this is a devlog:
From catch-squared I took the randomly falling squares but changed it that the squares were falling from all sides of the screen towards the center. That went surprisingly fast although I’m not happy with the route I took:
I’m pretty sure that this is not the right way to do it and I feel a little bit embarassed about that piece of code. But it works. The root of all evil. ;)
But, hey, the computation of the velocity of the squares so they get attracted by the center, is a real masterpiece: ;)
The Player then was a bit fiddly because I want to have the option of multipyling paddles. You never know. That’s why the paddle(s) are seperate scenes under the player node.
All collision detection is only done in the square’s scene from where a signal is emitted with what it collided. That signal is connected in the main scene to check if a point was scored or health was lost. That’s also not the smartest way to do it but as there is not much more to come this will be manageable as is.
That and some doodling in Gimp were the first three hours. Before the game could be called playable, I wanted to add a pause button. That turned out to be a bit of a nightmare, as always. But after some fiddling the game now can be paused and scenes can change!
Althoung one can call this playable, it’s by no means finished. This is just something I can now test some ideas about the game play with. Like, could this be turned into a kind of bullet hell game and still be playable? I guess, this has to be decided within the next days. Because I want to spent a fair amount of time this month on making it look like something. So overall look and feel of the game should get the most attention.
PS: Don’t dread such lengthy articles in the next days. Promised. ;)
The Day Before. Or: Why?
Taking part in a game jam is something I’d really like to do. But I dread the time frame. Working for 48h or 72h straight on a game is something I can do for sure. But I also know that this is no good for me. For my health, physically and mentally. And also I simply don’t want to “waste” three days solely devoted to game dev. Don’t get me wrong: Game dev is fun and I like it a lot, else you weren’t reading this! But I also like to do other things in my life. And I burn out pretty quick so I need breaks and a good night’s sleep inbetween.
Okay, there are other, longer running Jams. But I don’t feel I’m up to the challenge yet. I lack so many skills that while I most certainly could make a game in a month it won’t hold up to standard. While I would spent so much time on minor things trying to solve, others will spent their time to make awesome art and will already polish it to it’s finest. I couldn’t compete with that.
Then, by pure accident, I found the game jam I was looking for: Devtober. It says: “it’s a personal challenge where the focus is finding your own pace, building good habits and work routine.” Doesn’t that exactly sound like the perfect opportunity to solve my fear for bigger, shorter jams? Good habits and a work routine is certainly one of the many things I’m lacking. So here I am, challenge accepted! I’m in!
What also struck me was the welcoming language. I can’t help myself but Ellian, the host of the jam, hits a really caring and encouraging tone in his introduction to the Devtober Game Jam. I really felt comfy with the idea of the jam reading it.
So that is why I’d like to take part in Devtober:
- the time frame suits my needs
- the warm and welcoming idea of the jam
- although it’s no competition I like to be with other beginners as a beginner myself
What’s next then? Well, waiting. ;) The jam only starts tomorrow. And I’ll try to stick to that rule, too. I have a vague idea about what game I want to make but of course I haven’t done anything yet. Don’t expect anything showable before the weekend. But I will definitely spent some time thinking and planning and give a report about that.
That means I probably won’t be able to get great things done every single day, although I’m planning to be active every day. I’ll rather update the current status of the project in this post and leave a link on Twitter and maybe, when there is something to actually show, a picture on Instagram. We’ll see. Tomorrow, when I shall reveal my ideas for the jam… ;)