Ludum Dare 48 April 24–27, 2021

Bruh

fgjfghf.png

Tips for Better Theme Writing.

Hey all! :smile: I hope you are having a great day! The rest of this writeup can sound curt or blunt so I just want to preface by saying you are all wonderful and amazing people! this is just meant to educate a bit more! :smiley:

So I finished these yesterday and have been ruminating since...

Screenshot (696).png

For those of you that are new, this is par for the course. The theme that is picked is never good. I think in general that can be attributed to the fact that people don't really know what makes a good theme, so they suggest the game they want to make, or some random meme.

The theme is meant not to confine the programmer into a single path, but rather to create a starting point for the genesis of whatever game they make. :seedling:

So here's my basic rules:

  1. One word. If it's more than one word it likely breaks the rest of the criteria. instant slaughter.
  2. Not a character or class. (e.g. wizard).
  3. Not a location or mood. Since mood is a criteria for voting, the programmer should be allowed to choose.
  4. Not limiting hardware or scope. Some people cannot make 3d or online multiplayer, so it shouldn't be required.
  5. Not a mechanic. The theme is meant to shape mechanics, not be the mechanic. examples below.

One good rule of thumb is: "can I see a puzzle game, a sidescroller AND an rpg in this theme?"

In practice, this may look like this:

Instead of "only 2 colours," which confines the player's creativity and product, "colours" is more clear, succinct, and open to creative interpretation.

Instead of "tax all the wizards", "taxation" allows for infinitely more interpretations and chances for unique games. taxation on you? on stats? on winnings? on enemies? on npcs? as a story beat? much better.

instead of "you are the villain," "villainy" as a concept alone already opens the door to more interpretation, though I think it still breaks the 2nd rule, forcing the game to have a villain in the first place. themes like this should therefore be avoided altogether.

Thanks for reading! Feel free to share your thoughts! If you have any other rules that could clarify or refine this list, feel free to let me know!

Ben Walter

What Are Frogs?

I am really surprised by the amount of frogs in the theme suggestions and posts!

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

Saw this post and decided to give it a try...

Hi! I'm having a lot of fun with this Theme Slaughter Round!

I saw this post with a cool (and crazy) theme and decided to give it a try... Screenshot_174.png

So I used Python + Pygame, no game engines, no external files or assets and in the end it was 4 Lines of Code. And something important about it: The fact that I used python instead of C, C++ and others made it harder: since python don't use braces to define scopes but the code indentation, everything you put after the if, for loop and so on, as long as they're in the same line, it will technically belong to it.

Source Code

You just need to run this in any way you want to. But make sure you have pygame installed. py import pygame, random, time; pygame.init(); d,c = pygame.display.set_mode([840, 480]),pygame.time.Clock();pygame.display.set_caption("4 LOC Game!");score,p,a,f=0,pygame.rect.Rect(10,200,40,40), [], pygame.font.SysFont("Arial", 40);f.set_bold(True) while [obj for obj in pygame.event.get() if obj.type==pygame.QUIT]==[] and [o for o in a if p.colliderect(o)]==[]: score+=1;p.y=min(440,max(0, p.y));c.tick(60);random.seed(time.time());k=pygame.key.get_pressed();p.y+=(k[pygame.K_s]-k[pygame.K_w])*5; a=random.choice([a]*20+[a+[pygame.rect.Rect(840, random.randint(0, 440), 40, 40)]]) random.seed(0);a=[o.move(-2*(random.random()+1),0) for o in a]; d.fill([25]*3);[pygame.draw.rect(d, [200]*3, o) for o in a+[p]];d.blit(f.render("Score: "+str(score), True, [255]*3),[10,10]);pygame.display.update()

Showcase

I made a small gif showcasing the game: the 5 loc challenge showcase 2.gif

Want to know how I did it?

Gonna make a video explaining the challenges I face (believe it or not I had a bunch of them) and post on my youtube channel soon:

Subscribe to my YouTube Channel to Watch!

Getting Close To LD48!

Less than 10 days until the start of Ludum Dare 48! Personally I can't wait to see what the rounds of Theme Voting have in store for us. Since this was my first time participating in the Theme Slaughter, I'm interested to see how many of the themes I'm rooting for make it to the Theme Voting.

