cerno-b

LD 40

Spoiler: Game over Screen

This is the end.

prototype_05.gif

Note how I don't have a name yet.

Server based high score tables actually working, courtesy of PeliStar, who wrote an exceptional tutorial: https://forum.yoyogames.com/index.php?threads/online-highscores.4291/

Took me almost three hours to set up due to some fiddly bits in GameMaker and the fact that some functions were missing due to the GM-Marketplace being down. Totally worth it though.

Day 2, graphics are tough

As always, drawing stuff takes way too long, but progress is made.

prototype_05.gif

@random-wizard, I will definitely go with your ice idea.

I found a concept that may work. You are playing a maintenance robot in a boiler room in space that has to fend of an alien infestation. Everytime you are hit, the temperature in the room falls, so the ice crystals grow.

Let's see if I can visually communicate this ;)

Visual Progress

In dire need of shading...

prototype_06.gif

Crunch Crunch Crunch

Okay, visuals are done pre-polish. About 12 hours to go.

prototype_07.gif

Time to think about music. I was prepared for atmospheric music using a sweet orchestra toolkit, but then I had to go and make an arcade game. Is it too late at this point to learn modtracker?

It is Done!

Finally.

final.gif

https://ldjam.com/events/ludum-dare/40/boiler-room-defense

Try to to beat the high score!

After I nearly broke down trying to figure out how to make decent music, switch through different tools, I finally ended up with good old Bosca Ceoil. I definitely need practice in making retro music.

