pickens-inc

LD 43

Late post but I'm in! With Cameron again! And progress gif!

Hey all you wonderful people! I hope you're well!

I'm in as usual. This will be my last LD, likely till the October one, since I'm meant to be doing my final year at university right now, haha. This is my stress relief.

As usual, I'm with my good friend Cameron. We're taking the theme rather literally, like many others. You're a Paladin of Good and Evil, battling evil hordes and sacrificing them to your god... but which god do you choose? Life? Or Death? Your choice will have consequences...

ld431b.gif

Help us get a rating!

Hey guys!

Hope you're all doing well, I've played some absolutely brilliant entries this LD! Unfortunately I've hated that I've not had much time to play more than about two dozen, or even stream! University work has kept me busy. As a result, our game still has yet to quite hit the 20 ratings mark, we're in the danger zone.

Could you help get us out of the danger zone, please? I'll try my best to rate yours too, if you like, between my work.

Our game is a voxel-style wave-based hack and slash with a big boss at the end!

Check it out here.

Super appreciate it, thank you! Always nothing but love for this community.

cover.png

Taha

Ludum Dare 47

We're in! + A little reflection

Hello everyone, long time no see! I'm not going to get used to this 2 jams a year thing.

So last time I had to be terribly quiet during my jam - I didn't have time to make any posts at all, and made my game in just nine hours, because... well hey, looks like I'm all grown up! I started participating in the jam years ago when I was fifteen and had just finished secondary school. I've never gone a year without participating since, and now I'm twenty two, and this week am celebrating my first year working my dream job as a gameplay programmer at an amazing studio here in the UK. :) Having no professional experience, it's doubtless my Ludum Dare entries helped convince them I was wort hiring. Don't forget to put it on your CV, kids!

Now here I am, with holiday booked off like an adult (sized-child) and am here with my classic team partner Cameron to re-ignite our tradition of doing this together. Let's goooo!

(when he wakes up because timezones)


Whilst I now use UE4 full time at work, I will still be using Unity for my jam this time around. As for all the other tools? Not sure yet. Depends what we make. :)

Best of luck everyone! You're all a talented bunch.

DARE To PLAY: Streaming Your Entries Soon(ish)!

Hello!

I have been very busy lately, terribly so, so I never got to announce the completion of Magmania, the LD47 entry Cameron and myself made and very successfully, I believe. It's got a lot of potential for expansion, and we'd like to do it should we get the time. I intend to both write a post-mortem this weekend and eventually make a video as part of my 3 part video series I'm going to be working on about the Ludum Dare. So stay tuned for all of that, hurray!

But now to the interesting stuff. I always love the old Dare to Play stuff, so I'm going to be streaming your entries in about an hour, for an hour or two. I might get through only half a dozen games or so, but each one will get a decent bit of feedback, so sign up now! I'll announce on the LDJam Discord when we're going!

Here's the form for you to add your game: https://forms.gle/6K8AB1f4RFynQeB39

And my stream: https://www.twitch.tv/polyrogue_

You enter the priority queue if you rate and leave some feedback on Magmania!

That's it then. Hope to see you there!

Polyrogue

magmaniagif2.gif

Ludum Dare 48

Just realised I haven't said anything all Jam! Ah!

Hello!

So once upon a time every Jam you wouldn't be able to shut me up, especially back on the old compo site. Alas, I was in secondary school back then. This now my third jam since I started working as a full time game developer. It's become increasingly difficult both to find time and energy to continue to participate in the community as well as to rate other games. That might have something to do with the many paragraphs I end up writing though. I do it to myself. :sweat_smile:

Anyways! I just wanted to make one single post, because this is my FIFTEENTH Ludum Dare! Wow! That's a multiple of five so it's special! It really has been a wild time though, and I suspect the Ludum Dare will end before my passion for it wanes. So let me show you Hellevator! Look at me thinking I was clever for the title, but there's at least four other games with the same name, ahaha. It's a wave based third persion, top-down-ish shooter.

showcasegifoptimised.gif

