gamepopper

LD 43

End of Day One

When the theme as announced, the only idea I had in my notepad for "Sacrifices will be Made" was a "Diet Simulator". Judging by the image of fruit in a blender, I immediately saw how redundant and predictable that idea was. I slept on it, and came up with an idea based on a mechanic one of my friends brought up.

LD43-00002.gif

I need a name for it (ideas are welcome!), it's gonna be a robot action platformer in a similar style to Super Crate Box, but the challenge is that the robot on its own might not be strong enough to go through the levels. As such, you can make the robot faster or its weapons stronger by sacrificing its controls. You can disable moving left, or jumping or one of its weapons to give it a boost.

Today has been primarily gameplay, and if I'm honest, I'm pretty optimistic with how this is going compared to LD42. I'm actually further in the gameplay than I was yesterday, and I still have the entire day tomorrow to deal with graphics and sound. All I have to do is not go overboard with those assets.

Linux Users Rejoice!

Yes, both Windows and Linux users can play Tank Gauntlet!

https://ldjam.com/events/ludum-dare/43/tank-gauntlet-control-vs-power

Capture.PNG

There have also been some small fixes to the UI, so hopefully, a few more people can try the game out. I'm still a little worried about the difficulty, only one person seems to have gotten past the first level so far.

LD43-00008.gif

Tank Gauntlet is Back and Operational

nPruTS.gif

Last night, one Twitch streamer tried downloading the windows build only to find the zip folder was corrupted. This was because of another minor update to the build I tried to upload. This was remedied at around 1:30AM this morning, so it should be all working now.

Sorry to anyone who tried playing Tank Gauntlet at all yesterday for the inconvenience.

https://ldjam.com/events/ludum-dare/43/tank-gauntlet-control-vs-power

Tank Gauntlet: Control vs Power

Who can get to Level 3? One person claims they have reached it.

LD43-00009.gif

https://ldjam.com/events/ludum-dare/43/tank-gauntlet-control-vs-power

Making of: Tank Gauntlet

Before Ludum Dare commenced, I wrote what my rules are for doing game jams. I figured I'd go back through them to show how I went into making my game, Tank Gauntlet.

LD43-00010.gif

These won't be in the order I originally set them for the sake of describing the progress.

Know your Tools

I already had my tools in mind before the theme was announced, I used my SFML-based C++ engine, Piskell for animated sprites, Photoshop for any bigger assets, BFXR for SFX and cgMusic with LMMS for music. A lot of which I have used before, but for audio, I feel as though I need to find more other ways to create the SFX I need without the use of a sound library, and maybe diversify my music credibility (I used Megadrive Emulation Soundfonts so there was a bit of a 16 bit vibe to the music).

Small Scope and Stick Mostly with What You Know

When the theme was announced, it wasn't one that I was entirely keen on, and the only idea I had jotted down was "diet simulator". While it was doable, it wasn't really that original and a simulator might have been a more laborious task. I slept on it and figured I'd do a tank combat game. To fit the theme and my "1 unique/main, 2 optional mechanics" approach, The unique mechanic would be sacrificing gameplay input for power/speed, with the two optional mechanics being shooting and melee attacks.

Gameplay First

The first thing I did Saturday morning was work on the main game, by setting up a simple tilemap and a rectangle sprite for the player. Then I made sure the player could move, jump and collide with the tilemap, and the player could wrap in all directions.

Oh, a basic tip on how to handle platform jumps: Do math. Don't bother guessing the right values for acceleration and jump velocity until you get it right, set up some variables and apply some vector maths, the below code will be enough to work out how high and how fast you want to jump, as well as how fast you want the player to move horizontally:

float Height = -85.0f; //Maximum Height of the Jump in Pixels float Distance = 80.0f; //Distance travelled in Pixels float Time = 0.5f; //Total Time of Jump float MoveSpeed = Distance / Time; //Speed in order to travel the set distance in the set time Player->MaxVelocity = sf::Vector2f(MoveSpeed, -2 * ((2 * Height) / Time)); Player->Acceleration.y = (-2 * Height) / (Time * Time); Player->Drag.x = Player->MaxVelocity.x * 10;

If you want to extend it further, check out this GDC talk on Building a Better Jump.

