Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

[devlog] Super Amazing Bouncing Thing Click Action Go

A topic by Karythina created Jul 11, 2016 Views: 609 Replies: 6
Viewing posts 1 to 6
Submitted

(itch's posting system really annoys me)

I'm karythina and I doubt I have much interesting to say but I'll make a devlog anyway.

I like, and wanted to make, an old-style RPG like the wizardry games of yore, or a BBS-esque game. This game is none of those.

While I was messing around not really having a 'what' or 'how' for the jam, I tried a bunch of engines and either didn't like what kind of games they'd make, they needed some creative skill i have none of, or just felt bad to use.

I settled on messing around in Godot because it ran on Linux and it seemed like a good idea at the time. After a hilarious 2 hours of failing to do something incredibly obvious (you mean I have to DRAW collision?), I got the basic physics working.

watching stuff bounce around I thought was hysterical, so the rest of the day was spent letting you be able to click things, and to make a spawner to create more things to fall from the sky. clicking on bouncing things, the engrish-y title came kind of naturally to me afterwards.

I made a gif of my game in action, complete with a horrendous eyesore of a background that will not be in the final product.


Things I still need to do:

  • Scoring system, maybe with something complex like chaining multiple symbols?
  • time limit so you don't just click forever
  • a proper 'stage', maybe multiple you can pick from?
  • splash title screen with 'push butan to play'
  • stuff like a killbox to unload things that fall off the bottom, maybe get a song to play while you click bouncing things
  • maybe other stuff if someone suggests something idk
Submitted

Of course the instant I post a devlog, Pokemon Go and real life happens so I barely work on my game at all.

Godot's scene/node system is pretty interesting and I feel like once the documentation gets some work done (and maybe a couple more versions of the program) it'll be really really good.

After about an hour or so of finangling, I got a scoring system in place. I'm not very happy with how it looks and all that, (it's just a label node with a panel node for visibility), but it works and is fun. Also I made a "stage" that right now is just black and white.. If I want extra stages I'll need to think about what they could be like since I kinda like this one.

i also drew a couple sprites like a hamburger and cogs and a book for more things. My pixel art is not the best, so I'm not optimistic about being able to make a cool stage, but it worked enough for these. I think some objects like a cat or a boot would be funny to add (and help replace the card suits) but I don't think my art is up to snuff to be able to draw those in a recognizable way.

webm: http://webmshare.com/play/PGJJx

imgur didn't make it into a gif and instead an mp4, but it's over here: http://imgur.com/a/i8e5L

Notice how the things display over the score. I need to work out how to make it not do that. A timer won't be too hard, I think, just do what I did for score but instead of checking a global score variable, have it subtract from a global time variable, then if time == 0 send you off to a different "round over" scene.

By the way, hamburgers give the most points at 175, just like in real life.

Submitted(+1)

I like the Godot engine as well! The documentation is still in progress but explains most of the stuff in a way I actually understand, unlike many other engines. I like how anything can be a scene as well. I made a pong clone and space shooter with it but I never figured out how to make it keep track of a score lol.

It looks really cool and fun, keep up the good work!

Submitted

How I did score was a global script that's set to autoload (somewhere in the game preferences). The script holds the variables I'll need over multiple scenes, and when I need to read/modify them I get_node("global_script_location").variable which seems like a sloppy way to do it but the important thing is It Works

Host(+1)

aaaa same pokemon go pretty much robbed my first few days of productivity. i'm keeping my eye on godot because it looks really cool so far: kudos to figuring it out before it's even fully documentated.

Submitted

Well by now I have a finished Game. I'm able to export it into .exe and it runs in WINE (the Linux export is confusing me and doesn't seem to get me anything playable). I'm a little disappointed in it after seeing what everyone else accomplished, but I managed to do it with an engine I picked up like 2 days into the jam itself, so that's exciting.


The title screen is this delightful thing that helpfully tells you all the point values for the Things:

The time limit works, but it shows eight billion digits and I'll have to do a little adjusting to make it only show what I want it to show (I think I'll just do some cropping on the label node and call it good). The game saves your "high score", but it's only for that session - saving a score locally sounds beyond my grasp and I can't imagine any hardcore Thing Clickers going for 7-digit awesomeness or anything.

This webm shows the game ending, that it knows my last best score, and sets up properly to play another round: http://webmshare.com/play/d1G0O

I could definitely submit it at this point and call it a day, but there's a part in me that isn't very happy and wants to give it more polish. I'm not really sure what I could do with it left, though. The timer elements are definitely ugly so I need to work out a way to make those prettier perhaps. A more complicated scoring system like bonuses for clicking the same type of object in a row would be cool, but that's more UI I'd need to work out on how to display that, and more importantly working out how to do it. Hmm.

Submitted (3 edits)

I don't know how interesting this would read to some people but I decided it'd be fun to go over what I had to do while working how to implement this feature.

I decided for a bit of flair to add an effect when you click on the bouncing things. After staring at the animation tools for a while I decided instead to spawn a particle effect, which would also have a bit of randomness to where the sparks fly.

My first attempt ended before it ever really began: I attached a particle node as a child to my Bouncing Thing instance, gave it a test and... no particles. When a Bouncing Thing is clicked, it adds points and promptly destroys itself. When a node is destroyed, it destroys all child nodes along with it, meaning the particle child node is created then immediately destroyed along with its parent. Tragic.

Turning off the Bouncing Thing being deleted, though, shows the particle works fine and dandy...except far off from the actual Bouncing Thing's sprite, and anchored-yet-offset to it, so it a was moving and bouncing around in tandem a few inches away. Not quite desirable.

I figured the easiest way to solve this problem would be to make the particle effect not a child of the Bouncing Thing at all, but rather, the Node2D that contains the nodes for all the stage nodes (and also works as the spawner in a moment of perhaps poor judgement). This gave me a particle effect that was stationary, but was stuck at the very top-center of the stage. Still, it felt like progress, and all I had to do now was work out how to move it where I wanted it to be.

To do this, when the Bouncing Thing is clicked, it makes a variable whose value is set_pos(). I then create a second variable that actually loads the particle node instance (not that it's just loaded and not actually assigned as a child yet). I use the first variable to set the particle's position, then add it as a child to Node2D.

Success! Except the particles are spawning forever. No problem, I added an extra line saying that the particle spawner should only emit particles for about 2 seconds. While I'm pretty sure the particle nodes still "exist" in the game, I doubt this is a performance issue for something this simple. At least, I'd be pretty sad if I somehow caused things to dip below 60FPS in a game this simplistic, especially since it only really runs for a minute. Just to be safe, I added a Bouncing Thing-destroyer off-screen at the bottom to clear out anything the player misses instead of keeping them loaded forever. Seeing the object/node amounts in debug mode along with FPS counts make me feel okay.

The net result of all this is here: http://webmshare.com/play/d13qO

All-in-all, it took me a bit over an hour to work this out, including googling and browsing docs to find what I need to do and how to do it. This is probably a bit of a sloppy implementation, but finesse is not the name of the day here. As long as it works, right...?