LD 43 November 30–December 3, 2018

TVGS is Live-streaming & Judging Ludum Dare 43 Games now!

That's right, Tech Valley Game Space is livestreaming from 8:30 to 11:00 PM EST on twitch.tv/techvalleygamespace! To have your game in consideration for playing and judging, you can sign up on the form below:

goo.gl/forms/zQAhArQG3Lfp2imS2

As the form already states, we do enforce a Code of Conduct in our live-streams. As such, we do reserve the right to cancel streaming and rating a game for any reason. Otherwise, come join us when the stream starts!

LowPoly Blender Character Tutorial

Hi everyone,

I am making some more enemies for my game Blót and this time around I thought I'd create a tutorial since I am not under the normal Ludum Dare time pressure =)

If you want to follow along, I am making the episodes very detailed to describe every step so it'll be about 20 episodes to create, color, create armature, weight paint, and animate this character. The first two episodes are available on YouTube and I'll be uploading one every day until the entire series is up:

LowPolySaxon_TitleWalk.gif

* Part 1 *

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

* Part 2 *

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

Apotheosis 1.1: this time with less bugs!

Screen.png


I just released a bug fix for my compo entry, Apotheosis

What's new: - Bindings now correct for QWERTY keyboard ✔ - Enemies that fly out of the rooms actually die ✔ - No more getting locked in Aphrodite's room because she refuses to heal you ✔ - If you happen to encounter another annoying bug, you can restart your ascent whenever you want using F5 ✔

Come and try it!


the powers

The powers say : a boy name Inzuki Spell ( izuki spell ) want to save the world ! let help him.

AS OF YET UNNAMED Narrated Pixelart Timelapse

  title_small.png

It took a little while, but I just completed and uploaded the pixelart timelapse video for AS OF YET UNNAMED to my YouTube channel. It's not quite a complete post-mortem, but it shares some traits. I did my best to describe the goings-on in the video in any case. :smile: I hope it's informative.

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

Issues with the embedded video? Direct link here.

Small Thumbsemfooter/empostld43.png

Wenk! The timelapse

Finally took the time to clean the 2TB of raw videos to make a timeline. We only have my point of view so be prepared for a LOT of alt tabbing and crappy code/art (i have no idea what i'm doing): https://www.youtube.com/watch?v=qogZP9Os_2A

WARNING: This video contains flashing images, so maybe don't open it if you have epilepsy (sorry i don't know much about the subject, but please take care).

PS: WENK! 🐧

Healer Bear

HealerBear.gif

Healer Bear did not anticipate the world would end so soon. They knew the prognosis was not good, but thought its condition was stable at the moment. But there is no time to grieve when so many other patients need treatment. That dragon suffering from malnutrition and minor stab wounds, for example.

Try your hand at Berrytales! :)

Some badasses beat it, but theres room for more! (you!)

Hi, previously made a post about my game challenging people to clear my game!

(I didn't set out for my game to be the dark souls of card games, but after the initial reception I embraced it)

It was well received and I've had a bunch of people try it with 2 champions (at least according to comments) managing! One with proof and it really surprised me because it was a very murderous route.(I recommend, emphasis on possession)

demonqueengif.gif

Its not the kind of game you need to beat to enjoy, Honnestly I think its more fun to just see how you improve. See your forces dwindle, yet be better the next time using your new knowledge.

Here are some hints ( i keep on adding to it) - You can possess multiple units at the same time!! - Goat has the ability to increase its spirit value. - Sacrifice & Possession > Fighting. By a lot actually, you can almost not fight at all. - I personally made it to round 23/25 without killing anything, it a puzzle, and you actually have to use some abilities at optimal time, but it should give an idea that, possesions are very effective. - The campaign is 25 levels and they are always the same: Yes you can "Learn from playthroughs" to optimize approach. - You can split 1 high level units for many lower level units, The stars must match, but dont be afraid to downgrade.

I'm seeing a lot of post-mortem, it makes me want to try more game, but also make one of my own. But before that any more feedback and impression would be appreciated, so Hey! Round 2! Can you beat the game?!

Demon Queen's Possessions LD page

Streamer/videos welcomed, I saw one playthrough and it was really nice!(lemme know)

What Level Ideas do you have ?

After the Jam is before the Development of the game :)