After using the code I have written previously for bullets, tweaking it to my liking, and adding enemy rectangles that can spawn periodically and move at different speed and be of different sides. I had most of what I needed.

LD43-00000.gif

I also added knife melee attacks and enemy damage before I worked on the menu that would handle input sacrifice.

LD43-00001.gif

Make Your Content Easy and Noticeable

For the last game, I made a racoon sprite that had a full running animation and was heavily detailed to the best of my ability, along with a tilemap and background to resemble a temple, and it took five hours. In the end, the environment didn't look all that great and the racoon sprite was so small that you couldn't see the detail.

This time around, I decided I wanted something simpler and easy to resemble, a tank. I loosely based the design on the StarFox Landmaster. With it being a tank, there didn't need to be many frames.

LD43-00004.gif

I decided to keep the sprites and tilemap monochrome, using shading and tones with around 20 shades of grey in total so I could randomize the tint to add some variety to it. The enemies were kept red, as it's an easy way to convey them as dangerous.

LD43-00007.gif

I found using fonts a bit more frustrating than normal, SFML doesn't use the nearest neighbour for fonts so on a game with a low resolution (Tank Gauntlet uses 320x180), it's difficult to use a font that isn't too big and wouldn't get blurry if the font size wasn't set to a specific factor.

LD43-00011.gif

621 and Take a Walk

On both Saturday and Sunday, I walked into the town centre to get food and other things to relax my mind and not stress over the game too much. I also tried to get some good sleep, so I didn't stay up too late and got up at around 8-9am on each day, oh and I took showers.

Find a Friend

One of the comments I got from this rule is that it doesn't have to apply to team-based projects, having a friend to look over the game or provide feedback is beneficial to a solo project. As such, I'd like to thank my friend Kris for putting up with me sending him screenshots and asking about ways to make the game feel better and if I'm making the game too cruel or not.

I hope you find this simple process interesting, after doing 12 game jams this year I'm kind of happy this one felt mostly streamlined. There were some issues like with audio, not to mention technical issues post-submission, but I hope people find the final product enjoyable.

https://ldjam.com/events/ludum-dare/43/tank-gauntlet-control-vs-power

Back in the top 100!

It's been a while since I've achieved a ranking such as this, Tank Gauntlet reaching the top 100 in a ranking.

Particulary happy with the results, thank you everyone who played and have s happy new year!

20181231_222252.jpg

LD 44

LD44 is Here!

Capture.PNG

As you can tell I only have a keen interest on a few of the final theme, but knowing Ludum Dare there is a greater chance one of the red ones will get picked. As such I'm spending tonight brainstorming ideas that could suit one or all of them, so when the theme is announced I'll have an idea I can grasp.

I also have my rules, made with a slight adjustment from the last Ludum Dare I did after some feedback.

  • Gameplay First - Your game might look/sound great and have a really nice menu but it won’t be a well-built game if not a finished game if you leave it at the last minute. Have your game prototype ready by the end of the first day.
  • Small Scope - My general amount of scope for a games jam is one main/unique game mechanic and two optional ones. It’s not worth putting so many mechanics and features in your game if you don’t have the time for it.
  • Know your Tools - I plan to use my own C++ engine, as well as Photoshop and Piskell for visuals and BFXR/LMMS for audio. All of which I’ve used previously and know very well. While supporting many platforms including web will help, it’s not worth using an engine or software because everyone else uses it and makes great stuff with it.
  • Stick Mostly with What You Know - Trying to learn a new mechanic, genre or art style as a project is fun, but don’t over do it, especially when you only have 48 hours. Time spent struggling or figuring out how to implement something new could be used to deliver more of what you already know how to implement.
  • Make Your Content Easy and Noticeable - Don’t feel you have to put the extra effort in how your game looks and sounds when you’re at that stage, but if you do don’t focus it on something the players aren’t gonna notice. Sometimes big simple designs work better.
  • 621 - Six hours of sleep, Two meals and One shower per day. Don’t pull all-nighters, don’t skip or replace meals with energy drinks and savoury stuff and calm yourself down for a bit while being hygienic.
  • Take a Walk - A breath of fresh air will help you think of solutions to that one bug that you cannot figure out how to fix or that mechanic that doesn’t feel right.
  • Find a Friend - If you’re gonna go the jam route, see if you can get friends on board. If you work together it’ll be more collaborative and less pressure on you. Be sure to find a decent way to thank them after it’s all over. Even if you're going solo for the compo, having a friend to bounce off ideas and improvements is always beneficial and eases off stress.