Working with two good friends, one of them being my longtime LD companion, we focussed super heavily on gameplay feel for this one, and so whilst I don't think it's the most unique and original LD game we've ever made, I do think it's the most fun game I've made for a Jam. It was also a blast making it, mad props to Malu, who did a lot of the art and all of the UI art, for knocking it out the park for their first game.

iconsemdash/emgradient.png

If it looks like fun, it'd be amazing if you'd give some feedback on it, and after work I'm going to try and play as many titles as I can. My personal best dept is 5406m, but anything deeper than 2.5km is a great score!

Well done this Jam all who entered! I say this every time but there's some amazing games this time around.

Play HELLEVATOR here!

hellevatorScreen.png

Ludum Dare 49

Dare To Play (a little)! Streaming your entries for a little while soon.

I'm not a professional streamer by any stretch of the imagination, but every LD I participate in I like to try and have at least one stream session where I rate the community's entries. Feel free to submit your game here!

You need to be present in order for me to play your entry, and you'll enter a priority queue if you have rated my entry with some feedback! Besides that, there'll be no advertising or promotion of anything else on stream. Just games! So do come along I plan to go live at approximately 19:30 UTC+1. Check me out here:

https://www.twitch.tv/polyrogue_

46b96.png Try out our entry here!

Ludum Dare 55

I'm in, and it feels great to be back!

Hey LD gang! It's been a while. Even during my last few LDs I've not had time to make much in the way of posts. Full-time gamedev has a way of sapping one's energy for indie stuff, but I was also spending that spare energy working on a larger indie project which unfortunately fell through a little.

But, that just means I have an even greater motivation to finally return to making something small and finishing it! I'd like to avoid missing LDs again, as I had quite the consecutive record going. As with the last times, I no longer use Unity, and this will be entering 19th(!!!!) LD Jam! God, I feel so old.

I've booked days off, I've got my mate wisdom_save who I'll be participating with (who I technically first met as an online friend specifically because of LD36! Here's a little pair of gifs to show off how far we've come!