I decided to make a full game out of it and i am thinking about what kind of levels could be in a skateboard platformer game.

So you have some Ideas or what do you want to see there ?

If you haven't played the game you can play it here https://ldjam.com/events/ludum-dare/43/hyper-skater . Level3_2.PNG

The process of making "Icy Golems"! (compo)

Hello everyone!

I am Jeroen and this was the first time I participated in the compo. It was lots of fun!! :smile:

Writing on a software product is my job and I really love it, but I definitely also love making games... which is why I am here!

So...

Some people have been asking how I did everything for the game in 48 hours. Well, this is how it went...

This time I made a puzzle game... ForgottenLevel.PNG Fun fact: I forgot to include this level. I made the level during the compo and then forgot to add it to the level list... :dizzy_face:

A game I want to make...

What kind of games do I like to make?

Hmmm... I like to create games that feel "innocent" with preferably very little UI. I also like "atmospheric" games...

"sacrifices must be made" + "innocent" + "no UI" + "atmospheric" = I don't know?

I actually found it quite a challenge to think of a game I would find interesting that fits the theme. I did decide at some point that it would be interesting to have to sacrifice some kind of living things though (but how to keep that innocent? :smile:). After racking my brain for a while I thought: "Well, if I have to make a game where you sacrifice someone, I want to at least make it sometimes feel more like "Oh oops! no! no! no! don't do that! well... that just happened" or maybe not even feel like a sacrifice at all even though it is actually a living thing." Hmmm... :thinking:

Anyway, I feel the game I made ticks all the boxes "atmospheric", "innocent", "sacrifices must be made" so I am quite happy about it.

But you don't have to take my word for it, decide for yourself here: Icy Golems. :wink:

The making of Icy Golems

So, after I had some idea of where I wanted to go I started with the main character. I looked up multiple references on the internet, opened up Blender and quickly modeled some character. The character did not have to be very detailed since you would probably see it from a distance (I was not sure yet at the time). Unwrapped it and created a texture. I started from some flat color and after that I added some dirt by using multiple texture brushes. After day 1 the main character looked like the one below...

If you are thinking, Huh? That is not how it looks in the game... You are right, it does not... :smile: (see second day)

ProgressAt2PM_Blender.PNG

More assets...

I needed a lot more assets, I had a list. For the puzzle game I wanted to limit the tiles people could put instructions on and I wanted to make this clear in some way. I also wanted to indicate the grid so I needed a texture for that. Next to that I needed some puzzle elements, some arrows, a bubble...

Fun fact: The tile where users would be able to place the instructions ended up being used for something completely different... A compo has limited time so whatever works... :smile:

TileSmall.PNG

Tiles.PNG

For the grid I made some very simple texture in Krita + Gimp. The bubble is completely made in Gimp.

ProgressAt2PMemGimp/emCropped2.PNG

Day 1

6 hours of work...

Since I was still sleeping the 5 first hours of the compo :sleeping: at this moment actually 11 of the 48 hours had passed... ProgressAt2PM.PNG

11 hours of work...

Five hours later it started looking more like the final result...

Nothing was moving yet though... :smiley:

ProgressAt5em30PM/em2.PNG

Day 2

At the start of day 2 you could click a tile and move the camera but that was it. Fun fact: I had actually already rewritten the camera controls twice at this time. :slight_smile:

While I knew I should really start programming some gameplay, instead I changed the grid a bit to have it a bit more "wavy" since it was bothering me. :sweat_smile:

Fun fact: the "wavy" grid is actually happening in code. I wrote some code to apply some random displacement to the vertices in the grid (so, I am actually modifying the mesh).

Tiled!

I could easily change the ground mesh because I actually generated the whole level in Unity with code. The walls are just some prefab I spawn all over the place, the ground is a mesh generated by some code.

For the Level Editor I use Tiled.

Below you can see the last level in Tiled and Unity (recorded after the compo). LevelEditor2.gif

Xml for Levels, a good decision.

I think making the levels this way was a very good decision. That way the code that generated the meshes actually also had a complete representation of the level. The code reads all the walls and other things from the xml and puts them in some arrays... This allowed me to handle all the moving logic in one place with just some simple for loops. That code really had a concept of grid and knew how high each tile was.

Golems need to stop before cliffs? No problem! If two golems try to go to the same grid position stop them? No problem!

Yes, I had to write the code to read the level xml and generate the level (spawing some prefabs + making the ground mesh), but I just googled how to read xml in C# and had this code quite quickly.

Next to having a complete representation of the level in a single class the approach had even more advantages... For example, I never had to move walls in Unity by hand. They just appeared when I reran the level reading code. That saved me quite some time...

Making levels in Tiled also allowed me to focus on making interesting puzzles without any distractions. :sunglasses:

Rigging and Animations!

On the second day I also did a second iteration of the main character. I changed the proportions after I got some feedback on the first day that it looked weird (it does, doesn't it?). Anyway, I always planned to do a second iteration to do the rigging and animation. The only effect of changing the character this late still was that the texture got messed up a bit (hard line where the "dirty part" ends) but you cannot really see the texture in the game anyway. :smile: WalkCycleEncoder1.gif

As part of the second iteration I also redrew the emit texture (the orange spots).

golemtextures.png

15 hours before the deadline... let's start programming some actual gameplay...

I still had lots of things to do with only 15 hours left. If I remember correctly at that time still nothing was moving yet but I knew I had most of it in place... Animations were ready, I had the complete representation of the level in memory, ... So: coding, testing, fixing, repeat... :smile:

More features

After I got the basics working, I wanted to add some more puzzle elements and some more polish...

Buttons, doors, exits, hills to change level, wait instructions, the ice cube (textures, model and code), "snowflake" instruction, "magic circle" (textures and particle systems), exit effect, idle animations for the golem, icy pose for the golem, restart button, next level button, around eight actual playable levels, choosing a font, end screen, exporting to WebGL, making screenshots, replaying all the levels a couple of times, fixing some last minute bugs, breaking another level... Aaaaaargh!!, not enough time...

Because of some strange Unity behavior around static batching and post processing volume I still adapted the level reading code to work in the Unity editor instead of only when the game starts and ended up having to actually rewrite some of it. Apparently Unity does not serialize 2D arrays, who knew? But since the in memory representation of the level uses those it is definitely a problem if they get lost if you exit edit mode...

Block of Ice

I actually really like how the block of ice turned out. The block of ice is made by combining a model with a transparent darkish blue color and adding an emit texture with details (see below) on top. That is it...

BlockOfIceSourceSmallResult2.PNG

Finished!

While I still had a lot of things to do in the last 15 hours, it somehow worked out in the end... :open_mouth:

The game was uploaded half an hour before the deadline and I am super happy with the end result!

Links...

In case you want to take a peek at the source code, you can find it here.

You can play the game here: Icy Golems.

Finally got a bit of time to play a few games and rate :-)

Comment your games below and I'll take a look and play & rate them :-) Please play & rate mine if you'd like https://ldjam.com/events/ludum-dare/43/soul-reaper Still need a few more ratings to get to 20 :-)

The reaper is waiting for ya LDJam Cover.png

Blót SpeedRun Competition Now Open

I'm happy to announce that the speedrun competition is now open!

Prizes include $50, $25 and $10 Gift Cards at Amazon or Steam.

Check out all the details here, including rules: https://www.youtube.com/watch?v=ShieefdTYqA

Livestreaming your attempts is always welcome too =)