Best of luck everyone! I look forward to seeing the output.

Should probably figure out the Art Style round about now.

LD44-00001.gif

  • Level Upgrades come at the cost of your health
  • Randomly generated curved paths
  • Asteroids/Thrunt Style controls

I'm gonna keep on adding to and polishing the gameplay side of it but for now the base game is ready.

The Tunnel Game has a Look now!

LD44-00003.gif

Gonna call it Tunnel Bug, since I made the ship you control look like a ladybug if you squint a bit. Need to add sound so I'm gonna focus on audio after dinner and then get back to finalizing everything before 2AM.

Tunnel Bug is Online!

Decided to call it a night, even though there are less than two hours to spare. Pretty happy with what I got done this weekend, even though I'm not a fan of the theme.

Ludum Dare Page

Itch.io Page

Best of luck with the last few hours every one, look forward to seeing what you finish on Monday. Be sure to comment you're submission when you do so I can get to play and rate some!

TunnelBug.gif

LD44-00006.gif

Linux Users Rejoice!

I've ported Tunnel Bug over to Linux! You can now go to the itch.io page and download the tar.gz package and it should run!

LD44-00006.gif

Also, thank you to everyone who has played the game so far. In less than three days it reached the ranking threshold so I'm gonna look forward to seeing how high (or low) I get in each category!

Making of Tunnel Bug

You can go play Tunnel Bug and give it a rating when you get the chance. I love Ludum Dare, but honestly, I wasn’t fully aware it was happening until the week before when theme voting was about to begin, and it happened to be on the weekend where I had no urgent plans. So as the days drew nearer, I made my preparations for a 48-hour game dev session.

I’ve said in the past that I’m pessimistic about the theme voting during Ludum Dare, where none of the themes I really wanted would get chosen. So it was a bit of a surprise that one of the themes I did vote for in the final round was chosen: Your Life Is Currency. It wasn’t my favourite of the +1s, but I did think the idea of stuff being worth your life was a good one for game opportunities, at least until it got to thinking of one. I think I ended up with the idea that most people ended up having: using your health points to buy stuff instead of an actual currency, which makes a novel mechanic but not really a full game concept like the other ideas I voted for.

Following from my Game Jam rules, I aim my scope for at least three mechanics to focus on. With using health to buy stuff being my main mechanic, I needed two more mechanics. I figured a game about travelling through a winding path where you cannot touch the sides would be fun, so I went with Lunar Lander style controls (minus gravity) and curved paths. The lunar lander controls are fairly simple, two directions and a button to apply thrust, so all I had to do was implement two buttons to change the angle of the player and one button to apply a forward velocity in the player’s current direction.

LD44-00000.gif

The curved path was a bit tricky, I actually use the tilemap class in Vigilante to carve out the path with Cosine Interpolation. I did initially want to use Cubic Interpolation to have smoother curved splines, but the algorithm I was using didn’t really seem to generate a path from the start and end point I wanted, while the simpler Cosine algorithm did. I also wanted the number of points on the curve to increase over time, which would have been more difficult to implement with a cubic method.

LD44-00001.gif

If I had more time, I would have most likely used cubic interpolation or another interpolation algorithm to handle an infinite amount of points, plus implemented an object to handle rendering and collisions of the path, probably using a physics engine. One advantage with the carved tilemap approach was being able to manipulate the tile IDs to create fancy patterns when it came to working on the graphics.

LD44-00005.gif

I used a lot of shaders, my bloom effect shader as well to the point of being almost standard in most of my games (and has barely changed since I used it in Gemstone Keeper). To add a retro look, I wrote two additional shaders fo apply what’s been described as both a Gameboy and Pipboy tint, as well as a line-pattern shader for the dot matrix screen appearance.

LD44-00009.gif

The title screen was done after the base game was added, and was particularly fun for me to do. It took a while to get the menu options to appear right in a horizontal axis as opposed to the standard stack. I also used the Cosine Interpolation with two moving tilemaps to get the wavey line moving in the background. The line pattern is completely random, apart from the ends which took a bit of trial and error to get right.

