Tuesday, October 4, 2022

Ludum Dare 51: Base Defense (plus four games from the boys)

In today's blog post, I share the experiences that my sons and I had participating in Ludum Dare 51. Each section starts with the name of the game, and this is followed by a link and then the creator's reflection. Enjoy!

My Game: Base Defense

This past weekend was Ludum Dare 51, the latest instance of what might be my favorite jam. What I love about the traditional Ludum Dare "compo" event is that each person handcrafts a game in 48 hours based on a shared theme. That creator does the art, the music, the programming, the writing, and the sound effects, and so everything that comes out of the Ludum Dare compo is wonderfully unique. There's an unadulterated bit of each creator within each game.

The theme was "Every 10 Seconds." I prefer themes that evoke an aesthetic rather than those that almost demand a mechanic. I did my voting before the jam, and so at some point one simply has to live with the results. As I contemplated the theme, I considered other constraints: What kinds of games have I wanted to make lately? What technology have I wanted to explore? I quickly narrowed my focus to making a tower defense game in 3D using Godot Engine. I've never made a tower defense game, but I've long wanted to. My game programming students elected to having a project in 3D, but I've really only built one 3D experience in Godot

My original idea was that new waves of enemies would come every ten seconds, but as I tinkered with the core game loop, I realized two problems with this. One is that creating different kinds of enemies, enough to call it a "wave," was possibly out of scope. The other was that ten seconds is actually a really long time when you're waiting for something to happen in a videogame. I decided to pivot on the integration of the theme and, instead, to have the player lose a random turret every ten seconds. This way, there's a constant pressure on the player to keep building and to stay aware of the board.

The result is Base Defense. You can check it out on the Ludum Dare page which links to the Web build as well as the native clients for Windows and Linux.

I'm happy with how it turned out. I had originally hoped to add more interesting enemy models than just colored spheres, and it clearly calls out for different kinds of turrets or defenses. Both of these features hit the chopping block pretty early. The end of the game is still actually a placeholder from when I got the original loop working, but you know, old memes are the best memes. The one thing I really wanted to add that didn't fit into the schedule was that meteors destroy not just a random target but also adjacent ones, recursively. I think this would have been a really fun way to force players to spread out their defenses, and I also think it would have made it less likely that someone can set up an unstoppable defense force. Yes, if you have the right combination of luck, patience, and skill, you can get the game into a state where there's no way for the enemies to win and you can accumulate points forever. I haven't gotten this, but I've seen my son do it. The positive side of this though is that the game is engaging enough to get someone to want to reach that goal, which is pretty good for a jam game.

Speaking of sons, all four of my boys created their own games for Ludum Dare 51. I asked each one to write a little reflection about the experience that I can share here. The older two boys have their ldjam.com accounts, and so I have linked to their project pages. The younger two boys do not have such accounts, so I've linked directly to Web builds where you can try the games. In each case, the creator's reflection follows the game link. Thanks for checking it out! I'll be sure to share any feedback here with the guys.

#1 Son: Shifting Dungeons

Check it out at the Ludum Dare site.

Shifting Dungeons is not my best game jam project. It’s not really fun. I think that is at least partially because the game does not require many (if any) interesting choices. Once you’ve figured out the strategy, you can win almost every time without needing much skill.

I did enjoy using shaders for the glow effects and styling the UI, and I am happy with the overall color scheme. At one point, I realized that the walls and floor were a cold grey instead of a brownish-yellow grey, and once I fixed that, everything looked a lot better. I also liked the way I organized the attack functionality in the player. When you press a button, it calls an attack function that then calls another function to resolve the appropriate effect.

I learned (not in this project, but recently) that enumerations really just assign names to positive integers, which is very useful for a wide variety of things. In this project, I used enums to distinguish types of attacks and different wall tiles.

Next time, I would like to try to make a more technically interesting game. Nothing in this project was new or unusual, which made it rather uninteresting to build. I also might not make a 2.5-d project next time, since it makes the artwork much harder to draw.

Anyway, thanks for playing my game, and please leave any suggestions you have about ways to improve it!

#2 Son: You vs. the Clock Featuring the Narrator

Check it out at the Ludum Dare site.

This year’s theme for Ludum Dare was “every ten seconds”. In my game, you have ten seconds of life to get as far as you can. The game is text-driven using Dialogic, partially because I wanted to practice my typing skills but also because I know very little Gd script.

I learned how to connect Dialogic to the script, which is how I got the timer, points, and duck to work. I wish I had had the time to add a timer that might make the connection to the theme a bit more clear by visualizing the ten-second countdown.

#3 Son: 10 Second Bomb

Play online now.

Hi, I made 10 Second Bomb, using Construct 2 (free edition) game engine. My idea was that every ten seconds a random tile would explode, like you've seen (or will see) in my game. I did not know how to do that, so my brother taught me about global variables and we could use that to fix our problem. Once I knew how to use global variables, making the player get bombs and the score tracker were easy to code.

Then came the timers (boom tile and new bomb). After I made those, I made the different screens (lose, win, main, start, and rules). I met most of my goals, although if you lose and then you play again and win, you have to click through both the win and lose screens. I don’t know why that happens, so if you do please let me know.

I learned some new things, like how to use global variables. I hope you enjoy (or have enjoyed) my game!

Thanks for reading!

#4 Son: Tim the Hunter

Play online now.

Hi, my game is “Tim the Hunter” in Construct. My idea was every ten seconds enemies shoot, and spawners make new enemies. If you get shot you die.

It was hard to make the coding. At first, you couldn’t move because the gun was stopping you from moving. Then I made the gun be able to move with Tim. I figured that out on my own. I also learned how to make text follow the screen. The point tracker used to not move with Tim, so the text would go offscreen. My brother helped me make the text move with Tim so that the player could see the points no matter where they went. If you press enter to play again, the music will play twice. I didn’t want it to do that, but I didn’t know how to make it stop.

I was happy with Tim’s costume. The bowler hat and overcoat and tie were fancy.





Story: you were hunting when a tornado and you landed on a floating island.

No comments:

Post a Comment