Wednesday, March 12, 2025

SOUNDS!

Every indie dev has that one dream game they work on in their "free" time, right? Dang, they should if they don't. This one is mine. That's all I'm saying right now. I work on it inbetween all the paid stuff I should actually be doing. It took forever to get all the music and sounds made but I did it. Godot is excellent for audio handling, so the programming part was easy. (Seriously, I've used other engines, and Godot dog walks all the others when it comes to audio. No one says that enough.) I can't promise all the sounds are final, but wanna hear? I rarely record desktop audio, that was an experience and I'm not sure how well I did. Usually I'm just fighting OBS instead to make my weird ass voice sound like anything at all.

Wednesday, March 5, 2025

Programming: Comparing Values

I was looking up the differences between Python and Godot earlier last week, and they're actually pretty different languages.

Then, while writing my new tutorial, I ran face first into a problem that was easily solvable in Python, not so much in GDScript.

So how do you compare three values and come up with the highest variable? To be clear, if I've got: a = 1 b = 2 c = 3

I can call var whatever = max(A, B, C) and Godot will spit out 3. I don't want it to spit out 3. I want it to tell me C is the highest.

My friend was like oh just use a dictionary and I straight out died and was dead, I hate dictionaries. I don't know another way to solve them.

So apparently this will work in Python:

dictionary = {
"a" : 1
"b" : 2
"c" : 3
}

highest_value = max(dictionary, key = dictionary.get)
print(highest_value)

Hey, in Python, you don't need the var keyword!

GDScript will not do that, it doesn't like having functions in max(). Or at least 4.3 doesn't, maybe by the time you read this the fancy new version of Godot will be fine with it.

A lot of solutions I was finding involve iterating over a loop, which, like, cool, we love loops, but I got it in less lines of code, and we all know shorter is better. Here's the GDScript solution:

dictionary = {
"a" : 1
"b" : 2
"c" : 3
}

#talk to the values part of the dictionary, get the highest value
var highest_value = dictionary.values().max()
#now go back in and get the key
var this_is_the_key = dictionary.find_key(highest_value)
#prove i'm right ~
print(this_is_the_key)

It should spit out C. This is great for comparing scores and finding the winner, which is what I used it for!

Wednesday, February 26, 2025

Progress on Delia's Game

All the testers had nice things to say about Delia's game! That's good to hear. (It still needs a name ...) But that also means I can start designing the second level, inside the Opera House.
I love when I can peek out from behind stuff in games.
You can also roll into the plants and watch em shake:
I should put the notes in this week, make it function like a real game. ... I should put more stuff to knock into, as well.

Wednesday, February 19, 2025

My Testing Process

This is a screenshot from my newest project! I don't have it named though. But the pink axolotl is Delia. It's an educational game. If you're old like me, this game is similar enough to Treasure Mountain, it just has a fresh coat of paint on it. It's through it's first testing phase, and everything has gone great so far! That's a lie, the first test was actually kinda rough -- that's what testers are for. I thought it might help if I outline my current testing process. If it helps, you can steal it.
  • First, I test it. If I can't break it, we're doing great.
  • Then, I make my husband test it. He's a software developer, and he ususally works okay after I remind him that if his testers don't come back with extremely detailed reports he gets mad, so yes, actually, he is expected to play my game longer than 30 seconds.
  • At this point, I stop and fix things that he's found.
  • I send it out to my local programming club's discord.
  • I beg for testers on Bluesky. Seriously, don't sleep on this step, plenty of people are willing and ready to help you. Use the #indiedev and #gamedev hashtags.
  • I take the comments, and if I like the suggestions, I integrate them into the next build. I don't always change everything. That's art, baybay. But I do pretty much 95% of what my testers say, because the program has to make sense to people who aren't me.
  • My programming club, my husband, and Bluesky all get copies again to beta test
  • HOPEFULLY that's the final boss of testing and I can go on to something else
That's where I'm at with Delia's game! I'm hoping this week to get her second level started, she's more than overdue for another level. The hardest thing to get rolling with her game was the touch controls. Everyone has a different opinion on how she should control. My programming club really encouraged me to not have controller buttons on the screen. The thing is, Delia rolls a lot. When I test on my iPad, she rolls if she thinks she detects a change in pressure. In the end, the control scheme I wound up with actually wasn't the most accurate -- Delia still rolls around the screen sometimes unintentionally. But my husband and I agreed it was the most fun, because she flips a lot and moves the fastest. Maybe like Sonic the Hedgehog I guess. Hey, if you want me to test your stuff, my contact info is always here.

Wednesday, February 12, 2025

Menus and Accessibility

For one of my projects, several testers asked for keyboard controls in my menus. Which, fair, I'd been using a mouse to test but I can see where keyboard would be easiest. This is the easiest video that I've ever found on using keyboard controls to navigate menus in Godot, it's very no nonsense and works out of the box quickly: See why I love it? I've thought about expanding this tutorial out to make it more accessible. I'm not really sure where the line is between "I jacked this guy's tutorial" and "Wow my own original content," but we're all just nerds typing @export var junk at the end of the day. Here's what I think I'd add in terms of accessibility:
  • Dots or icons so you can see what's selected
  • Sounds, a cute lil beep when something comes into focus
  • Showing how theme interacts with focus
  • Rumble. Okay maybe not, but that would be kinda fun, wouldn't it?
I'm not sure, what would you like to see?