Music and sound effects were done with LMMS and Chiptone, although to try and move away from chiptune I used a few assets to implement a trance style vibe. While I also used cgMusic to generate a melody, it feels a bit refreshing to have something that doesn’t sound too digitized.

LD44-00006.gif

As of writing, Tunnel Bug has gotten over 30 ratings and reached the 20 rating threshold in less than three days. I’m hoping to see if I can get a good ranking, as I did with Tank Gauntlet last year, but we’ll see.

12 Hours to Go!

Don't miss out on rating some games!

https://ldjam.com/events/ludum-dare/44/tunnel-bug

Ludum Dare 46

Ludum Dare 46: I'm in!

LD1.PNG LD2.PNG

Gonna do this now instead of doing it all in one go. Like with previous years, I'll be using my own C++ game engin built on top of SFML. It's been through a few updates since the previous year (largely thanks to one of my games being released on Steam last November), biggest one being physics.

Once again, I have my rules for game jams which I'll be following.

  • Gameplay First - Your game might look/sound great and have a really nice menu, but it won’t be a well-built game if not a finished game if you leave it at the last minute. Have your game prototype ready by the end of the first day.
  • Small Scope - My general amount of scope for a games jam is one main/unique game mechanic and two optional ones. It’s not worth putting so many mechanics and features in your game if you don’t have the time for it.
  • Know your Tools - Don't use software you barely/don't know how to use, including engines. This comes from seeing many people say they'll use Unity/UE4 because everyone uses it, despite not knowing how to use it themselves and spend more time figuring out how to get certain things working.
  • Stick Mostly with What You Know - Trying to learn a new mechanic, genre or art style as a project is fun, but don’t over do it, especially when you only have 48 hours. Time spent struggling or figuring out how to implement something new could be used to deliver more of what you already know how to implement.
  • Make Your Content Easy and Noticeable - Don’t feel you have to put the extra effort in how your game looks and sounds when you’re at that stage. If you do, don’t focus it on something the players aren’t gonna notice. Sometimes big simple designs work better.
  • 621 - At least Six hours of sleep, Two meals and One shower per day. Don’t pull all-nighters, don’t skip or replace meals with energy drinks and savoury stuff and calm yourself down for a bit while being hygienic.
  • Take a Walk - A breath of fresh air will help you think of solutions to that one bug that you cannot figure out how to fix or that mechanic that doesn’t feel right.
  • Find a Friend - If you’re gonna go the jam route, see if you can get friends on board. If you work together it’ll be more collaborative and less pressure on you. Be sure to find a decent way to thank them after it’s all over. Even if you're going solo for the compo, having a friend to bounce off ideas and improvements is always beneficial and eases off stress.

Brainstorming Time!

Before every LDJAM I aim to come up with at least two ideas per theme. Even if I don't use any of the ideas on the list and come up with a better one after some sleep, it at least helps me look into all the themes in deeper detail.

Anyone else plan or brainstorm game ideas before the theme is announced? What are your approaches?

LD4.PNG LD5.PNG

I'm Insane

Random Levels, Vector Art combined with Pixel Art, multiple cameras... all from my own game engine!

LD46-00005.gif

If only my game had a name...

Game Is Live

Last night I had the strangest dream that I made a game about keeping flowers alive in a garden from weeds and bugs.

LD46-00009.gif

...wait a minute, I actually did do that? You can actually play it?

LD46-00006a.gif

Well would you look at that!

Best of luck to everyone still working through the jam! Look forward to seeing what you've all been working on!

Keep the Garden Alive: Post Mortem

I’ll admit I was both prepared and unprepared for this. Due to the pandemic, I was required to take four days off for the month of April, so as LD46 started on April 18th and finished on April 20th, I decided to book the 20th – 23rd off, meaning even if I aimed for the compo (which I did) I could work up to the 2AM deadline on April 20th and relax. However, it had been over a month since I last did a games jam, and admittingly my game development projects have been much slower than usual after the last patch to Gemstone Keeper. Needless to say, I powered on because I missed the last Ludum Dare in October and wasn’t going to miss out on another.