Along with Unreal Engine 5, I use Visual Studio (and Visual Assist, it's a godsend) and - should I have time - FL Studio for a bit of music.

Best of luck everyone, and have fun this weekend! Remember, keep your scope tiny, focus on a complete experience revolving around 1-2 mechanics at most! Leave time for audio and polish! If you complete all that, then expand! That's the secret.

Taha

LD36 - 2016 - 3 full days of work: igknight2.gif

LD50 - 2022 - 1 single day because we both had work: (I guess mp4 imgur links still don't embed, so video will have to do)

https://youtu.be/nBrpZwALay8

Good afternoon, from a hatless, horrifying wizard!

We have begun work, and given neither of us are animators, we're resorting to a rather unique method of animation for our wizard. In the meantime, I've intergrated GAS into the project and am working on the beginnings of the basic combat, before I'll move on to the key unique mechanic the game (and the theme!) revolves around.

We deliberated for a while on different settings given the theme, but in the end, given our combined expertise of action gameplay systems and VFX, spellslinging wizardy madness just seemed too appealing to ignore. So hell yeah! See you in a while with more progress!

Gif_215-ezgif.com-optimize.gif

Oh goodness me, oh dear, oh no

End of day one progress! The skeletons will actually be very much a friend, but some, like this one, will have other plans.

LD55OhNo1-ezgif.com-optimize.gif

Forgot to make a post announcing our game, so making one for posterity!

NecroWizardryTHemNoText/emWS.png

Hey everyone! just realised I never made a post showing off the game! Our very boringly titled Necrowizardry was an absolute blast to make, and is actually kind of fun!

You play as a goodly wizard (played by @smartwilliam), out to defeat the dastardly evil wizard (played by me). The two of oyu only know how to summon progressively large hordes of mindless skeleton minions, though. You each have a unique advantage, however. The Evil wizard can summon a little more often, and his brutal spell attack, whilst slow, destroys skeletons instantly when hit.

You, however? You prefer to do the dirty work, so instead win the battle by possessing your minions and fighting personally with sword in hand! But beware, your fragile wizard body is totally undefended when you're a skeleton! The main mechanic of the game is summoning skeletons and evading the enemies as the wizard, then switching to skeletons to defend yourself and go on the offensive!

There's a lot of jank, and tonnes I'd have loved to do to expand it more, but I'm really glad that my experience has taught me to focus on game feel and gameplay polish before expansion of scope, because I think the game really benefitted from that, not least because of the amazing VFX done by my teammate. Was my first time doing all the foley myself, and that was a tonne of fun, seriously, but not as much fun - as usual - as doing absolutely silly voices. Half the reason we chose this game was so we could do silly skeleton voices!

I do have a habit of always going for somethign combat or action oriented though, it is my specialty. Next time, I'm going to see if I can make something tinier, more casual, so I can focus less on moment-to-moment combat and something maybe more narrative!

Thanks for an amazing jam, all, I've played some seriously great entries so far. I'd love some more comments on our entry if you had a couple minutes and feel like being a skeleton!

Play Necrowizardry Here!

skeletondance2-ezgif.com-optimize.gif

Ludum Dare 56

We're in, and I've additional restrictions on myself!

I promised myself this jam that I wouldn't go too hard. I have a tendency to work long hours without enough breaks, and stay up far later than I should. That's normal, but nowadays when my day job as gameplay programmer demands more and more of my energy, it's no longer something I can keep up! I feel so oooold.

The other restriction I promised myself was that I would not make a game with combat. I love action combat games, but they take a lot of manpower and I'm one programmer. Smartwilliam is helping me out as always, but we'd both agreed we'd try to make something more story-based and simple this time round.

We're going with a game about a man who keeps fireflies to light his way, and scare off the shadows that lurk:

https://imgur.com/D9KXYpp

Curses, Imgur embeds still don't work!

A Brief Post-Mortem for The Last Swarm Warden

I often forget to write a "we did it!" post these days, and I regret that because back on the old website I was hugely enthuisastic in sharing my jam journal. Unfortunately part of my reticence comes from my having moved onto using Unreal, and sharing UE5 gameplay of any tsubstance in the 4MB limited gifs is extraordinarily difficult. I hope someday the imgur embeds work as intended!

Still! I just wanted to chat briefly about The Last Swarm Warden, the game @smartwilliam and I made! It's a light mix of narrative and puzzle, I suppose, but ultimately the goal is to provide a slightly creepy, immersive vibe, using the light of fireflies to guide your way.

ld56screenshot.png

I went into this jam with an additional limit on my head. As a gameplay programmer, I've found I most tend toward gameplay-heavy, system-heavy jam games if I can. Something that makes moment-to-moment gameplay satisfying and fun. If possible, that often means combat, too. Most of all, I never made games with a proper level environment to explore, for neither myself nor any of my past LD partners had experience with level design. So, I promised myself this time that I would not do anything with combat, and would try to make something with an actual narrative.

My friend and I took some time to brainstorm every idea we had. Eventually, we workshopped an idea together, in the form of using fireflies to light your way somewhere, with your character being injured. The fireflies would dim, and it was up to the player character to keep them lit. In addition, we wanted the darkness to close in at the end of an area, forcing you to back track without the ability to explore with the fireflies, who would become locked to your position. This is where my friend had the idea to make the player wounded in the story, so as to leave behind a trail of blood to follow on the return journey.

With the idea settled, we set about implementing. Thankfully, the majority of the gameplay systems were done by day one, and that's almost always my goal. The fireflies light was done quickly, though redone slightly on Monday evening. The lever/door system was all quite modular. Indeed, the beacons you encounter to refresh your fireflies were simply another kind of "lever" under the hood, defined as any actor that could be interacted with in close proximity.

Ultimately, I achieved the goals I had with regard to being easier on myself gameplay-wise. If the only responsibility I had was gameplay development, this would have been the easiest jam for a while! And yet, we still had all of the environment to do. In the end, we each took responsibility for a "branch". I'd hoped to have more than two, but over the years you get a good sense for how much you'll ultimately get done.

In the end, it was the level design that really proved the challenge. I am quite terrible at it, and with using the tools to our advantage. But it was a great learning experience, and I'm glad I finally forced myself to try it, because in the end I'm pleased with what we created, that sense of loneliness, and yet... not.

ld56screenshot2.png

My voicework was hardly my finest, but I'm very proud of the audio I made in general. I had about two hours to make all the audio, write the entire script, record it, and implement the whole thing, but I never let audio go missing from my game. Can't stress enough how important it is!

So there we are! Word salad, but this is The Last Swarm Warden, a game about a priest in a temple of FIreflies - once full of glowing light and warmth, now plunged into darkness, your brothers fallen. There's plenty of superficial metaphor in there, but don't think too hard about it, I'm not terribly clever!

Here's a low quality gif! Blast the 4MB limit! :laughing: ld56c.gif

Play it here! Thank you! Please let me know what you thought, if you do!

Ludum Dare 57

I didn't get a chance to say a thing this jam! Now to overcompensate.

Hello everyone. I used to be suuuper into posting a tonne of in-progress journal stuff during the jam, and I do still enjoy that! However this time around I had barely any time to spare, and violated more than a few of my usual healthy rules when it came to eating and sleeping :skull: not to be repeated, but this time I'd say it was worth it.

Making journal posts has become much more difficult since moving to UE4/5, because trying to fit high quality gifs that show off complex gameplay is near impossible with only 4MB to play with, and webm/mp4 animated embeds like imgur still don't work. :frowning2: I hope that gets sorted soon! Else I spend half an hour trying to compress a single gif and it takes all the fun out of it.

As a result, I have no fun progress shots unfortunately! But I did want to talk a little about my entry. And by a little, I mean I'm overcompensating massively and writing an essay to get all my post-mortem thoughts about the game on paper.

Oasis_Dawn2.png

The premise

So I have a bad habit of tending toward combat systems whenever I'm given full creative control of a jam game. In truth, this is usually a bad idea, because complex combat systems are extremely difficult to make feel right in short order. In LD56 I resolved to do something I'd never tried to do before - focus more on a slow paced, narratively focussed game with absolutely no combat whatsoever! My friend and I achieved that nicely enough, so I kind of took this jam as... well, you could view it either as a nice treat, or a total relapse :laughing: because I decided "hey, what if I just tried to go all out and make as cohesive a melee combat system as possible?"

The novelty

Not only that, but there had been one thing bothering me about my game development skillset. I can make incredibly bad programmer art, I can code. I know enough about UI to at least... like, make it. I found I have a great passion for composing music, even if I'm not amazing at it. I even know a little about VFX. But I have always hated the visual side of things - and now I work pretty exclusively with 3D games, it was becoming very frustrating, feeling stuck with UE5 default assets, primitives, or using things like MagicaVoxel (which I've put to very good use in the past with Potion Seller and Necrowizardry!), but I'd bounced off Blender tutorials so many times. i'm not sure precisely what clicked this time, but I found a workflow that finally fit right for me. This was my first time doing the 3d modelling for my game, and I'm quite happy with how it all worked out! I've never thought myself capable of being able to make anything visual, and my models are totally functional! I actually had a blast making them too.

player.png

You can actually see that his turban doesn't have the tail or the side flaps. Originally I was intending for him to have them, plus a cape, plus a tabard thing. Unfortunately, I couldn't figure out how to get cloth physics working. Technially the turban he's wearing in the game has cloth physics, but they don't really work, and it's something for me to look into!

The devil in the details

So yes! I felt that for all of my comfort zone of combat, I had a lot of big firsts in other aspects. Not to mention I don't think I've ever quite managed to nail satisfying melee combat before, and I think this time I might finally have cracked it. Even without VFX (flew solo this jam) I feel I managed to get a good balance of all the different aspects. When it comes to combat gameplay like this, prolonged interest and fun comes from a combat system complex enough to punish button-spamming and constant adaptation, but especially important is then having a variety of enemies that force you to use all of your toolkit. It's the number of enemies that really keep it interesting. This is why the second enemy type plays such a key role in the gameplay loop - even if you were good, you couldn't just stand still and parry, because of their unparrybale, very damaging special attacks. The third enemy type forces you to move and make use of the environment. The environment itself is definitely the weakest aspect of the game. Environment and level design is another weakpoint for me, one that I tried to tackle last jam but dind't wish to here.

It's interesting just how many subsystems are important to making combat feel cohesive and fair. You can be swarmed by enemies, but a key system I had implemented early was what I called Engagement. Enemies only actively attack you if they're engaged with you, and only a limited number can be engaged. Other enemies would remian close, and try to keep nearer engaged enemies with low health, so they could take their place. If the gap between you and the enemy grows too large, they'll disengage, allowing closer enemies priority. This Engagement syste mhas a huge impact on difficulty, and ensures the player shouldn't ever be totally overwhelmed, whilst still feeling powerful, like they're taking on a bunch of enemies alone. I could scale it up as difficulty increased, but not by much.

Other little nuanced subsystems one might not think about are things like points at which attacks become uninterruptable, the amount attacks thrust you in directions, i-frame balance, and particularly the way you choose to heal. I knew I wanted my healing system to both be directly connected to combat, and to be a good reason to force the player to move. It was a bit crude, but it was how the Shifting Crystal came about.

The setting and narrative

I have always wanted more representation for south-asian and middle-eastern aesthetic characters, and so I figured this would finally be a good opportunity to help contribute. I sadly didn't get time to weave in more of a narrative, but I had this idea from the beginning that you were the character from a fictional myth, the sort of demigodlike figures people tell stories about like hercules, stuck in the short story your life has become. Fights would take a day, then the sun would set and the player would reflect by the oasis as they healed. Each night there'd be a voiceover as the player reflected on themes of isolation, and of the expectations placed upon you by others. That all kind of got lost due to time, and so the remnant of that is just a momentary 10 second breather to get fully healed between days.

The result

journalclip.gif

In the end I'm really happy with the resulting game. For the first time in a long time, I have a real desire to keep working on my jam game, if only to make it what I wanted to originally - proper plannin allowed my system design to easily take in new enemy type, so I'd like to make the game a 7 day narrative experience with tonnes of enemies, maybe some bosses. I want to fix up some of the less great sound design, and - most importantly - redo all the voice lines! I've been super sick since last Saturday and you can hear it :skull:

If you've read all of this, then thank you! I typically dislike the posts that are just veiled "play my game" posts, so don't feel like you need to, I'm continuing to rate games. If you do want to check it out, I'd love to see if anyone can beat Day 5. It's bloody difficult! You can see it here

Also, I'll take this a chance to plug the two excellent jam entries by friends of mine! Nine Lives Deep and Archaeologic. Thank you, and looking forward to seeing more of your entries as I go through the smart filter.

And now... I can rest.

mostiruised.png

Ludum Dare 58

Can't do the LD this time around sadly, so offering my voice!

Heyo friends, just thought I'd post here. The jam was uncancelled too late for me, and so I just finished my first week at a new studio and am far too tired to jam, though it breaks my heart. So I must break my streak.

However, that did give me the idea. I do have the energy to record VO/VA, and so even though there's only ostensibly Sunday and Monday left, I'd be happy to record some things for anyone who would like Voicework. I have a video here showing off my voice in past jam games, and a few random projects. They're hardly my best work as it's usually my recording last-minute during my own jams, but I'd love to dedicate more time to one of your guys' games whilst I've no energy to dev myself!

If you're interested, feel free to comment down your discord or however you communicate, and I'll add you, or give me a ping on the discord server, my forum post in looking for team will still be visible.

Best of luck everyone with the rest of the compo and jam!

https://youtu.be/QsYDi5OWU?si=8zZJmCpp_nZYPN8h

Ludum Dare 59

For Boom The Bell Tolls - the airship battler inspired by a Clock (post-mortem)

Firstly, hello everyone! I used to do loads of journal posts during the jam, but as I've grown older and time has become shorter in supply, I find making time for it more and more difficult. Not least because where once I used GameMaker to make 2D games, making gifs of 3D UE5 gameplay is much more difficult to fit in the 4MB limit we still have :sweat_smile: I've come a long way since LD27, and this was my 22nd LD entry.

I'm sometimes asked how I'm able to fit the amount of content I do in my games, and I thought it might be interesting for people to hear a little about the development of my LD59 entry, with a highlight on the tech design and some other neat little things to point out along the way. For context, I'm also a professional gameplay programmer as my day job, and whilst applying my regular workflow in a jam would be a fool's errand, it has absolutely allowed me to adapt my way of working during a jam. Particularl, to create modular systems that let the content-creation part of game-dev flow super fast once they're up and running - something that works great in a jam. More on that later.

icon4.png

Ideation

I was only able to start late on Saturday night, as I was at the Magic: The Gathering Strixhaven prerelease! Getting home and seeing the theme, I did what I usually do here: create an empty document and brainstorm every word and concept I can think of relating to the theme. Usually, I take a walk after and think on it, but being out all day, I ruminated in my lounge instead, whereupon my clock chimed. I grew up around an old mantle clock which had the traditional Westminster chime, and so I made sure to have one on my wall when I left home, as I'm very fond of the melody. I immediately latched onto the idea of being inside a giant clock tower, where you had to ring the bells on the hour manually. This is the clock that inspired the whole thing:

ld59 journal 2.gif

Originally, the plan was to do a "Papers, Please" style game where you had to watch the clock and ring the bells on the hour, with more weird rules and stipulations added as you progressed. Long-story-short, however, I couldn't think of a way to make the game loop feel fun. That's usually the part I'm prioritising over everything: feasibility to make the gameplay loop and game-feel good. It's at this point I decided to be a bit daring, retaining the bell ringing idea, but instead using those bells to ring out commands. I have a bad habit of always wanting to put combat in my games, and decided I could try and make a game about being in some kind of mech fighting airships with a very simple battle system, but inputting commands was to be done by ringing out short melodies.

My Usual Plan and First Steps

This is hardly unique, but the goal is usually to get the purest MVP gameplay loop working on the first day, content on the second, and polish on the third. With only two days, I had to be very stringent and knew some polish would fall by the wayside, especially when I realised I wanted animated portraits to give character to the enemies you were fighting. I am a horrible artist! With that said, the game's implementation was effectively split into 3 sections:

  • Interactable objects and the bell sequence-based input system
  • The second-to-second airship combat with an enemy AI, with both player and enemy's basic toolkit as well as health and death
  • the overarching progression "encounter" system that would handle the enemy's state, keeping the fight itself an encapsulated experience that could be started, finished, and swapped out

That third one was going to be crucial. Once upon a time when I was a teen, I probably would have hard-coded everything to make it a fixed series of fights barely aware of any context, but I knew going in that making this a more sophisticated system was going to be imperative to make it easy to create lots of fights. More on that later. First, on Saturday night, I began with the bell input system!

End of day one: bell sequence commands:

Thankfully, implementation of the actual bell ringing and sequencing system was very easy and was complete before the end of the night. Essentially, ringing the bell adds a character to a string that gets built, and then pressing the "execute command" button parses the string. If it's a valid command, it plays back the sequence for you and then executes the command. By this point, I'd decided on two more things: firstly, that you were inside a giant metal whale, that would sing the command back to you with a brassy synth. Second, that I would use the same notes as is used in my clock: C, F, G, and A. With each command being assigned within an enum, I was able to simply map a string of notes to each one:

LDjournal 4.png

Whilst I normally don't love string-matching, this was actually very effective for the jam and also meant I didn't need to pre-record the sequences being played back, I just give it the sound of each note and have it play them back dynamically. This meant I could adjust the difficulty of the game on the fly by the melodies assigned here - one of many levers I'd have, even if I wouldn't have time to adjust them all! By the end of the night I had a very ugly but working bell sequence command system, with sound! You'll have to trust me on that last bit. Audio is 100% mandatory and should never be ignored! :wink:

LDjournal3.png

The Ships and player's combat system

There's actually not a whole lot to say about the player's combat system; the actual implementation is super basic. Projectiles, shields, and healing all work how you'd expect, and the bell sequencer just calls the appropriate function in code. They fire at the enemy ship, which is connected to the enemy ship's manager system. That's a much more complex beast I'll talk about plenty in a moment, but a fun thing I implemented early when making the enemy ship models is their "hovering" animation. A few years ago I spent a great deal of time researching 3D sniper scope implementations, and as part of that I made a few notes on how to implement a simple "breathing" effect for a player's scope to sway up and down and pseudo-randomly side-to-side. A visualisation is below. Using those notes, I applied the same breathing effect to the ships to achieve their hover. It only took a few minutes, and I think it's a million times better than having them simply be static:

ScopeSwayModelling.gif LD59journal51.gif

The encounter system, enemy AI, and modular gameplay system design

This is kind of where I'm the most proud of the game, and it's split into two sections: the overarching encounter management, and the enemy AI itself. Before getting into anything deeper, I'll quickly talk about how I set up the AI to behave:

Enemy AI works mostly on a series of timers and weights. It's not a million miles away from a proper utility-theory-based approach, but I didn't have time to make the "utility" very smart. An enemy has a series of actions it can take, and a timer dictating how often it can take an action. When the timer is triggered, it chooses an action pseudo-randomly. Each action is given a weighting so it will be more or less likely to be chosen. Each action also has a cooldown timer, so we don't get a ship just constantly doing the same thing. In addition, to make them feel alive and less machine-like, they can react to the player firing any kind of weapon. When a player fires, the enemy AI has a pre-determined percentage chance to react, an action determining precisely how they can react, and a cooldown timer so they're not constantly avoiding your attacks! That would be lame. In jams, I find enums are so helpful for this sort of thing. You can see how the basics of the AI and combat system is sort of built on enums here:

LD59journal7.png

Now to explain the part that ended up being the reason I was able to complete this jam. In planning my systems, I do my best to strike a balance between hard-coding and modularity. At the cost of some bespoke flexibility (and the time investment to make it possible), making gameplay systems modular in the right way means actually making new instances of the content within that system becomes suuuper easy. What do I mean? Well, in this instance, I built out an "encounter" system that tracks whether or not we're in a fight. When we enter a fight, we need to know what the fight is. And so, using the systems I described above, I implemented a data asset system that holds the enemy's "preset" - a single asset containing all the information you need for that enemy. Rather than containing it in any kind of fight management system, the data is kept in a separate asset, and all the relevant information is loaded into the encounter.

This data asset also has a slot for the actor containing the enemy ship actor itself, which has some space for bespoke logic inside. This is how I was able to make certain ships fire bigger different amounts, have different speeds, or shoot bigger cannonballs. Knowing where to make things modular and where to make things hard-coded and bespoke will help you tonnes in a jam! You can see an example of the asset here. As you can see, I can make enemies easier and harder by tinkering with these numbers, and - assuming I have the art and audio assets, I can make an entirely new boss in a matter of minutes!

ldjournal8.png

And with all the "enemy preset" information entirely separated from the encounter system, and the encounter system being able to handle starting a fight, finishing it, and picking the next one, all I had to do was make a list for it to tick through, where reaching the end let you win! This also made it so much easier to re-order the fights for the tiny bit of balancing I was able to do.

ldjournal9.png

Once I had this system set up and working, I got to do the fun part of making a bunch of ship models, writing/recording the dialogue, and simply assigning the numbers and actions. And drawing the portraits, of course. Once the art and audio assets were done, each ship's basic implementation only took about 10 minutes to set up!

Bonus bit: audio and learning something new

Here was something else I found worth mentioning. Never does a jam go by where I don't end up doing something for the first time and learning something new. This was the first time I had to write scripts for other people, and it was great fun, but a surprising amount of time and work too. I asked my friends on the day if they wanted to voice a character, giving them very little context beyond what was in the doc. It was great fun.

Once I had the recordings, though, I realised I had a serious dilemma. They were of varying audio quality, which I didn't think would be a problem as I had always intended to filter it through a radio effect. Once upon a time I'd have done the labour-intensive thing of putting each individual line through the multi-step process of creating that effect from scratch in audacity. I 100% didn't have time to do that, but these days I had a better way: create the effect chain in FL Studio, import a voiceline, then export it. Job done. Unfortunately, that still meant doing that process for all 91!! lines of enemy dialogue. This was when I took a chance, did some research, and decided to try finally using one area of the engine I had barely touched: metasound effect chains. I was aware of how to use metasound itself, but never had I created an effect chain. Thankfully, with the help of some guides I found online, I created precisely what I wanted, a chain with a low pass, high pass, and some distortion. With some more googling and experimentation, I figured out how to hook this up to the dialogue system, and suddenly I had a beautifully low quality, fuzzy radio effect filtering my dialogue at runtime!! This meant I could just import my audio as-is into the engine and let it do all the heavy lifting for me. A big win that saved me literally hours of work!

ld59journal10.png

I have to give a quick shout-out to my friends who did the voiceovers for 4 of the 5 captains. They endured my short-notice demands and did an amazing job. Even though the gameplay's quality is debatable, you guys have universally praised them too and it's well deserved! :heart:

What didn't go well

It wouldn't be a Ludum Dare post-mortem without a look into what didn't work, and for me there are three standouts. The biggest one, and the most universal complaint, is actually the interaction medium. The ship itself was big and I wanted to convey a sense of scale. Indeed, at first, I neglected to mention that ringing the bells was going to cost some currency. If you've played the game and wondered why the back half of the ship is useless, in the place of the furniture was going to be a machine to charge up batteries, but I pivoted early and killed that entire part of the game. Despite this, running around clicking the bells can still be tedious, as can the lack of vision on the enemy. I wish I'd made the cockpit window much bigger, and put the bells closer together. I actually think this would be pretty fun in VR then.

Not everyone has the same musical memory, either. For some people, when you've heard the tunes enough times, you can associate the melody with the command you need and you no longer need to look back to the reference sheet. However, for those with no musical experience, this association doesn't always come naturally and so it's understandably a much more frustrating experience.

That also was exacerbated by the balancing. It's not a super difficult game, aside from the final boss, but there's a midpoint skill check, and I didn't have enough time to teach the player about baiting out reactions or how to use the shieldpiercer. The game was also never meant to let you heal, but I decided to add a difficult, long-winded sequence that heals you for a small amount - right at the last minute. In hindsight, I regret adding this in the way I did, I should either have made it heal lots, make the sequence short for a tiny heal, or removed it completely. A long sequence and small heal incentivised a very tedious gameplay pattern in low-health scenarios of escaping the enemy whilst spamming this melody over and over each time the player took too much damage. On the upside, did you notice that it's the little funeral bugle melody? :laughing: And did you spot the Westminster chime in a different command?

I also hate drawing! Whilst I'm really proud of my ship models (before LD57 I didn't know how to 3D model at all!) and enjoy my crude 3D modelling, I am really bad at 2D art and haven't needed to draw anything for a long time. I really wish I had a 2D artist to draw the portraits for me, and that goes double for the opening animatic thing. That was drawn in a real hurry at the end after work on Monday, and I really dislike how lame they look. I very much wish to work with others again for LD60! As it was, this could have been submitted to the compo if I'd spent Sat and Sun on it, instead of 1/3 of Saturday, Sunday, and half of Monday! Alas.

Conclusion

In the end, for all its flaws I'm really happy with how the game turned out. For a solo jam made in an extra-tight time crunch, I think the game-feel and content is there. I love how I managed the audio design, and I think this is the first time during a solo jam I've managed to make a proper, complete narrative experience. Sorry this was such a huge write-up, but thanks for reading. I hope you found it at all helpful! If you have any questions or thoughts, feel free to reach out to me any time.

LD59 journal.gif

If you haven't played it yet, feel free to check out For Boom The Bell Tolls here. Did I mention he's stolen your cat? :cryingcatface: