LD 40 December 1–4, 2017

Some wireframes of our ship!

Check our page how it all comes together in Unity!

https://ldjam.com/events/ludum-dare/40/captain-capsize

SHIP.gifSHIP2.gif

As you can see the ship uses an 8x8 pixels texturemap except the flag and the floor. This map is used for everything else you see in the Game!

I'll try to post some more post mortem stuff like how my scene looks, the chaos..the horror!

Mallio Cart tech: gfx & audio ḑi̶śto͝r̴t҉io̡ns̴ pt.1

Hey! I usually write ~techy 🤖 stuff~ on how I did effects and so on in my LD games (see here and here), like for these games:

LD39: SPACEJAMMED | LD38: Blomst 🌻LD37: Lock and reload - | - ezgif-4-2a3a7addb4.gif | ezgif-4-0dc7b137a0.gif | ezgif-4-6be4dc66a9.gif

This time around I made Mallio Cart. There wasn't that much focus on that kind of stuff, as the focus was mainly on the gameplay idea and content actually ended up somewhat lacking and empty in the end, altho this game too had its visual flair:

Of course this GIF has been heavily shrunk and optimised to fit this website's minuscule limit of 4MB, but you get the idea.

malliocartemgif/emoptimert4.gif

You can PLAY Mallio Cart here if you haven't yet!

There's also a video if you just want to watch it:

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


Crying BABBY visual and auditory effects

While I did at least make modifications to it, I didn't write the toon shader from scratch this time but found one. Perhaps the most elaborate graphical (and auditory) effect this time around was the one activated when too close to a crying 👶 bab(b)y:

malliocartemgif/embabby_optimert.gif

To also hear the audio distortion that goes along with it, watch this video:

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

Therefore, I thought we'd talk about that this time around! Since the audio stuff was sort of new to me, as someone who has mostly been focusing on having fun with graphics, I thought I might cover both this time, to see how the effects tie together and how they were done! c:


Visuals

This was made in Unity. I applied a post-effect, which is something I've written about before under getting depths in the second post on my LD39 game, SPACEJAMMED. This means a shader that is getting applied to the entire rendered image as a 2D effect after the whole scene has been rendered by the camera. Since all I needed to do was add some tinting, distortions and noise, I could do all of the relevant work in this shader.

If you're totally new to shaders, what it basically means in this particular case is some code where I can modify the colours of (or completely discard) the pixels (or "fragments") that are about to be drawn before they are drawn. I can basically "hook in" and modify them before they go to the screen. This way, for example, I can apply a tint. I can also accept input data which I can control through regular non-shader code, which is how I passed a noise texture into the shader as well as a number representing the level of distortion, so that I could fade it in instead of just toggling it on and off.

Tinting

Simplifying a bit, thus the tinting was no more complicated than something like this:

``` // Gets the colour from the image about to be rendered // to screen at the current pixel/fragment as specified // by the UV (texture coördinate) value passed to us. // The 'fixed4' means a vector of four values, one for // each colour channel (red, green, blue and alpha). fixed4 col = tex2D(_MainTex, UV.xy);

// Increases the red channel by the distortion factor. col.r *= 1.0 + _Factor;

// Pass the new colour of the picture on for rendering! return col; ```

In reality the exact maths for tinting the right way looked a bit different and I also decreased the green and blue channels, but it's just something one has to play around with until it looks right!

Noise

Then there's what looks a bit like television static fading in as the effect increases. This is just a texture passed into the shader and added on top of the image, with a little bit of animation going on to make it appear all erratic and constantly changing, like real static. The technique was essentially the exact same as I used on the actual television set in my LD37 game, Lock and reload, as described here, so I won't really go over it again.

The only new thing was alpha compositing on top of the original image, which was done using the same old blending algorithm I've also described before under interpolation when talking about my LD38 game, Blomst 🌻!

Vignette

The edges around the screen also get darker (and redder) when this happens altho it can be hard to see with everything else that's going on. When a thief approaches, this is also the only effect that gets activated. This is simply done by tinting the pixels based on their distance from the middle of the image. We can get the position of the current pixel the same way we did when sampling the original texture in the code example under tinting, by reading the UV value, which is a pair of positions (x and y) between 0.0 and 1.0 and so the middle is at (0.5, 0.5). The function I use to calculate the "vignette factor" looks like this:

``` // Takes in two values (xy) and returns a single one. fixed vignette(fixed2 pos) { // Just for clarity. fixed2 middle = fixed2(0.5, 0.5);

// length() gives distance between two points.
return length(fixed2(pos.x, pos.y) - middle);

} ```

To calculate the vignette for any given pixel, which like anything else is also influenced by the distortion factor, I simply use it like so:

fixed v = vignette(UV.xy) * _Factor;