Good luck everyone (and I hope I didn't miss out any important details =)

Overslept has couch co-op!

https://ldjam.com/events/ludum-dare/43/overslept Screenshot_01.jpg

Check out our Overcooked-style game now that we've added 2-player co-op and adjusted the balance to be less impossible-y!

Guaranteed to be fun or your money back :stuckouttonguewinkingeye: !

https://ldjam.com/events/ludum-dare/43/overslept

How we made Welcome to the North Pole (Part 2 - Building snowmen)

This is part 2 of a series of blog posts describing how we made Welcome to the North Pole.

If you've made a similar blog post, paste the link here so we can create an index of tips and tricks.

See also: * Part 1 - Platformer mechanics.

Accumulating snow

Snow accumulates as you move on the ground.

WTTNP_Grow.gif

The ground detector detects whether the snowball is touching the ground (see Part 1).

As long as we haven't reached maximum size, we grow by a fraction of the GrowthDistance defined for that snowball size. Along with other stats, GrowthDistance is stored in a ScriptableObject instance for each size of snowball:

WTTNP_ScriptableObjects.PNG

This is what the code looks like:

```csharp void Grow() { var position = transform.position; var delta = (position - lastPosition).magnitude; lastPosition = position;

if (controller.Grounded) {
  SizeProgress += delta / stats.GrowthDistance;
  SizeProgress = Mathf.Clamp01(SizeProgress);
  if (SizeProgress == 1) {
    if (statsTemplates.Count > SizeIndex + 1) {
      SizeProgress = 0;
      SizeIndex++;
    } else {
      Die();
    }
  }
}
stats = statsTemplates[SizeIndex];

} ```

Stacks

Using a snowball's four detectors (see Part 1), we compute the top, bottom, left and right stacks of connected snowballs as seen from that snowball. Each stack reports its total weight.

We use stack information for the following: * Crushing snowballs under too much weight (see below). * Controlling multi-tiered snowmen (see below). * Jumping over other active snowballs (only the last snowball in a horizontal stack jumps).

WTTNPemStacks/emannotated.png Snowball and stack weight, as seen by the center snowball

A small trick to avoid code redundancy was to use C# lambda expressions:

```csharp delegate CharacterGroundDetector GetNextDetector(CharacterController current);

[System.Serializable]
public struct StackResult {
    public int Depth;
    public int Size;
    public CharacterController End;
}

private void UpdateStacks() {
    BottomStack = LookupStackEnd(c => c.groundDetector);
    TopStack = LookupStackEnd(c => c.ceilingDetector);
    ForwardStack = LookupStackEnd(
        c => Direction > 0 ? c.rightDetector : Direction < 0 ? c.leftDetector : null);
    BackStack = LookupStackEnd(
        c => Direction > 0 ? c.leftDetector : Direction < 0 ? c.rightDetector : null);
}

private StackResult LookupStackEnd(GetNextDetector detectorLookup) {
    var result = new StackResult();
    result.Depth = 0;
    result.Size = 0;
    result.End = this;
    // Limit the max depth to prevent loops in rare cases where detectors point to each other.
    while (detectorLookup(result.End) && result.Depth < 20) {
        var next = detectorLookup(result.End).CharacterInContact;
        if (!next || next == result.End) return result;
        result.Depth++;
        result.Size += next.Size;
        result.End = next;
    }
    return result;
}

```

Crush weight

If a snowball lands on top of another, the bottom snowball becomes inert. If the weight of its top stack is too high, the bottom snowball gets crushed.

WTTNP_Crush.gif

Other than looking cool, this helps manage the number of snowballs in existence and prevents clogging up doorways and tunnels. We slightly increase the linear friction of inert snowballs to keep them from rolling around too much (deceleration for active snowballs is handled by the movement code).

The crush code looks like this:

csharp void FixedUpdate() { if (TopStack.Depth > 0) { if (TopStack.Size > Size * WeightLimitFactor) { Explode(); } else { Die(); } } }

Snowman magnet

To keep snowmen in balance, we apply an elastic force to the top snowball towards its ideal position on top of the bottom snowball. To help you climb, this force is also applied as you move against another snowball:

WTTNP_Magnet.gif

The force is applied by enabling a TargetJoint2D on the top snowball and adjusting its target position each frame:

WTTNP_TargetJoint2D.PNG

This is what the update code looks like:

csharp private void UpdateLink() { var other = groundDetector.CharacterInContact; if (!other && forwardDetector != null) { other = forwardDetector.CharacterInContact; } if (other && !Jumping && !input.JumpHold && !input.Down) { PullJoint.target = other.transform.position + Vector3.up * (other.Scale + Scale) * 0.5f; PullJoint.maxForce = status.stats.LinkForce; PullJoint.enabled = true; } else { PullJoint.enabled = false; } }

Snowman control

A snowman is controlled by its head:

WTTNP_SnowmanControl.gif

Instead of applying the sideways movement to the head (see Part 1), we apply it on the bottom-most snowball.

We add a slight multiplier to account for the added friction between snowballs:

csharp private void MoveStack() { var target = Jumping ? this : BottomStack.Target; var powerMultiplier = 1f; if (target != this) { powerMultiplier = target.stats.StackControlMultiplier; } MoveSideways(target, powerMultiplier); }

End of Part 2

Thanks for reading!

See also: * Part 1 - Platformer mechanics.

In the next parts we plan to describe: * Gameplay polish (camera logic, smoothing) * Art style and implementation * Music and sound effect design

Feel free to post other suggestions in this thread.

If you've made a similar blog post, paste the link here so we can create an index of tips and tricks.

@fre and @catie-jo

Can't Get No Sacrifaction: Post-Mortem

A big thank you to everybody who has played and rated Can't Get No Sacrifaction -- I really appreciate all of your feedback! I think there's a pretty solid consensus at this point on what worked and what didn't...

The Good

  • The sacrifice system. I spent a long time (too long) on the UI for this, and other game mechanics definitely suffered as a result. But the underlying system is solid, and deserves further exploration.
  • The opening cutscene. If I learnt one thing from my LD42 entry Shrinking Panes, it's that a few small textboxes can completely change a game -- and they saved me again this time. At the end of Day 2, Sacrifaction looked like this: screenshot-1.png ...the player was a circle shooting at squares for no reason whatsoever, and it didn't make any sense. Then I wrote "That's right -- Kurt Fasthold is THE SACRIFICER."; suddenly I had a character, a plot, an opening cutscene and a chance at scoring some Humor points. :laughing:
  • The music :musical_score:. As infuriating music loops go, I'm pretty proud of this one. Despite being only two bars long, it's easily my most complex score to date. Perhaps I'm kidding myself, but it even sounds (to me) like it's genre-appropriate!

The Bad

  • The physics. If I had a dollar for everybody who said "Why does the character slide around!?" I'd have about $20.
  • The resolution. My previous forays into 2D Unity games have all been plagued by strange artifacts arising from incorrect camera settings, poor sprite sizes, etc; I tried very hard this time to ensure that there were no strange visual bugs, but ended up having to lock things to 1024x768 to make it work. This is clearly an area where I need to practice, if I'm going to continue to aim for pixel-perfect games.
  • The difficulty. Since the player starts with all of their powers intact and the enemies are very stupid, it's easy to win simply by spamming the gun. The other powers (in particular the sword) are too difficult to use, and this makes choosing which power(s) to sacrifice at each step too obvious.

If you're still here, thanks for reading! And if you haven't played Can't Get No Sacrifaction yet, please do; I make a point of playing and rating the games of anybody that leaves good feedback, and I'm looking for more games to play!

Play my game, and I'll play yours.

The title says it all. If you want me to play, rate and leave feedback on yours, do the same for mine! If you leave better quality feedback on mine, then I'll be obliged to do a more in depth review of yours!

WebGL + Download: https://ldjam.com/events/ludum-dare/43/reactor-overdrive

You delete files to proggress

In just delete them you delete files to make the assets disappear. Fun right?! I am currently working on some puzzles, bug fixes and other things but in the meantime you can play it, or watch the trailer. https://www.youtube.com/watch?v=gPRk38sGu9I

Game link: https://ldjam.com/events/ludum-dare/43/just-delete-them