In tradition, the theme for Ludum Dare is voted for by participants. As you can see from how I voted, I was particularly keen on doing a non-violent game, gardening, dreams, outdated technology, momentum and power sources. As is also tradition, the theme that actually won out was Keep it Alive, which neither myself or a load of other devs I know was particularly keen about…

Capture.PNG

I’ve gotten into the habit of taking advantage of the theme voting rounds to brainstorm ideas for each potential theme, coming up with at least two game concepts for each one (although game concepts could also be shared with multiple themes). The best I could come up with for Keep It Alive the day before the compo started was “Fighting of viruses” and “Keepy Uppy”, both of which weren’t very creative to me. After some sleep, I kept thinking of the Garden, Side Effects and Turn a Violent Genre Non-Violent themes, so I ended up mashing those three ideas into a concept that could fit the Keep It Alive theme.

It was to be a run ‘n gun (violent genre) where you keep a garden alive by taking care of flowers (garden), and killing both weeds and bugs, which left unchecked will kill your garden faster (side effects).

In my experience with Game Jams, I’ve developed a set of rules I abide by. They have been tweaked over time, although I first wrote them down in 2018 in the run-up to Ludum Dare 43 when I made Tank Gauntlet.

  • Gameplay First – Your game might look/sound great and have a really nice menu, but it won’t be a well-built game if not a finished game if you leave it at the last minute. Have your game prototype ready by the end of the first day.

So this part was simple: Get a prototype with the idea and mechanics done on the Saturday, so the rest of the time can be focused on making it look and sound nice.

For this game, it was getting a basic platformer with three different guns, and three different kinds of objects to fire at. Flowers, which would gradually die over time and you need to spray water to let them regain health. Weeds, which appear in random locations and can only be killed with weed killer. Bugs, which can appear randomly, move in a random direction and can only be killed with bug spray.

Visuals at this stage are incredibly basic, so I used rectangles and circles, as well as a basic tilemap set I use to test the autotile functionality of the tilemap code.

LD46-00001.gif

  • Small Scope – My general amount of scope for a games jam is one main/unique game mechanic and two optional ones. It’s not worth putting so many mechanics and features in your game if you don’t have the time for it.

This rule was based on an old practice done by another game developer who goes by TheCherno. It’s there to make sure that whatever concept I have must have at least three things in it to be playable, and anything else can be implemented once those three are in place. For Keep the Garden Alive, the main mechanic would be the three different weapons, each would affect a specific object and each would be fired from a separate key. The two optional ones were platforming, which would involve running and jumping on floors, platforms and walls, and randomised levels for variety.

The latter one I ended up having to rewrite a couple of times because procedural/random levels are much more complex than levels with a top-down perspective, they are very much possible but you have to factor in gravity and jumping to ensure that platforms are reachable. Even after I got a manageable random level generator working, I quickly implemented double jumps to ensure all platforms are reachable.

  • Know your Tools – Don’t use software you barely/don’t know how to use, including engines. This comes from seeing many people say they’ll use Unity/UE4 because everyone uses it, despite not knowing how to use it themselves and spend more time figuring out how to get certain things working.

For game development, my go-to environment is Visual Studio 2017, writing C++ code with Vigilante, my own engine built on top of SFML. I’ve contemplated going back into HaxeFlixel, but after Ludum Dare 41 ended in disaster and what little time I took to practice, I went with something I was more confident would be stable enough to work with. Vigilante has had some updates which definitely helped. A few months earlier, I discovered an easier approach to implementing platformer physics using Finite State Machines, so being able to have the player jump, wall jump and even double-jump would be a case of adding new states or tweaking existing states, instead of the approach I went with in Tank Gauntlet of several nested if-statements and boolean flags.

I also got to take advantage of using multiple cameras in my engine, which admittingly I never tested before deciding to give every flower a camera so players could see a flower’s status when it’s off-screen, but it didn’t take me long to find out how to fix it.

LD46-00005.gif

For graphics, I use piskell for pixel art and sprite animations. It’s a basic web-only tool that’s very easy to pick up, set up a palette and start drawing frame by frame. I wanted to have a little bit of variety so I also took advantage of both SFML’s vertex arrays and primitive shape classes, which I ended up using for both the player’s arms/legs and the flowers.

LD46-00006a.gif