Then I simply combine this resulting value with the original pixel's colour channels in various ways to get the result I want, like increasing red and decreasing overall colour.

Di̶śto͝r̴t҉io̡n

Here's the big one! See how everything wobbles and waves around? It all comes back to those texture coördinates (UV's). By offsetting them a little bit, we can sample pixels further away from those that we are actually "supposed" to sample to get the original image and depending on how we offset them we can get the pixels to move around the way we want to.

I simply used sine waves for this. The function sin() returns a value between -1.0 and 1.0 depending on the value that is given to it, and just repeats the pattern over and over, creating a nice waveform:

sine.png

Just by looking at the wave, I think it's already possible to see what we're getting at here. We can also use cosine, cos(), which does the same thing, but slightly offset.

So what we want to do is replace our old code for sampling the original texture, tex2D(_MainTex, UV.xy) with something a little more fancy, where UV.xy gets offset by some kind of value returned by the wave functions. For each pixel, we need to supply a different value to the function or else they will all get offset by the same amount and there won't really be any distortion, just the whole image shifted to the left or the right, up or down. So what easier value to use than the position of the pixel itself?

``` // x and y for the offset will be stored here. fixed2 offset;

// Start by offsetting according to position. offset.x = sin(UV.x); offset.y = cos(UV.y);

// We also want to multiply by the factor to fade it in. // This modifies x and y at the same time. offset *= _Factor;

tex2D(_MainTex, UV.xy + offset.xy) ```

If you try this, you'll notice that the results are a bit wacky. Remember that UV's range from 0.0 to 1.0 and the wave functions from -1.0 to 1.0. This means the waves used here will ripple by the size of the entire image and create enormous distortions. So we'll have to tune that number down a lot:

offset *= 0.02;

Play with the number for desired results. You can also use different factors for x and y respectively.

Animating the distortion

Of course, this is completely static. The waves aren't moving, because the only input variable is the position of each pixel, and that never changes. So we need to introduce something that does. The easiest thing to do is use the runtime of the game, which is constantly updating. Unity gives us the built-in variable _Time which is actually four values (read details in the manual). The second value, y, is the actual time, so we'll use that. We'll have to stick it in the wave functions so we need to update those:

offset.x = sin(UV.x + _Time.y); offset.y = cos(UV.y + _Time.y);

The time as is might move the waves too slowly (or fast!) for your tastes (it did for mine) so you may want to multiply the time by some factor for desired results. I multiplied by ten. Finally, you may find that the steps between each pixel passed into the wave functions are too small, since they'll only range from 0.0 to 1.0, so you may want to multiply those UV values by something quite large. My final code looked like this:

offset.x = sin(UV.x * 50.0 + _Time.y * 10.0); offset.y = cos(UV.y * 40.0 + _Time.y * 10.0);


Audio

I'll cover this in the next post, not to make it too lengthy! Won't post that today since I don't want to be spammy, but if you're interested, look out for that! Have fun playing and rating more amazing LD games; I know I will! <3

Glowing Meadow : Post-Mortem

1.png

And here we go again, for a new Ludum Dare, 40th of its name!

First things first, here's the link of our game Glowing Meadow.

Now let's start. For the 40th Ludum Dare, the selected theme was « The more you have, the worse it is ». A pretty interesting theme, allowing for a lot of interpretations. Louis (Programming), Arthur Dos Santos (Sound Design) and I (Game Design) teamed up again. But this time, we were joined by three graphic artists : Skreed (Pixel Artist) & Thibaut (Concept Artist), both helped by Melissandre (Support Graphic Artist). So now it’s been a few days since the end of the Ludum Dare 40, and it’s Post-mortem time!

LUDUM DARE #40 : « THE MORE YOU HAVE, THE WORSE IT IS »

For this Jam session, we did remote work, all synced on a dedicated Discord channel. We woke up early on saturday morning, and gathered on Discord at 8am (GMT+1) to briefly talk about the theme annoucement. We took a moment to think by ourselves, and then brainstormed for a good part of the first morning. We discussed a lot about the kind of mechanics that could fit the constraint. We had a few ideas about a light system that would grow and bring more ennemies, then on a fire that you would have to keep burning, but each time something was missing. All the team was liking the fire concept, but we struggled about what could motivate the player to feed the fire.

Then came the plants :) They were the perfect medium to let a fire spread. I briefly pitched the growing system, and how the player could have to take care of the plants, otherwise they would burn and spread to burn more and more plants. So the more you have, and the worse to handle it is. We had our mechanic theme-ready!

2.png

Now let’s enter into Glowing Meadow development. First of all, what is Glowing Meadow? Well, it’s the game we made, and you can learn more about the finished product and where to download it on its own page, RIGHT HERE.