Super tired now. I think I may have worked 20 hours straight today. I hope the game works :{

A Friendly Reminder: Write your Postmortems now

I would like to invite everyone to write a Postmortem. If you do, do it now!

If you wait too long, the memory of the event will fade.

Here's some pointers off the top of my head to get you started:

  • Note down what went well, and what didn't.
  • What achievement were you proud of?
  • What of the things that didn't go well was preventable, and how would you prevent it next time?
  • What took you the longest and why? Where would you streamline your process to be more efficient?
  • What did you have to leave out? What do you wish to have left out in exchange for something else?
  • What new skills have you learned in the course of the Jam?
  • What new skills do you want to learn for next time? In what area do you want to improve?
  • Anything helpful that you learned that may seem obvious to you but could help others?
  • If you feel ambitious, set a goal for your next LD and try to prepare for it.

This part should be written as long as the memory is still fresh. Later in the rating period, you can add insights from the feedback you received:

  • Did your design resonate with players the way you imagined?
  • What feedback surprised you (positively or negatively)?
  • What have you learned about game making in general from criticism and advice of players?
  • Has the feedback changed your mind from the original postmortem?
  • If you could make your game again with what you know now, would you adapt it or do something completely different?

Oh, and when you're done writing, play Boiler Room Defense

Boiler Room Defense now has a Web version

Provided for convenience. I'd still recommend playing the Windows version for full screen glory.

final2.gif

Play It Here

If you play this on Linux or Mac, please let me know if it works, I can't test this here.

Boiler Room Defense Timelapse

I have uploaded the timelapse video of Boiler Room Defense

This is the game: final2.gif

And here's the timelapse. Watch it, it features some sweet sweet chiptunes! https://www.youtube.com/watch?v=nwfYEpBVX3k

Play the game here

Watch Boiler Room Defense's Highscore Get Cracked

This is how you do it!

https://www.twitch.tv/danaeplays/ were nice enough to play my game Boiler Room Defense on their Twitch channel, and they broke the high score in four attempts!

final2.gif

Watch the whole thing here: https://www.twitch.tv/videos/208201491?t=01h01m34s

However, by now the high score has been broken again: http://pancakeelement.de/public/ld40/ld40showhighscore.php

Boiler Room Defense: A much too long and detailed Post Mortem

So I've written a detailed Post-mortem for my LD40 game that I wanted to share. Sorry for the verbosity ;)

After I had made a fairly successful game in Ludum Dare 38 , I have been dreaming of maybe, just maybe, I might be able to reach the top 100 one day.

Apart from that long-term goal, I had some things I wanted to achieve: - make an atmospheric orchestral soundtrack using the knowledge from the piano lessions I had been taking for about a year now - record voice work (possibly a narrator since I suck at acting) - make a game that is more unique than anything I had done before.

Now let's see how that played out.

Preparation

Normally my family is kind enough to plan a weekend trip during LD. However this time it wasn't possible, so we had to find a way to allow me to work without interruptions because I get distracted easily with people around me. It wasn't ideal but I'm happy that they give me the time to do this once or twice a year.

I did my grocery shopping the day before and made sure all my tools work (midi keyboard, Wacom, GameMaker, etc.) I also prepared some boilerplate code (https://github.com/Cerno-b/gamemakerstartupproject) that had some useful routines in place (controller support, generic title screen, etc.) Before going to bed, I read all the theme candidates and picked one as an exercise to see what kind of game I would make out of it (it was A Single Resource).

Day 1

6:00

After waking up, my initial feelings about the choice of theme were mixed. I had given it a +1 in round 3 but a 0 in the final round. It is a very good theme because it is neither too specific nor too vague, but I struggled with an idea that would lend itself to my goals.

I knew from the start that I didn't want to make a game with the concept of "collect x and the game gets faster/harder". I also didn't want to equate "worse" with "more boring", as in "the game gets slower as you progress", as I thought I might struggle with making it fun to play.

Some early concepts fell by the wayside:

  • A "Choose your own adventure" game about getting infinite wishes from a genie. You make choices for your next wish, but every wish gets corrupted. You have to outsmart the genie and use his wishes against him. Perfect for narration, but I was afraid it would be too ambitious for my writing skills
  • A Runner game where coins you collect increase the speed (but give no other benefits). When you collect coin magnets, chaos ensues. Procedurally generated terrain. Didn't make it because the premise was too simple.
  • You control a biological organism that grows appendices which let you fight off waves of attackers. You attack using keyboard keys. Each appendix is controlled by a different keyboard key (the fun starts at more than 10 appendices).
  • You can inject yourself with a brain-growing drug, but your head will get larger and larger so your character will get more and more top-heavy and harder to control.

After two hours of brain-racking I decided on the idea of having bullets stick to the wall so that you have to be careful about not missing your opponents. Clearly I had to give up on my original plan of using an orchestral score for that idea.

8:00

Although I had some boilerplate Game Maker code ready in advance, I struggled with a few things before I got into the flow again (the with/self/other mechanics are kind of unintuitive to me). I stumbled upon the suggestion to increase the frame rate from 30 to 60 in GameMaker and it made a huge difference.

prototype_0.gif

9:30

Soon I got into the flow and made good progress on the game mechanics. Previous experience on steering behavior accelerated the process a lot (reading tip: https://www.red3d.com/cwr/steer/gdc99/).

11:30

Originally I wanted a classic 3 lives setting where an enemy or wall hit would cost you one life. That posed a number of problems though: First, the game was too chaotic for this to be fair and I didn't want to slow it down too much. Also it took too long for the walls to accumulate enough shots to be an actual threat, which would defeat the core idea and go against the theme too much.

So I decided to make the player invincible to enemies but die immediately when crashing into the walls. To make it more interesting, I had the walls grow each time you are hit by an enemy:

prototype_01.gif

12:00

I wanted to increase the difficulty based on how many shots had accumulated on the walls, so I spawned a number of flies based on the number of shots on the walls after each wave. I only had to change the parameters of the steering code I already had in place and was ready to go:

prototype_03.gif

13:00

Next, I wanted to add some powerups because they are a staple in shmup games. But with the shots sticking to the wall I wanted the powerups to be a blessing and a curse, allowing the player to defeat enemies faster (and thus preventing the wall-shots from growing) but at the same time increasing the risk of collecting more shots on the walls.

Since the powerups were a bit of a disadvantage and the player could easily avoid them when they appeared, I wanted to balance this by converting wall-shots to collectibles over time so the player could take the bad powerup but would remove wall-shots from the playing field in the process. After implementing that I quickly realized this idea would not work. First, the player motion was so fast that trying to get close to the wall-shots was too dangerous for a one-life game. And second, new shots would accumulate around the powerups, preventing the player from picking them up at all.

Therefore I modified the idea so that some wall-shots would periodically convert to powerups that drift around the play field. This decision removed the tradeoff between collecting a potentially dangerous upgrade and getting more space so that the player could simply avoid the powerups and gain space for free. I thought about making uncollected powerups return to become wall-shots again, but in the end the game worked well as it was so I scrapped that idea.

With that, I had all main gameplay mechanics in place:

prototype_04.gif

This picture seemed to resonate with a lot of people and it received 25 hearts. I was exhilarated. @random-wizard suggested to use a space setting and make the walls out of ice. At that point I had considered to make this more of an insect/nature setting, because of the flies and such. I thought I would have a hard time to make the game stand out visually as a space shooter, because it's such a well-explored genre. But in the end I stuck with the space/ice idea.

17:00

With all the gameplay mechanics in place and still a lot of time on the clock, I decided to add online leaderboards. It was a cool concept that I hadn't tried before. But more importantly, since the game is open ended, I wanted to add more replay value. After fiddling around with a tutorial on the matter and trying to debug PHP code (a language that I neither like nor know well), it took me almost four hours to get the leaderboards running. It was quite a chunk of time, but I think it was worth it in the end.

The idea of the Game Over screen was a happy accident: I had left the game running before checking the Ludum Dare website and when I returned, I saw my character surrounded by enemies who were pummeling him with attacks. Adding that to the game over screen was fairly simple:

prototype_05.gif

21:30

With the core game mechanics and leaderboards working, I decided to call it a day.

Day 2

06:45

After a very successful and productive first day, it was now time to add graphics and polish. This was my first Ludum Dare where the game was actually completely enjoyable on Day 1 and I had a full second day to make everything pretty.

However, I started to worry. After everything went smoothly on day 1 with a some very positive feedback, I felt the pressure rising. Between the state of the game as it was and my desire to maybe crack the top 100, I was worried that any design decision I made from now on might mess up what I had achieved so far, especially since I still don't feel very confident in my drawing and composing skills.

11:15

It took me 4.5 hours to draw the backdrop. Turned out pretty well I think. I would do the shading later to be able to drop it in case something goes wrong somewhere.

prototype_06.gif

During lunchtime, I refined the visual concept to tie it into the game mechanics: You play a maintenance bot on a spaceship that has to defend itself using a water cannon (for whatever reason). Since space is cold, any missed shots freeze on the wall. Whenever the bot is hit, it loses control over the heating system bit by bit which causes the ice to grow. It sounds a bit far-fetched and a more skilled artist may have communicated this better visually, but here we are. Reading the comments so far I think I completely failed to get this idea across.

Anyway, this is my initial doodle of the bot that I did over lunch:

sketch.png

Turned out that you lose a lot of detail when you have to reduce your drawing to 32x32. Also I changed the design to make the bot match the round hitbox better. The old-school smokestack was a nice touch and I'm still a bit sad I had to get rid of it favor of the more round-ish design.

12:00

Now I had replaced all the placeholder graphics: the bot, the ice, the enemies, the powerups, the rotating cannon mechanic and a prettier version of the start and end backdrop (originally planned as a placeholder but it remained in the game due to time constraints).

final.gif

15:30

Sound effects time. I tried a new generator: Chiptone (http://sfbgames.com/chiptone/). It's pretty neat and I was able to create some cool effects with it. I had problems getting the squish and buzz sounds for the flies right, so I recorded them myself using Reaper. Turned out pretty well I think. I might consider doing more effects that way in the future.

17:00

Now came the issue I had been putting off all the time: Writing the music. I had been listening to some cool chiptune compilations while coding. This collection is highly recommended:

https://www.youtube.com/watch?v=GH7eUlri4yM

Inspired by its awesomeness, I was toying with the idea of doing something similar.

I knew that tools like Modtracker had a steep learning curve, so I looked at tutorials about alternatives. Around this time I completely panicked. Nothing I attempted seemed to be a viable solution. I went from Reaper with Chiptune VSTs to Bosca Ceoil to doing orchestral stuff with Miroslav Philharmonik to actually downloading the FLStudio trial, then back to Chiptune VSTs, and finally ended up falling back to Bosca Ceoil. It took me over two hours fussing about what tool to finally use and another hour to actually write the music. What a waste. It felt much longer than that and was very frustrating. Note to self: Be prepared better in advance and don't try to learn new music tools during the Compo.

20:30

With the music fiasco over, I looked at my list of things to fix/add and realized that I had totally forgotten about actually having a dialog for entering text for the highscores. Unfortunately text processing is not very convenient to pull off in GameMaker, but I found some good example code that helped me get started. Including the previous session, the whole highscore thing cost me about 6 hours. It's a lot, but I felt it was worth it. I learned a lot from that experience and should be able to pull off similar stuff much faster in the future.

22:30

I had everything in place now. At the very least I would be able to ship the game in this state. With the clock winding down I made a list of things that I wanted to put in to improve the whole experience.

From that list, these things made it into the game on time:

  • Shading the pipes in the background room (I messed up and lost some detail on the gauges which I only realized after release)
  • Rotating star backdrop (Something I learned in LD37 and LD38, pretty neat)
  • Simple explosion gfx (I learned that one from Nijman's The Art of Screenshake)
  • Adapting the audio levels in reaper (music was way too low, some sfx were too loud)
  • Game balancing
  • Finding an actual name

These things didn't make it:

  • Fix a memory leak on the game over screen (something to do with destroying a ds_list, but I couldn't figure out where the problem was)
  • A visual cue that shows how the ice is growing when the player gets hit
  • Custom mouse pointer with fixed radius
  • Custom title screen with game logo
  • Screenshake effect and pause frames on enemy death
  • More background animation (moving dials, etc.)
  • Visual effects that make back-and-forth motion of the enemies more logical
  • Fix the font that GameMaker crapped up
  • Controller support

I stopped working on the game at about 02:45 and started packing up and submitting everything with the usual last minute panic. "Is there really going to be an extra submission hour? Did I get the time zone right?" (gets me every time)

In total, I think I spent about 30 hours actually making the game (I always try to sleep 7-8 hours each night despite the crunch).

You can watch the entire process here:

https://www.youtube.com/watch?v=nwfYEpBVX3k

Looking back: What went well, what didn't?

First of all, I made the game, and it turned out pretty well, I think. It took me a lot of work but I'm proud of what I achieved.

Specific achievements I am proud of: I realize that I made a lot of progress over my last four Ludum Dares. I have become better at scoping, at drawing, and I tend to figure out bugs faster. I established a viable workflow from concept to finished product that seems to work well. I can find conceptual solutions to game design problems fairly quickly (writing extensive comments on other games to try and improve some design aspects helped a lot to hone that skill). I've become better at deciding which assets can be omitted or simplified because some details won't matter in the end anyway. Overall I feel like I've come a long way as a game designer, even though I know that I still have a long way ahead.

Area most in need of improvement: Definitely composing. I wanted to write music using a midi keyboard, but ended up placing notes by hand again. A lesson learned is definitely to be prepared for two cases: Atmospheric orchestral music for a calm, moody game and upbeat retro chiptune sounds for arcade games. I might have to learn to use tracker software properly before my next attempt. Looking at the quality of the composition, there was almost no progress there compared to my previous LD.

Biggest regret: I realized that I didn't communicate clearly that the player is invincible to enemies, but that getting hit makes the ice grow instead. I completely forgot to put myself in the shoes of someone who plays the game for the first time, and I messed this up.

What took the longest: Hands down the online leaderboards. It is an important feature and I was willing to pay the price for it, but man, 6 hours is a lot for something that seems such a small part of the game. At least I received some very positive feedback on this part, so it was worth it in the end.

Overall it has been an awesome Ludum Dare for me. Thanks for reading all this and good luck.

Play Boiler Room Defense here!

So are we doing this or what?

Thanks for the positive feedback everyone. Let the word clouds begin!

ld40_wordcloud.png

And if you want, you can play Boiler Room Defense here

final2.gif

My 10 favorite Compo games

I'd like to share my favorite 10 Compo games of LD40.

Note that this list is highly subjective and that I haven't played most of all the created games so it's highly likely that some deserving games are missing.

In no specific order:

Cardhoard is polished beyond belief. From the the simple but highly addicting premise, via great graphics and sound to a brilliantly smooth execution, this game is impeccable.

Sofra employs @dietzribi's signature art style to create a relaxing atmosphere that embeds the puzzles well. A very charming game, that hides its dark backstory until the very end.

Tetris Tank, while being a bit clunky at times, has one of the best core ideas I've seen in LD40 by mixing up the genres of Tetris and Tower Defense into a very addictive whole.

LD40 - SirPumpy shows off extremely impressive visuals which by themselves carry a large portion of the game. It feels a bit unfinished in some respects as I understand time ran out, but what is there is a sight to behold and a lot of fun to play.

You are the Coin Master is a very cute PICO-8 game that implements the "the more you collect, the harder the game gets" by adding awesome garbage patterns on the screen. It looks simple but requires some serious planning to actually beat. A very trippy experience.

Sheep without Shepherd uses flocking mechanics to simulate a herd of sheep that need to be brought into the safety of their pen before the foxes arrive. Watching the sheep react in unison to the player's motion creates a very relaxing atmosphere.

Ludum Dare Asset Exchange is basically a bitcoin stock simulator (careful: it uses your PC to mine coins while you play). It's not particularly hard to play well, but the minimalist aesthetics make it stand out. Playing the game made me want to look into the real cryto exchange world

Overpowered doesn't look like much with its placeholder-like graphics, but the game concept is brilliant. You can only die by getting hit with your own shots that bounce off the walls of the level. Whenever you're hit by an enemy, your shot pattern changes according to the type of enemy you were hit by (increasing number of bounces, fire rate, etc).

Dangle Copter is a take on the classic Lunar Lander game adapted to the LD40 theme by having the rescued people dangle off each other to form a chain that makes navigation harder when picking up more people. The real star here is the cute graphics and physics effects.

Aurora is a minimalist audio-visual experience with SHMUP mechanics. Shooting the enemy circles gets incorporated into the music and creates a relaxing soundscape.

These are my personal favorite Compo games with which I'll end my Compo run and start playing the Jam games on my list.

If you want, you can head over to Boiler Room Defense and play my game.

Trackback: @hacksawunit, @dietzribi, @shrekshao, @sirpumpy, @sean-s-leblanc, @navot, @foolmoron, @sir-mr-dr-prof-sr-jr-phd, @pkenney, @akirassasin

I got into the Top 100 :D

I cracked the top 100 for the first time, so awesome!

ld40_results.PNG

Thanks everyone for playing Boiler Room Defense.

In case anyone is interested, here is the game's Post Mortem:

And here is a Timelapse Video:

https://www.youtube.com/watch?v=nwfYEpBVX3k

LD 43

I'm in!

Just cleared the weekend and got some vacation days for before and after. Pumped for another iteration!

Planning to do something music-heavy. Let's see whether those piano lessons paid off.

I love the music title theme. Fingers crossed!

Dammit, caught a cold

Crap, and here I was looking forward to doing some voice work. Fingers crossed I'll wake up miraculously healed.

I'll likely go with - Game Maker 1.4 - Aseprite - AAP 64 palette (never tried it before) - Reaper - Miroslav Philharmonik - bfxr / hopefully some recorded sfx

I wanted to focus on music/audio this time which was always something I had struggled with in the past.

Since I'm feeling a bit under the weather, there goes my prep time. Anyway, off to bed and hope for the best.

Slow progress

Originally, I wanted to make a turn-based game for a change, but it seems this thing is dragging me towards action-strategy. anim0.gif

Which squad to sacrifice?

First attack pattern done. Not sure yet everything will come together to be playable in the end.

anim1.gif

The idea is to place your squads on your turn, after which the opponent attacks. Then the whole fleet moves closer. Will enough survive to defeat the boss?

Protect the Mothership!

This seems to work. Still not sure if I can balance this in the end.

anim2.gif