Hey folks!
There's lots to talk about, so lets get right to it.
Theme Suggestions are open! Pick 2 instead of 3
Since this keeps coming up, earlier this year we were having a conversation about the Theme Selection process. "The Theme Sucks" is a popular meme within the community, which is why we have multiple rounds of selection. But once you drop the crude and senseless themes, the true "quality" of an individual theme becomes more gray. Like pizza toppings, we'll never have a consensus on pineapple. :pizza: :pineapple: :yum:
Aside from denying some users the right to vote and make suggestions (yikes), a less controversial suggestion was to simply lower the number of suggestions everyone can make. The proposal was to give everyone 1 suggestion, but that felt too low to me. I think 3 is a good number, but given our size, I have been concerned about the amount of work giving everyone 3 suggestions has been creating. Not everyone completes the Slaughter, but those that do are heroes of the community, and I don't want them to get sick of it. :sweat_smile:
So for Ludum Dare 51, you can only make 2 theme suggestions, and we'll see how that goes.
The Theme Slaughter, like all systems, has its flaws. It lets us broadly find preferred themes and bury inappropriate suggestions, but it leaves a bunch of cleanup work after the fact. Currently this means I need to take an hour to manually filter through the top 100 themes, and remove themes I decide are too similar ("Shadows" vs "In Shadow" vs "Shade" vs "Shadowrun"), until I get the final 48. I'll be honest, this is probably my least favorite "running Ludum Dare" task, but I also feel extremely uneasy calling our process democratic while I personally control the theme list.
I'm not kidding, this genuinely bothers me.
An alternative system I've been meaning to try is something I call "Theme Fusion". Instead of "swiping left or right" to yay/nay a theme, themes are presented in pairs. "Evolution vs Swarms", which do you like better? This format also lets you help me find suggestions that are too similar. "Flying Islands vs Floating Islands", these are really close so you flag them as "the same", but you still choose a preference like Floating. Right now when I remove similar themes post-slaughter, the highest scoring theme is added to the list. It doesn't matter if I prefer the wording of a later suggestion, highest wins. I think shorter more concise themes work best, but the "highest wins" rule means "Flying Islands over the Atlantic" might beat "Floating Islands", to get crushed in the later voting rounds. Grouping (fusing) same themes together, AND deciding a favorite among the grouped (fused), I think this should yield better result than "highest wins".
Theme Fusion isn't without its flaws. The biggest thing I worry about though is the amount of work required to "complete it". It's exponentially more than the Slaughter! I don't like wasting anyone's time, so I don't think I'd be comfortable switching to Fusion until we've reduced the amount of extra work it creates.
Today unfortunately the Theme Fusion isn't ready, and the Theme Slaughter has been stagnant. Later parts of this post should help clarify why, but in short term, reducing the number of suggestions should make completing the Theme Slaughter less work, and I think that's the least we should do.
Core Software Upgrades
Some really big fixes and changes to the website are about to drop. The first lines of the code used by ldjam.com were written nearly 8 years ago, and if I'm honest I was not an experienced web developer back then. :sweat_smile: I've been building software since the 90's, and as much as I would like to "start over" with a clean slate, that would suck and we'd be left stagnant (again) until I finished.
So I've gone back, and I've been cleaning things up. I've upgraded dependencies and removed some fat (goodbye Internet Explorer support). There's some initial TypeScript support in there, and in general debugging works a lot better. Builds are still slow and take several minutes, but groundwork for switching to a fast compiler (transpiler) is almost finished: minutes to seconds. There'll be lots more to do post merge, but if you wanted to know why fetaure X or Y hasn't been done yet, besides the lack of time the TL;DR is the code got kinda gross these past 8 years. :sweat_smile:
Anyways, I hope to get this pushed in the next couple days. There's a lot of little fixes (things I haven't mentioned like the cache bug), but the point was to make working with the code more sensible and less of a pain. As things stand, the page styles are a little broken (meh), but more importantly game browsing is broken. We probably want that to work before this goes live though. :sweat_smile:
Game Uploading and Embedding is coming soon!
I'm really excited about this.