WORKING A LUDUMDARE IN A « BIG » TEAM

As we were a bigger team than ever, we needed a strong organization. All the team made a wonderful work regarding this. On my side, as I was able to focus on Game Design, I made sure that every mechanic, player action and states would be documented, with their animations and sounds needs. My goal was to keep the game really simple, with a limited number of mechanics that could be easy to understand, to learn and to remember. Each interaction should also work with all objects, so the player could use of strategy and tactic to manage all the plants of the field.

Louis quickly started to work on the Engine of the Game, that was already pretty smooth after a few iterations. In a blink, thanks to his talent, we had a smooth movement of the player, and a spread system for our basic plants. Everything was up and running, and ready to be tweaked DATA-side, so I only had to adjust the speed of the movement, or the frequency of the spread. Arthur was already thinking about the music background, and a few sounds to dress the already made animation of our character watering plants. Again, I want to congratulate the team for their efficiency, that was really impressive.

5.png

BALANCING, AGAIN, AND AGAIN, AND…

So we had our prototype. We were now able to cut and water blue and green squares, yay! We continued to go on adding stuff (water charges, be able to refill, small plants, weeds, spreading, and even fire). Then Louis took a break with the gameplay to start working on our small cutscenes. Louis, Arthur and I discussed about how to create the player motivation to gather more and more plants, while working on our own topics, and we finally sorted it out. He would have to maintain a certain number of plants at the same time. There would be gaps, that will unlock power-ups to help him in this objective.

So I started to design the power-ups and the rythm of unlock, while still tweaking the spreads and reworking the interaction scheme to better fit the game constraints. In the meantime, our top notch artists were doing great, with almost all the plants animations up and running, the cutscenes designed and « pixel-arted », and the v1 background already implemented.

Things were moving on, we were at Day 2 and Louis almost had our Gameflow and Engine done. Thanks to Arthur, we also had many sounds to improve the mood and the global quality of the game. The music theme was already there, and so was the winning and loosing themes. On my side, I started to work on the Level Design of the game, be it the tutorial or the start setup. As our game is based on a spread system, it was important to fine-tune the start situation to prevent a too easy or too hard setup that would totally unbalance the whole game. As we were discussing with Louis about the tutorial, we agreed that we should avoid a too heavy Learning process, so we went for short steps with a quick text integrated to the game situation. For the power-ups, they would be explained at their unlock by a panel (designed by our artists) to introduce each effect with a nice pictured situation.

Day 3 was all about making the elements come together. I was at my dayjob work for the whole morning, and came back at noon to finish the game with the rest of the team. The power-ups were almost there, so I only had to play the game over and over again, and then tweak datas to make sure it won’t break the game balance, and then play again… Louis was working on implementing a lot of details, and the rest of the team was working on polishing (there’s an animated rabbit hidden somewhere in the game…try to find it!) and refining the mood of the game. They were also playtesting my tweaks a lot, which definitely helped to get what we consider as a good balanced game (thanks again Louis for the last minute feedbacks that certainly saved the game :D).

It was about my 5th LD, and same for Louis, but we often made hard-to-complete games. It was a strong will of all the team to get a build achievable, and even more, enjoyable. We think (and hope) that we managed to accomplish this goal, in a way!

4.JPG

SO WHAT WENT WRONG?

Since we don’t have any result yet, I can only make suppositions. On a production-side, I think that the word that could describe our week-end is « smooth », from beginning to almost end.

As always, and for everyone I think, the last hours are ALWAYS the « oh damn we forgot something » moment. We made no exception. In the last hour before release, we found a big, BIG issue. We had a low framerate on some laptops. But that wasn’t a big deal. Louis fixed it pretty easily. What was being THAT, was the real issue. The spread system was framerate-related. As we all tested the builds in a low framerate condition, the difficulty curve was balanced on the 30FPS max spawn rythm. When we went to 60, the game had become the most easy build we had played for the whole weekend. For a « the more you have, the worse it is » theme, it was absolutely wrong to end with something too easy to accomplish. So we tweaked again the difficulty curve, and spread timings, until the last minute before release. We finally got something we are proud of, but man, was that stressful!

After taking some days of rest, I think that I’m now able to tell what could have been done better on this project :

  • The game is again not playable on Web (Windows only). And it’s still a thing that Web-playable games will get more exposure as you don’t have to install them on your PC.
  • Never base your experience on a constant-framerate ideal when you work for PC builds.
  • Working to find a real USP that would help the game to stand out of the thousands of entries Aaaaaaand…that’s all for this Post-Mortem! Actually, we have feedbacks from awesome peoples on Our Ludum Dare page, so I invite you to go and read them :) Anyway, we’re always waiting for more and more feedbacks, so don’t hesitate to give the game a try, we hope you’ll like it!