And on a side note, the engine I use officially implemented 3D object creation today, a mere 10 days before Ludum Dare 48 begins, so I'm interested to see if I can successfully find a way to make a good 3D game before LD48, and use what I learned from the experience to try making my first 3D game be for the symbolic 48th Ludum Dare. I guess we'll see how that goes, and hope I don't make a terrible 3D game for LD48. 😬

Use our Code #5: A Little Typing can Save a Lot of Typing

Our team is developing a new WebGL enigne for this jam. In the process, I kept running in to cases where I wanted to check types, to provide helpful error messages if a complex data structure was mis-assembled by a caller. The ultimate solution to this problem is to use something like TypeScript, but since we wanted to use pure JS for familiarity's sake, it seemed like a good idea to write a typechecking helper. Hopefully, this can save you a little time in your own project.

The following routine takes object specifications like this: javascript const SHAPE = { name: "string", shader: "?object", uniforms: "?object", draw: "function", }

The check can be performed with a simple call, which returns a boolean: javascript const is_good = shapeCheck( x, // the untrusted object SHAPE, // the type schema );

It supports nullability with the ? prefix, but it does not support multi-level deep introspection. (That would be a natural addition, but it wasn't needed at the time.) Here's the snippet:

javascript function shapeCheck(x,shape) { let good = true; for (const name in shape) { if (typeof x[name] === "undefined") { good = false; console.error(x,"missing",name); continue; } if (shape[name].startsWith("?")) { if (x[name] === null || typeof x[name] === shape[name].slice(1)) continue; } else { if (typeof x[name] === shape[name]) continue; } console.error(x,`has wrong type on ${name}: should be`,shape[name]); good = false; } return good; }

It's designed to exit late, so that as many errors are found as possible. Happy coding!

Previous Use our Code posts: 1. Better errors for shader compilation 2. WebGL Type Info 3. Matrix pretty printing 4. Math Library API Design

Let's go

Can't wait for the event to start. Good luck in advance, everyone!

I'm (probably) in! / Táim réidh!

No idea what engine I plan to use. Good chance it'll be Unity, or maybe something I can quickly throw on top of Python (tkinter or the sort). Last LD I did not manage to release the game in Irish, so I'm going to double down on my efforts for that this round :)

Frogs are the new Lavalamps

Remember #lavalampLD? I think the frogs are coming to take it's place...and I'm on their side. Froggogeddon has begun!

Im new

Can someone please explain what the theme is im new and I don't understand.

Stop trumping

I found 2 themes that say "biden cheated" and "trump is my president" and they are obviously from the same person. Plz stop.

Theorem for free

Hello everyone. Waiting the next LudumDare which will start in a few days, I am happy to share with you (and for free) my project Theorem - an unusual puzzle game which I did a few years ago. Theorem is available on Steam or Itch.io for one buck, but it is free until we start the 48th LudumDare (only on Itch.io). Theorem has been installed more than 10k times and all around the world. Also take a look at my next project - Artefaktum - another puzzle game with cubes (demo available). Have fun. Leave a comment on Itch.io - I really appreciate. I wish you the best. Bye my dear fellows ++

https://geckoo1337.itch.io/theorem

rsbv3Q.png

A better way to vote!

So you think voting on all those themes is too much work? Worry not! I made a small tool to automate some of your pain!

Introducing pyJAMa!

It's a small python script that can not only help you in looking more hackerman than ever while voting, it can also help you vote faster! You can now search all themes for keywords and up/downvote a chosen subset of them automatically!

Here it is in action:

bulk_vote.gif

(Ignore the name in the gif, I chose to change it after recording it because I am not affiliated with ldjam.)

And you can download it RIGHT NOW! Just head over to the project's Github Page and head over to the releases! Make sure to read the readme if you download.

Important note!

The program needs your LDJAM browser cookies to work. This is needed to communicate with the LDJAM API to send votes and to get the themes you still need to vote on. The code is completely open source if you have concerns about safety.

First Ludume Dare

Ok, so this is my fisrt game jam ever, and really my first time finishing a game and showing to the world. But as they say, "The best way to learn is under life threating pressure" TheBestWayToLearnIsUnderLifeThreatningPreaser.jpg