I've been working with Akamai to support uploading and embedding your games right here on ldjam.com.
Security in the web browser changed a lot this past decade. It used to be fine to create an <iframe> and stick another website in it. That's how we supported game embedding back when web games were Flash. Today we need to be careful of side-chain attacks (Spectre), malicious JavaScript, or data leaking though something as harmless looking as an <img> tag. We also need to explicitly set HTTP headers to allow or deny features, like putting our own website inside an <iframe>. It's complicated and it kinda sucks, but that the price we pay for the breadth and flexibility of the web.
When we launched ldjam.com, we locked everything down. No more off site images, no more embedded iframes (except a short list of approved websites like YouTube, SoundCloud, and Twitch), no more HTML styling of posts. With web browsers constantly adding new features AND getting exploited, that the safer approach was to opt-in to a feature than to opt-out.
There's also the cost: storage space and bandwidth isn't free. Services offer it for free, but the costs are paid in some other way. I think I'm pretty good at keeping my server costs low, but I didn't have burden of file hosting (only images).
So when Akamai and I were brainstorming what we could do together, we agreed that making embedded web-games a part of Ludum Dare again would be the perfect project.
We've been testing this feature out for the past couple weeks. We found some problems, fixed some problems, and we're nearly ready to open this up to you. I think the UX is a bit ugly, so I'm working to finish the core upgrade mentioned above, and then give it a polish pass.
Early next week I'd like to host a short public beta test. Follow us on Twitter, ~~sign up for the newsletter~~, or check back this weekend for details.
Until then, for a sneak peek, you can check out the embedding guide page:
https://ludumdare.com/resources/guides/embedding/
The guide is brief, but it will be expanded as we go. We were quite aggressive with our security sandbox. Cookies, storage (local, session, DB), and making outgoing HTTP requests are all disabled. That may require you to tweak your library code. In our testing, Safari halted games that used storage when the sandbox blocks it, where Chrome and Firefox errored but let the game run. Our environment is cross origin isolated, so WebAssembly exported games should run at full speed with precision timers.
Oh, and you can upload your "regular" games to Ludum Dare as well--It doesn't have to be a web game.
We have no plans to stop anyone from linking off site. All existing links will continue to work, and you can add more links in the future. To me, the point of all this was to bring game embedding back to Ludum Dare, but as a side bonus we also support "regular" game uploading. If nothing else, it means we could host a backup copy for you.
In the future, I would like to support tracking download numbers, provide statistics, and do some analysis on uploads themselves. The last one is something my friend Lars and I have chatting about. Last year he did some work with SteamDB to detect what tools Steam games were built with (Unity, GameMaker, Godot, etc). We unfortunately have years of untagged games in our catalog, so I would love a way to auto-populate that data. Not to mention, once we had this data, we could see what tool trends have emerged in Ludum Dare over the years and compare them to Steam. As an example, I have anecdotal evidence from watching Ludum Dare events that Godot usage is growing fast, but since it's still early, the number of published Godot games on Steam is still low.
Lots of exciting possibilities here, not to mention it will make submitting games simpler for new users.
Spam
We're working on it!
Akamai is helping us investigate our suspicious incoming traffic. I'll save the details for another day, but a shocking bit of early data was that in "the off season", nearly 50% of all requests to ldjam.com are clients probing us for an attack. Things like requests for ldjam.com/wp-admin.php. While technically yes we did used to run WordPress, that was on ludumdare.com, never here.
Basically, if we weren't running custom software, our spam problem would be much worse. :sweat_smile:
That said, just because bots can't spam us doesn't mean people can't. I wish I could remember the name, but there's a good documentary about this modern "human assisted" spam business. The TL;DR is that humans solve captcha's, create accounts, find textboxes to dump in, and run macros that spit out bile.
What's funny is our SEO is completely broken (on the TODO list). The way the website currently works (100% JavaScript), search engines can't index us properly. We're being spammed, and the spammers get zero return from it. Someone is being paid to dump trash where no search engine will see it, and no user will ever care. :laughing:
Anyway, it's one thing to hunt down and delete spam, and another to solve it.
In the near term, I'll be adding a report button to comments and posts. That might be a week or so from now, sometime after the Core Software Upgrade goes live. As we collect data, we'll see what we learn, what patterns emerge.
Sometime after the event, I'll go back and add what folks have reported on GitHub:
https://github.com/JammerCore/JammerCore/issues/1775
SEO issues aside, now that Ludum Dare hosts games, we will potentially become an even juicier target. I've had to be extra careful with how we added uploading and embedding. I guess what I'm saying is that I do take this seriously, but it's not enough to just delete a few posts. I don't see this getting better without studying it, and some engineering.
I guess it's one of those "good" problems to have? Signs of success? :sweat_smile:
Other Interesting Threads
Before I go, there's been some good conversations going on that I want to bring your attention to.
Thanks everyone!