3.png

Cheers :)

Wordcloud

Hi this is my word cloud:

My game: https://ldjam.com/events/ludum-dare/40/space-special

wordle 3.png

Space Dungeon / Devlog via screenshots #4

Few shots about the floor texturing process

4-small.jpg 5-small.jpg latest31.gif

I would appreciate it if you play and rate it (use Itch.io Web version to play in browser)
https://ldjam.com/events/ludum-dare/40/dungeon-space

Help Us get to 100!!!

we're so close just a few more!

Rate our game and leave ur game in the comments so we can rate yours! Rate Graphics and Audio!

https://ldjam.com/events/ludum-dare/40/virus-detected

ScreenShot5.png

Cool Hat Mr Hat wordcloud!

I liked making this game. Word cloud says its a game, so i wasnt far off.

You can try it yourself at https://ldjam.com/events/ludum-dare/40/cool-hat-mr-hat

coolhattrailer.gif

hatswordcloud.PNG

Word cloud!!

Everyone else is making them so why not us. VirusDetectedWordCloud.png

To make this I used: https://www.wordclouds.com/

All I did was copy the entirety of the comments area and paste it in... No editing or word referencing. Just the raw thing.

You can pick from dozens of shapes and colors, I chose this because it bears the closest resemblance to our game I guess.

It's time for ...

our wordcloud!!

(obviously its a game :smile: :heart: )

https://ldjam.com/events/ludum-dare/40/a-heros-burden

wordcloud.png

Wait... we're doing wordcoulds now? Alright!

Serving you the wordcloud of Bring us food JAMes!

https://ldjam.com/events/ludum-dare/40/bring-us-food-james

wordcloud_bufj.png

Thanks for everyone who took the time to play and rate my game, and special thanks to those who commented! You rock!

Some of my favorite games, part 2

Find part 1 here: https://ldjam.com/events/ludum-dare/40/crosstalk/some-of-my-favorite-games

I’ve played a lot of games over the past 12 days, and I have perhaps lost track of some really good ones that I played, but I did start keeping track after a bit, and now I want to share some of my favorites. I don’t want to share them all at once though. Maybe I will do two a day.

CalligaTree

https://ldjam.com/events/ludum-dare/40/calligratree Trees are fractal in nature and this game models that interesting phenomenon to create a meditative experience wherein you construct your own, unique Japanese Cherry tree. The premise is made more interesting by the rule that as your tree grows, so does the number of branching points, which you have a limited time to 'activate'. When you miss too many branch points, or when you accidentally cross them, you reach the failure state. The wonderful thing is that the failure state is unavoidable, yet beautiful. You will try to grow your tree in a beautiful way, in anticipation of the failure state, but you will always become overwhelmed just before you fail. And that's okay.

Aurora

https://ldjam.com/events/ludum-dare/40/aurora A musical "SHMUP" in which you can slow the enemies and their bullets by keeping your ammo reserve low. The result is an experience that constantly fluctuates between relaxing and frantic.

Did somebody say "wordclouds"?

Here's our one!

cloud.png

In colors and font of Snaketris. As you can see, people found it more snake than tetris. =D Check it out too!

Still need 3 more votes!

My tank game Fast Froniter still needs 3 more votes. Some poeple did not rate my audio, cause the sound levels were off. It's still not great, but I would like to have a rating :D

Please rate here: https://ldjam.com/events/ludum-dare/40/fast-frontier If you leave a comment on this post, I will make sure to rate your game aswell!

little screenshot.png

Try Sorted!!!

Sorted is a time management game about sorting crates! Features an online leaderboard!! Try it here: https://ldjam.com/events/ludum-dare/40/sorted Screen Shot 2017-12-03 at 7.13.59 PM.png

Thank you for playing my game

Thank you for playing my game, and thank you for all your great feedback.

Dumt.png

You can find my "fantastic" game here https://ldjam.com/events/ludum-dare/40/a-walk-to-the-finishline .

Sorry for the bad humor

try to make something

hello, i must share the art made by my friends when i asked them to draw a poster for my LD submission

the first one by discofish who is the god of dynamics

2017-12-18 21.28.25.gif

(sorry for the gif quality, i can't paste .mov here, so i paste the png once again)

KIVV.png

the second one by an anonimous hero who lives in the shadow (i will edit the post when he will have an account here) (edited 2023/01/10: unima9000)

final_poster00png.png

it’s a fantastic feeling to get something like that based on a game looks like this.

also i want to share a trivial lesson i took from this LD. if you have only a few hours on a jam weekend, try to make something anyway. it’s all about fun and about communication. look at this! people play a game that was made in 6 or 8 hours. they talk about it, someone likes it and someone even creates an art based on it. it’s a real thing.