Audio has largely been sound effect generators and the music generator cgMusic (with LMMS and soundfonts to convert them to playable audio files). In hindsight, I’ve been very rusty when it comes to audio. I gave a new SFX generator a go, SFXIA, which works pretty well although it’s much more experimental compared to the more straightforward BFXR and ChipTone. As for music, cgMusic has been a good fallback if I want something long and complex, but considering how in my much older entries such as Galaticus and Glow Drop where I actually composed the music myself, it makes me feel lazy.

  • Stick Mostly with What You Know – Trying to learn a new mechanic, genre or art style as a project is fun, but don’t overdo it, especially when you only have 48 hours. Time spent struggling or figuring out how to implement something new could be used to deliver more of what you already know how to implement.

While I should really branch out, like I did when I made two 3D first-person games back in 2018, or how I attempted a strategy game in Ludum Dare 41, arcade shooters are the kinds of games that I can set up easily so I have more time to experiment with them.

  • Make Your Content Easy and Noticeable – Don’t feel you have to put the extra effort into how your game looks and sounds when you’re at that stage. If you do, don’t focus it on something the players aren’t gonna notice. Sometimes big simple designs work better.

This was a rule I wrote specifically because in my Ludum Dare 42 entry, Closing in on Pascal, I thought it was a brilliant idea to spend five hours on a player sprite that was so small that you couldn’t see the detail. Definitely not the case for this one:

LD46-00009.gif

Some people have described it as being Kirby-like, although I was partially inspired by the Gyroids from the early Animal Crossing games. Simple and clear designs don’t take as long and can be just as appealing as a overly complex design, I mean one of the other entries from this jam has you play as a tumbleweed.

  • 621 – At least Six hours of sleep, Two meals and One shower per day. Don’t pull all-nighters, don’t skip or replace meals with energy drinks and savoury stuff and calm yourself down for a bit while being hygienic.

This is one of my two anti-crunch rules. Someone commented that a slight alternative is the 832 rule (eight hours of sleep, three meals, two showers), which is actually much closer to my usual work and game jam routine, although I took this rule from conventions and festivals who use it as a general baseline for attendees to stay healthy. It’s a lot more memorable to me personally, but there is an emphasis on the AT LEAST part.

  • Take a Walk – A breath of fresh air will help you think of solutions to that one bug that you cannot figure out how to fix or that mechanic that doesn’t feel right.

Fortunately, it’s one of the few things I can still do in this pandemic. I regularly walk around the nearby countryside for around an hour each day, and usually, the outdoors have been helpful for keeping me calm and not mentally tiring myself out. I’ve also been practising French as part of my daily routine recently.

  • Find a Friend – If you’re gonna go the jam route, see if you can get friends on board. If you work together it’ll be more collaborative and less pressure on you. Be sure to find a decent way to thank them after it’s all over. Even if you’re going solo for the compo, having a friend to bounce off ideas and improvements is always beneficial and eases off stress.

Thanks Kriss for putting up with me on Discord for four days. 🙂

In conclusion, a lot of my problems from this jam all involve the keyword of “preparation”. I definitely need to prepare more now. Definitely, before Ludum Dare 47, I want to at least have a better understanding of LMMS and other art tools so I could at least get through the art and sound stages of my game jams at a level I used to be at. On the technical side, I am happy with what I was able to implement, because I got to use features of my engine that I wouldn’t have had a chance to try out otherwise.

With Ludum Dare, games are ranked if they get at least twenty votes. Keep the Garden Alive was able to reach 20 votes in two days, but now I’ll have to wait two weeks to see how well it does. So far my best ever ranking was 27th in Humour, but I’m happy with any entry of mine that gets into the top 100 of a category.

Ludum Dare 47

Enter one...

Not a fan of these themes to be honest, but that hasn't stopped me from trying in the past.

Capture6.png

My toolset: * Engine: Vigilante Game Framework (aka my own engine built on top of SFML) * Graphics: Piskel and Photoshop, but maybe something not pixel art. * Music: LMMS and maybe cgMusic * Sound Effects: Chiptone, Sfxia and Audacity

Things might change once the theme is announced, fortunately I have a day to brainstorm and a proper night sleep to think things over. I also have my usual game jam advice that I've been posting in past LDs (and snapshotted directly from last April because I'm too lazy to rewrite it.

EjL_Em8WsAYHmKA.png

Break a leg everyone!