“Starship”, the new Ludum Dare, in great detail

Posted by (twitter: @mikekasprzak)
July 20th, 2015 12:35 pm

IMPORTANT: Most of the things mentioned in the post are unfinished, some aren’t started. Treat this post a guide for what’s going on.

* * *

Let’s talk about Starship.

Starship is my internal codename for the New Ludum Dare website project. It’s a silly nickname that I got used to. Loosely, it’s my way of saying Ludum Dare is a big complicated internet space ship that transforms, sends out probes, and even splits off in to smaller ships. I guess it’s actually metaphorically a lot more like Voltron, but I was watching Star Trek TNG at the time. :)

Starship is written in PHP, (currently) runs on Apache, and uses MySQL. And yes, we’re on GitHub.

Migrating to a Starship

Before I go in to details about the new website, I need to talk about the old website, and what we’re going to do with it.

Over the past 7 years of Ludum Dare, we’ve accumulated over 21 GB of image data, and a nearly 4 GB database. There are over 50,000 users, nearly 75,000 posts, nearly 60,000 comments, and over 27,000 games and things that have been submitted to Ludum Dare events. And with Ludum Dare 33 on the horizon, those numbers are going to get even bigger.

That’s a lot of data.

Today, Ludum Dare runs on a dedicated server somewhere near Washington, DC. This machine is entirely ours, has some crazy Intel Xeon CPU and 12 GB of RAM. We’re also using CloudFlare as a reverse proxy and CDN. That means no matter where you are in the world, those 21 GB of images should load nice and quick for you (here’s a map). The whole setup costs a bit over $200 a month to run.

That’s how we do it today.

For the new website, we are going to start with a clean slate, *BUT* we are keeping the old data.

First off, when we finally kick-off the new website, everybody is creating new accounts.

After you create your account, we’re going to let you migrate your old data. I want this to be as simple as possible, automated even. I’ll autodetect if you have old data by comparing your current and original e-mail address. There will also be a way to claim your data if your e-mail address has changed (process TBD).

There will be a script in place, so old URLs like these:

http://ludumdare.com/compo/ludum-dare-32/?action=preview&uid=11474

Will redirect to the new URLs like these (NOTE: links are examples. They are not live):

https://ludumdare.com/event/ld/32/bed-hogg
https://ludumdare.com/user/01010111/bed-hogg

For accounts that haven’t been migrated, they’ll instead be redirected to a read-only version of the original pages on the Legacy Server.

http://legacy.ludumdare.com/compo/ludum-dare-32/?action=preview&uid=11474

The Legacy Server will be a separate mini-server (mini compared to what Ludum Dare has become) that runs a read-only version of the original website. Posting and Commenting will be disabled on the Legacy Server, and along the top of the page will be notices telling people that we’ve moved.

Traffic should be minimal, so like the old days, I expect we’ll be able to run it for around $10 a month. Pretty cheap.

That said, the Legacy Server is really only needed for the inactive users. Active users will have all their games and posts available on their new accounts, on the new website.

One caveat: Comments will not be migrated over. Instead, we’ll attach a special link to the original post on the legacy website, where you can read the original comments.

So again, we’ll be starting with a clean slate, but everything from the past will be available.

* * *

FYI: For anyone that’s curious about the legacy Ludum Dare website, you can now find the code on GitHub:

https://github.com/povrazor/ludumdare-2008

Again, this is the legacy, not the new website. 7 glorious years of duct-taping features to WordPress. The workflow is very unsafe, and not 3rd party friendly. We’ve been committing and checking-out changes directly on the live website the entire time. Any time we made a change, we risked bringing down the website with a PHP error. Uncool. We used to host it on Google Code using SVN, but it’s now on GitHub. As of Thursday, I’ve committed the first real update since migrating the code GitHub. The workflow is just as unsafe, but a little more nerdy now as I commit changes using GIT, and check-out on the server using SVN (thanks to the awesome GIT->SVN feature built in to GitHub).

All aboard the Starship

Like I mentioned, development of the new website takes place on GitHub. About a month ago I started publishing my changes publicly. Eventually, you’ll be able to get the website code from here:

http://github.com/ludumdare/ludumdare (soon)

At the moment, we’re very much pre-alpha on the new website, so I don’t want to publish to that account yet. To me, github.com/ludumdare is for the live website, and at the moment the website isn’t live.

I’m still doing a lot of engineering, so instead, I’ve been keeping code in my personal GitHub account:

http://github.com/povrazor/ludumdare

Once we are live, the Ludum Dare GitHub account will become active.

DairyBox: The Ludum Dare toolchain (and LD pun)

dairyboxlogoFor those looking to help out, you’ll need to download and install the Ludum Dare Toolchain, named DairyBox.

http://github.com/ludumdare/dairybox (soon)

But again, since it’s pre-alpha, the download is on my personal GitHub account:

http://github.com/povrazor/dairybox

DairyBox is a Vagrant box based on Scotch/Box. It’s a VM that lets you run your own mini Ludum Dare server locally. This is a HUGE step up from the old development workflow. We can actually test now without bringing the server down! πŸ˜€

To use it, download and install DairyBox using GIT, and follow the instructions for cloning the source code (NOTE: It’s not a straight-up clone, it requires some git init trickery).

I want to help! What should I do?

At the moment, a lot of things are broken, unfinished, undocumented, and a little weird, but it is open now.

I’m not really expecting anyone to start sending me pull requests yet, but feel free to surprise me. As I see it, I still have a lot of core things to finish (and explain). There’s a method to the madness, and hopefully the rest of this post will give you broad idea of what’s going on.

There’s a very early effort in to auto-documenting the code. You’ll find a few Doxygen, JSdoc, and APIdoc comment blocks in various parts of the source code, but not enough since a number of things are still in flux. Scripts for documentation generation are in /scripts/docs/, and will eventually be hosted on http://dev.ludumdare.com.

Bugs reports (though admittedly it’s a bit early for testing), for now post them to my ludumdare issues page.

Show me your ship!

Alright! If you want a look, here’s a sneak peek.

IMPORTANT: The website is in EARLY DEVELOPMENT. Many things don’t work, and many more don’t exist yet. It is not pretty to look at. It’s about function, not style.

You have been warned

https://wip.ludumdare.com (/www/public/)

This is a live snapshot of what’s currently in my GitHub repo. At times it may be out-of-date, it may be broken, but it’s real.

And just to mention it, you’ll note that URL uses HTTPS. There’s still work to be done on this front, but moving forward, we’ll be doing the security thing right.

Is that it?

Of course not. :)

What you don’t see is that Ludum Dare is now broken up in to several smaller modules. I’ll talk about some of the modules in detail in later sections.

But first, one of the main modules, the Static Website:

LD Module: The Static Website

It’s not really something you can look at, but the WIP static website is over here:

https://static-wip.ludumdare.com (/www/public-static/ and the symlink /www/static/)

The URL to the static website will change, but basically, the static website is part optimization, and part future proofing when we need to scale-up by cutting up the server.

The static website is pretty straightforward. All the images you upload to Ludum Dare will be stored on the static website. So, those 21 Gigabytes of images, whatever the new size is, that’ll be where they live. Also, elements of Ludum Dare we consider static and unchanging (the JavaScript code, CSS, and so on) will also live there. There will be some dynamic elements to the static website, but for the sake of caching, and as far as our CDN is concerned, everything there is static.

Today, the main dynamic element of the static website is the Image Resizer.

The image resizer is the thing that resizes and crops the images and avatars you upload. We did various things in the past, but the new resizer is designed to be less wasteful and take advantage of the CDN. When I talk about the 21 Gigabytes we currently use, a few of those GB are extra copies of images resized to fit some dimension. In the grand scheme of things, omitting those extra files doesn’t save much, but for a few minutes the resized images will live in RAM, long enough for the CDN nodes to grab a copy and cache them around the world. Not to mention, storing them in RAM saves us a disk access, so we can feed all those requests faster.

You can see a demo of the image resizer on wip.ludumdare.com. That unusually large cropped chicken image? Yeah, that’s the resizer’s handywork.

We are still not going to host downloads of your games, but we will be looking in to making things easier when it comes to hosting your downloads and source code.

What’s new with Editing?

Lots! Here are some highlights:

  • All text is now written in Markdown instead of HTML (GitHub compatible)
  • Posts, Pages, Games, Comments, everything you’d want to write a paragraph of text for will share the same editing interface (because internally, they’re are the same).
  • Emoji and Short Codes. All the :dolphin:'s and :blowfish: you could ever want, just a few keystrokes away (see emoji.codes)
  • Source code has syntax highlighting. We’re currently using a generic highlighter, but we’ll also support C/C++/C#/Java, JavaScript/ActionScript, and Python. To our Haxe bros, we’re using PrismJS, which doesn’t appear to have a Haxe support. I’ll need your help to create a Haxe definition, probably based on the ActionScript one.
  • AJAX. Editing is now inline. Many things should work a lot faster (since there’s less data to send).
  • PATCHING: This is a big one. Every piece of content on the website can be edited by anyone. Patches are then sent to the original author, or team responsible. The changes can then be approved with a click by author, or a member of the Editor Team.

You can try a very rough version of the Patching, Inline Editing, and Markdown with Emoji and Syntax Hightlighting workflow on the WIP website (NOTE: Changes are not saved, and there is no notice when you’ve viewing a patched version of a post).

https://wip.ludumdare.com

More things that are coming:

  • @mention people by user name to send them a notice, and link to their user page.
  • @mention groups such as the Help Team (@help, users that like to help people and answer questions), Editor Team (@editor, users part of our patch approval and post moderation team), the Press Team (@press, anyone crazy enough to listen to requests to check out a game), and so on.
  • Game Control Short Codes. This is a project I’m going to need an artist to help with. Like the Emoji, I’d like us to have a library of game controls. Things like :key_wasd: :key_arrows: :key_space: and many more for describing your game control using the keyboard. Also, mice, gamepads, and more exotic controllers like microphones, MIDI interfaces, gestures cameras, and so on.
  • Short Code auto-completion. Just start typing an emoji code or a game control code, and get a pop-up of possible choices.
  • Smart Embedding of External things. For example, YouTube and SoundCloud links auto-embed, perhaps Twitch and other live streaming services too, Tweets, and really, anything that makes sense.
  • Smart Embedding of Internal things. Paste a link to a Game or Tool, and we auto-insert a little mini-widget. It’ll probably make sense to do it for other internal types like Events, Users, maybe Tags and Platforms as well. In some cases there will be variant URLs (i.e. /user/myname/game) that shows a personal game list instead of your personal info. If it makes sense, and there’s something worth showing (beyond a basic hyperlink), we’ll probably do it.

What’s new with submitting games and things?

Oh boy, here we go:

  • Though not actually required, you will be encouraged to sign up for an event before it starts.
  • Tags. Is your game a 5-Player Local-Multiplayer One-Button Platformer with RPG-Elements and a Colorblind-Mode? We got that.
  • Tools. Made in Unity, RPG Maker, and Pygame, using Tiled, Photoshop and GoatTracker
  • Platforms. Okay, we had platforms before, but now we can be a little more specific. Also…
  • Find games by Tags, Tools used, and Platforms: Yes finally, I’ll be able to tell you exactly how many Unity games there are. And not only games in an event, *total*, for all events! More usefully, as we start collecting the data, we’ll be able to start tracking trends and the popularity of tools within the community.
  • Submit Post-Compo (Post-Jam) Games: Did you remake/redo your game after the event, and publish it somewhere? You can add it!
  • Submit “Late” Games: Did you not finish on time? Did you make a game inspired by a Ludum Dare theme from 5 years ago? You can add it!
  • Add Games from Other Game Jams: Do you 1GAM? Do you Global Game Jam? Great! You can add those too!
  • Add MORE games: You’ve added all your Jam games now, what else have you made?
  • New Submission Types. For future Ludum Dare stuff, we’ve added support for several non-game submission types. Again, this is support for them! This doesn’t mean Ludum Dare is accepting these sort of submissions (not yet anyway).
  • New Submission Type: Demos and Intros. Do you rock the demoscene? Great, we support those too! ALSO, alongside some of the bigger game jams, we’re adding a library of popular and historic Demoscene events. Assembly, Revision (Breakpoint, Mekka & Symposium), etc. You tell us what we need!
  • New Submission Type: Media. Do you make videos about Ludum Dare games? We want to catalogue them!
  • New Submission Type: Crafts. A catch-all for everything else. Did you bake a cake inspired by the theme, or a little comic book?

Much of this is the ground work for future features.

  • Where it makes sense, I’d like to make it easy to import games from some of the bigger Game Jam sites.
  • Smart Embedded Audio and Video Media Submissions: Support for SoundCloud, YouTube, and whatever other media services make sense.
  • Picture and Paged Craft Submissions: The idea behind Craft Submissions is they’re things that may not necessarily have a download (but one can be provided). These things will have to be shown off with Pictures and Photos. Just in case paged comics become a thing, we can look in to adding arrow keys or touch gestures to flip pages.
  • This isn’t a feature per se, but I would like to work with the various online game hosts like Newgrounds, Kongregate, GameJolt and Itch to see if we can find a way for us to directly embed games hosted on these services. I’m not that far yet (gotta finish the site first), but I want to start talking with folks about this. :)
  • Similarly, we might be able to streamline uploading directly to game hosts if we can rig up some magic :)
  • I don’t know what to do with it, but there’s always the possibility of a deeper user integration with GitHub. I’m not sure what we’d do with it (generate a wacky graph of how active you were over the weekend?), but they have an API. Feel free to suggest things.
  • Custom Events: Run your own Jam, Demoparty, Bake-off, whatever!

We don’t have an ETA on Custom events, but it’s on the roadmap. It’s probably one of the last things on this list, since there are perfectly good other services for hosting your Game Jams today.

What about an API?

Oh yes, there will be an API.

On the topic of adding other Jam games, I’ve published a specification for an API. I’m calling it the EasyJam Spec.

https://github.com/ludumdare/ludumdare/wiki/EasyJam-Export-API-Spec

Effectively it’s a less complicated OAuth (which you could just cheat at, and use usernames for Tokens). I’ve tried to be inclusive of how some of the other Jam websites work, but feel free to tell me if I’ve neglected anything.

Initially, EasyJam is about synchronizing game data between Jam sites. It’s opt-in, and designed to be used securely. You’re not required to use it securely, and details on how do so are mentioned.

Ludum Dare will have a secure implementation of EasyJam, and I’m hoping other sites decide to join us.

What about Teams?

Oh yes, there will be team support.

One of the reasons why “signing up” is now a thing is because that’s how you form teams.

There are actually 2 types of teams:

  • Teams
  • Groups

By default, Teams are one-shot, for a single event only. This is because the people on a team will sometimes change even if the team name doesn’t. We’ll look in to making it easy to clone a previously used team when you participate in the latest events.

Teams have a Captain (the team author), and it’s their responsibility to manage the team, add members, and handle the submission. You’ll also be able to add other Captains to your team.

As a member of an team, your posts will be marked in some way to showcase this affiliation (How we’ll do it is TBD). And when you view the team page, you’ll see a list of posts from all members of the team. Game pages will list all members of the team that created it.

Aside from Teams, there are also Groups.

Groups are stricter in how they work. Initially, there will only be a few Groups, mainly internal ones used to manage permissions, and a few support groups (@help, @editor, @press).

Eventually there will be a process for vetting and approving Groups, but understand this:

Groups WILL NOT be able to submit entries to Ludum Dare events.

Groups are a bit like Subscriptions. As a member of a group, you get notifications to that group.

Groups can be ether public (anyone can join), or private (members must be added manually).

We may eventually open up support communities (Groups) for popular tools. @unity-help, @blender-help, @gimp-help, @photoshop-help, etc. The popularity of Tool Pages will likely play some role in vetting support communities. Like @help is for general Ludum Dare support, help communities will be open for anyone to join, to assist other users with the issues with their respected tool.

And where it makes sense and is useful, we’ll look in to adding other groups. In some cases, it’ll make sense to give ownership of content to a group (for example, if we have an @unity group of Unity Employees, it makes sense that they can edit their own Tool page).

But again, I’d like to keep the number of groups low initially. I want us to feel-out where they are useful.

What about Notifications?

Okay yes, up until now we’ve more or less assumed we support Notifications. We do. It’s the glue that binds together a number of features.

Initially, notifications will be limited to comments (finally, letting you know when someone comments on your game), and the usage of @messages to People and Groups.

Joining a Group is a bit like subscribing to notifications. If you’re a Captain, you’ll be able to control pages associated with your team. If you’re a member, you’re just there to listen.

Eventually we will add private messages, but that’s a low priority. There are plenty of ways to contact people privately outside Ludum Dare, so I’m sure you’ll figure something out. :)

What’s new with the post feed/timeline?

So the feed needs work. Anyone that’s tried to watch the stream during events knows how chaotic it is. Practically every minute there’s a new page of posts, and some people don’t post since they know it wont stick.

Plus, there’s a good reason to consider adding other content besides Posts to the timeline. But before we add more content to the feed, we need to fix it.

So, soon we’ll be:

  • Splitting the Post Feed

Every user will be assigned to Sub-Feed of the main feed.

I’m calling these sub-feeds Leagues. Admittedly, that’s an odd name choice, but in the future I’d like us to have some fun with the split. My thought is that eventually, we may treat the splits like a bit of a sporting team, country (but not actually a country), or a “House” in Harry Potter. We want a diverse group of people in each group, because that’s interesting. We want interesting.

As it is today, things move too fast. You can’t have a discussion during Ludum Dare, because the post asking the question is gone right away. But if we slow things down a bit (by having less content), you’ll be able to get an answer.

So now that we’ve split the feed, what about cool stuff, or people I like?

  • Post Love is Back! Now, Post Love will be the way good posts cross the League barrier. When enough people in a League give it +1’s, it’ll show up for all leagues. That way, you don’t miss popular posts from outside your League.
  • Follow Users. You’ll be able to follow your favourite users in the Ludum Dare community, so no matter what League you’re in, you’ll see their posts.
  • Published Games in the feed. As soon as you click that Publish button on your game, like a post, there’ll be a brief notice in your Leagues timeline. The name of your game, and a banner grahic or trimmed screenshot. They wont be too large, a bit bigger than a tweet. There is a very brief sample of this behaviour on wip.ludumdare.com. I haven’t done any styling to them yet, just shown what it would be like.

Things we’ll be looking in to:

  • League Names. We need to figure out the granularity needed for the public timeline first. Once we know what a comfortable number of users is, we’ll look in to naming the sub-feeds. Then you can say things like “I’m part of Kitten League” or “Zombie League”, fun things like that. It’ll have no bearing on results (we shut-down the leagues once the event ends), but during the Pre-LD hype, I’d love to see playful rivalries between the Leagues. πŸ˜‰
  • Multiple user signups as a single timeline post. Not necessarily a replacement for “I’m In” posts (which aren’t really necessary, but add character to the pre-LD hype). Rather than adding a bunch of individual “who is in?” blips to the timeline, we can group them together in to little blobs. The point of these is that you might see people that you want to follow.
  • AJAXy/WebSockety Twitter-like auto-updates. Rather than reload the page constantly, we’ll look in to notifying you when there are new posts. It probably wont be as aggressive as Twitter (every 10 seconds), but we’ll figure out what works.
  • AJAXy/WebSockety Theme Announcement. Same as above, we’ll look in to a smart way of announcing the theme on the website that doesn’t bring the server down. :)
  • External Posting. I.e. post to your account from Twitter, Facebook, Tumblr, Instagram, or your Blog (RSS). Not everybody likes to log their progress on the Ludum Dare website.

What’s new with user pages?

  • As mentioned above, a chronological list of MORE than just your Ludum Dare games. Games from Other Jams, Demos, Media, Crafts (as soon as we add support for adding them)
  • Any Events you’ve run (MiniLD’s, Custom, etc)
  • Published Games intermixed in your summary timeline, and post timelines.
  • Some new types of Navigation. View your Posts, your Favourites, your Games, who you Follow, etc.
  • New Module: Jammer

I’ll talk about Jammer in a moment.

Here are a couple test user pages on the WIP. Again, try not to pay much attention to what they say or how they look, just that they exist.

http://wip.ludumdare.com/user/pov/
http://wip.ludumdare.com/user/testuser/

Things that we’ll be looking into over time.

  • Featuring of your favourite games (they appear first)
  • Ludum Dare Submission Stats. Graph showing how your submissions have done over all the events you’ve participated in
  • Other Graphs. As we figure out other sensible data people will want to see, we can add more personalized graphs
  • The Trophy Rack. This is going to be a bigger project, totally silly, but I’m all about fun. I’m definitely going to need an artist involved. I’d like there to be a real digital trophy graphic for each of the Ludum Dare categories. If we’re feeling really silly, we might actually build an HTML5 Canvas app with 2D physics that lets you arrange your trophies, and save the layout. And if we’re feeling reeeeeealy silly, we can add breakpoints to the Trophy geometry, so you can smash your trophies in a fit of rage (and repair them with a click, though it would be funny if you couldn’t repair them).
  • User Trophies. This will probably come much later. Rather than the 64×64 images we used to use for Trophies, I think I’d rather we have a library of miscellaneous trophies you can pick from, and a pick a color. That’s my thought at the moment, but if we come up with a nice way to let you generate them, then maybe. Also, User Trophies will be assigned to a specific thing (a game usually), instead of a user like we did in the past. User specific trophies will still be supported though.
  • The Cardboard Box. Completing the Trophy Rack metaphor, a place for your “Coolest Haircut” trophy. Basically, the things you don’t want to show-off on your Trophy Rack. Nobody ever throws away their trophies, they just live in a box. πŸ˜‰
  • Trophies on Featured Games. As we figure out the layout, we’ll find a place to put those important trophies next to the game banner. We might only be able to fit a couple in this view, so you pick which ones matter most to you.

Jammer, we should talk about Jammer.

LD Module: Jammer

jAMMErLogoJammer is new.

Jammer is an extension of your Ludum Dare user page.

You’ve used Ludum Dare before. We put weird stuff in the sidebar, big noisy banners and bars to get your attention, a movie player, potatoes, yadda yadda. It can be nuts, but that’s what Ludum Dare is. This frantic sort of crazy event.

Jammer strips that away. It’s all about you. Just you and your games.

The website (NOTE: link is not active yet):

jammer.bio/user-name

Where ‘user-name’ is your ludumdare.com user name. Jammer is your user page, without the noise.

Sure, Jammer isn’t for everyone. If you run your own portfolio website, you probably don’t need. But if you’re an active Ludum Dare user and game jammmer, we give you a nice easy to remember URL for you and your stuff. No need to explain to people what a Ludum is, nor debate Dare’s correct pronunciation. And heck, it’s a simple enough URL to tell someone aloud, with your actual human voice. πŸ˜‰

That’s Jammer in a nutshell.

As time goes on, we’ll give you more and more flexibility for customizing your page. Here are a couple WIP links. Please excuse the lack of formatting and style. When it’s done it wont say silly things like “users home page”. It will be styled in a nice way with banners of your games (not text links). At the moment it’s also a bit of an ugly testbed for the Markdown decoder, so try not to criticize what you’re seeing too much, just that it’s there and using the same data as user pages. πŸ˜‰

wip.jammer.bio/testuser
wip.jammer.bio/pov/bearly-seasoned

You’ll note on my page (/pov), I’ve customized the colors, and I added my Real Name. This is done through some Jammer specific metadata we assign, just to show that customization support is coming.

LD Module: ldj.am

This is a minor module I thought I’d mention. It’s doesn’t really have anything to do with Jammer, but it’s loosely related, in that it also deals with URLs.

ldj.am (LDJAM) will be a URL shortener for the main website.

URLs will look something like this (NOTE: link is not live):

ldj.am/4cDfm (/www/public-ldj.am/)

This is in contrast the clean URLs of Jammer, these are designed to be small.

Everything on the New Ludum Dare website has a Unique Id. Posts, Games, even Users and Events. So that crazy string (4cDfm) is a packed version of the internal “Node Id”. For the sake of example, lets say it’s 332,511.

The encoder is something that needs to be tuned. It’ll be close to a 48 bits per character. It’s a combination of the numbers 0-9, uppercase and lowercase letters. If you were to total that, you’d get 62 characters, a mere 2 short of 64 (or base64 encoding). The problem with base64 is there’s a risk of generating profanity and offensive things. So to avoid ldj.am/shitface, some reoccurring characters in English profanity are removed from both upper and lower case. And for legibility, a few very similar characters can be removed (such as S instead of 5, l instead of 1).

To decode, we first decode the packed value. We lookup the Node Id in the database, then we have to recursively look-up the slug-parts of the URL by walking the tree backwards until we hit the root node. All the parts together gives us the true Ludum Dare URL.

Of course, we can do some smart, optimal things when it comes to the reverse lookup. We can cache the slugs of the Hierarchy Nodes by Id in RAM. Even with all the non-Ludum Dare events, there shouldn’t be more than a few hundred of them. That said, this is probably one of the main bottlenecks for Custom Events, ’cause as soon as we open this up, the cache size is no longer in our control (unless we explicitly ignore the custom tree, and just do an extra lookup).

Anyway, once we know our true URL, we emit a redirect (302) to that.

So the ldj.am URL shortener will not be general purpose. It’s specifically for shortening ludumdare.com URLs.

And like everything else, the WIP version is over here:

wip.ldj.am

So when it comes to User pages, you’ll be offered both an ugly URL (ldj.am/b382u) or a clean URL (jammer.bio/johnjoe25). The ldj.am URL will go directly to your Ludum Dare user page, and Jammer URL directly to the clean less-noisy Jammer version of your page.

Holy Ship!

That’s a lot of stuff. There’s more, but some of these things just aren’t as cool.

  • Security. Probably the broadest and most complicated one-word subject there is.
  • Logging in and out. We gotta be able to do that.
  • Account creation and activation. That whole e-mail exchange thing.
  • Password Reset. Yep.
  • HTML to Markdown filter. We’ll best-guess the intentions of HTML tags in imported posts.
  • Reserved Names List. We don’t want people camping names, or doing things that will cause confusion. So no, you wont be able to call yourself Microsoft. But if a few Microsoft employees join the community, and it makes sense that they have a group name, they can contact me and we can set them up.
  • Things I can’t remember.

This is Starship in a nutshell.

What about Event Features?

You’ll note that I’ve only covered User specific features so far. I figure this post is long enough, and at the moment my focus is on User features. Most people care about how Ludum Dare changes for them, not how it changes for me.

As things get further along, I’ll write another post detailing more of the internals of how events run, the job queue, event stage automation, and so on.

That’s all for now. Congratulations, you made it to the bottom.


63 Responses to ““Starship”, the new Ludum Dare, in great detail”

  1. OadT says:

    Thanks for your effort POV!

    I am following your ludumdare repository and see all your commits and work πŸ˜€ Some ideas seems a bit strange at first glance, but makes sense (and sounds awesome) after a short while of thinking. Thanks for showing and explaining your plans.
    As soon as I can I will try to read through the source code and try to help out.

  2. WOW. So much awesome stuff here, I just… WOW.

    I’m especially psyched for league stuff – reminds me of house tournaments from when I was in school (dunno if they are common outside of the UK, but just think Hogwarts houses without the magic). Will the leagues be assigned randomly each LD, or be fixed based on account registration? Either way it sounds like a fun way to add some light-hearted rivalry to the proceedings.

    Also jammer sounds really interesting, I’m psyched for new user pages on the LD site too – my current one is becoming unwieldy πŸ˜›

    I’m actually psyched for most all of this, I had no idea you were getting so much done!

    • PoV says:

      I know some people will want to pick what League they are part of (especially if there’s a Kitten League), so for a time we’ll allow you to pick which league you want (say, starting 5 weeks before the event). But since we need to evenly populate the Leagues, there will be a cut-off date, say 2 weeks before. At that point we either randomly assign you a league, or let you pick from 1 of 2 (to give *some* choice, in case you really don’t like Potatoes).

      That said, I think we need some numbers first to figure out how many leagues there should be. So initially they will be assigned to you, and to avoid “I hate potatoes” problem, we just wont name them yet.

      • PoV says:

        It will be fuzzy yes, and the specifics are of course still up in the air. The point of leagues is to have a comfortable number of posts in the stream at any time. The simple metric is to have an approximate maximum number of users per League, but we probably want to be a bit clever about it. We may even eventually use historic data to figure out how noisy some users are (but we wont tell them, heh). Plus as the event grows, we are going to have to increase the number of Leagues, and that will happen as people are signing up.

        Again, I want to run leagues initially almost in secret so we can figure out what a comfortable size is. This is something we really can’t predict ahead of time. It has to be tested.

        What might make sense is initially giving each League a scalar, a number of users to shoot for relative to the other Leagues. That way we can, in real time, see what it feels like with Leagues of different sizes.

        Again, this is something that needs testing.

        • sorceress says:

          The point of leagues is to have a comfortable number of posts in the stream at any time.

          Oh right… but doesn’t this happen anyway?

          When I visit the blog during the compo, there have usually been 10 pages of stuff posted since last time I visited. I generally don’t look at them all. I look at the front page, often the second page, and sometimes the third. The deeper the rarer :)

          What leagues would do is almost the same as this self imposed limit of how far back to read. Reading 2/10 pages, I see only 20% of posts. If the community is split between 5 leagues, then I will get to see all posts in my league, but it will still be only 20% of total posts. This filtering in some ways would be worse, because I wouldn’t get the league-equivalent option of looking at that third page, on those occasions that I feel so inclined.

          • PoV says:

            The plan is to add more data to the feed. Not everybody posts progress to the LD website. Some post to Twitter, Facebook, Instagram, Tumblr or even their blog. Plus there’s other useful information that could be part of the timeline, such as when games are submitted, or who’s participating.

            • sorceress says:

              Personally, i’d prefer this useful information to be on a separate feed (eg, a news feed in the side bar).

              I’ve been a member of a few vBulletin forums that had their own bots inserting “helpful information” posts randomly into the feed. I can tell you that they were annoying πŸ˜›

              The leagues idea I do like though, but only for self expression purposes (“I’m in the kitten league, and kittens are the bestest!!!”). I don’t like the idea of using them to filter the blog.

            • PoV says:

              We wont be taking any tweet with an #LDJAM hashtag. You’ll have to specifically add Twitter as a source of your progress updates.

              And if there are any abusive users, we’ll make them go away. πŸ˜‰

            • sorceress says:

              Another point I’d like to make, is the problems of what I call “branching”.

              Look at a typical vBulletin forum. On the front page we’ll see a dozen subfora like “Chat”, “Misc”, “Technical Questions”, etc. Each of these may have their own subfora. This is branching. It arranges the posts into a maze. There are parts to it we feel we belong to, and parts where we feel we don’t belong.

              In contrast, the LD blog is linear. We can see everything just be scrolling down (and clicking next). There are no branches to the blog which we have to deviate into to see them.

              To me, this is an important feature of the LD blog. “Everything is directly visible to everyone” makes it feel like we’re all sat around this big table, and when people make a post, they are throwing their stuff into the middle for everyone to see. I believe this suits our personalities as creative types.

              So I would be in favour of keeping the blog as linear as it currently is. League-filtering is a form of branching. Collapsable posts would be too.

              House robots posting “useful information” is different though. That isn’t user created, and the context is different.

              Others may disagree. :)

            • PoV says:

              Ah, I reread your other post. Seems I misunderstood.

              There’s going to be a way to roll/unroll posts, and possibly a way to instead view a summary of a post, so there’s going to be tools for dealing with a noisy feed. I haven’t talked about blocking user, or how spammer/abusive user stuff is going to work

              As for information, our “Useful Information” will actually be useful, and paced out. For example signups. The auto-signups blobs will post once it meets a threshold (i.e. 50 signups), or every few hours (we’ll find a good spacing). These are the sort of things that you might want to leave rolled up if they bug you. We’ll be smart about your preferences. We’ll also make sure to collapse multiple blobs together, if for some reason there are no other posts since the last blob.

              When we hit milestones, like 1000 signups or 500 votes, that’s noteworthy.

              Or if we find game submissions are noisy, we’ll do blobs. Say combining 2-4 games in one.

              And if you just don’t care, you turn it off.

              Now the reason they ARE the thing for splitting the feeds up is because that’s part of the dynamic. Using the +1 Love of posts is how you push things beyond your feed. The dynamic is working together as a team to push your Leagues message across the boundaries.

            • PoV says:

              If you prefer to read everything, there will be a view for that.

              If you want to just see what’s popular (Loved), there will a view for that. It will also be the default for non-members (or not logged in), and people not participating.

              I know this isn’t what you’re specifically saying, but Support will be handled by Groups. Including an @help will mark the post as being meaningful to those that are members of the @help Group. Of course, there will be views to see only posts that require help, and ways to thank users for helping (thus earning you User Love).

              The main feed is already used as both a news feed and forum. LD will never be a true forum with threaded posts that get bumped, but the blog format is already like a forum with topics that are important in the moment.

              And between events there are no leagues, so posts are to everyone.

              Effectively, being part of a League is like temporarily subscribing to it. Your posts are to the League, while the event is active. Once the event ends, things return to normal. We stop fetching external posts, all that stuff.

            • crazya02 says:

              The trouble is, often when posting something it isn’t seen by very many people. If Leagues are done correctly, they’ll grant each user more exposure, rather than less.

  3. tudd says:

    emojis? πŸ˜€ count me in

  4. Qrchack says:

    Thankies a bunch @Pov! Just make sure you don’t forget about embedding YouTube and Soundcloud in the Markdown syntax. Also, may I suggest one more service to support? The guys at vid.me have a nice little website that makes uploading random short gameplay videos easier than YouTube does, would be great if we could use it. Looks like this: https://vid.me/Td6b

  5. dcolgan says:

    Mike, this sounds absolutely awesome. Can’t wait to see how it all turns out! And thanks so much for open sourcing the old site. I’ve been curious for a long time to see how everything runs, regardless of hacks. Truly the community is in good hands!

    • PoV says:

      Haha, people keep thanking me for this, but technically it was always open source. I think one thing I’ve learned is that people just don’t like Google Code. πŸ˜‰

  6. Static 64 says:

    Wow, that’s one long post!

    I’ll admit, I’ve been very hesitant about changes to Ludum Dare, but this really looks good, and I appreciate all the work you’ve done, PoV.

    I still might argue against some things sometimes (for example I really hope we keep the little 64×64 user trophies. I’ve never given or received one, but I just love how personalized and creative they can be), but overall this makes me trust where things are headed.

    Thanks, and keep up the great work!

    • PoV says:

      If we can find a way to make custom trophies that are consistent with the regular trophies (once we actually have a style nailed-down for them), then yeah we’re probably do it.

      That said, we’ll probably end up launching the new site without trophies, unless the perfect artist for them just happens to show up.

  7. PitΖΆik4 says:

    Wow, this is exciting! Ludum Dare will be like a real website… only better!

  8. jsmars says:

    Great work! Loving the details of how things will work out. I appreciate the care about the legacy data and migrating over, I hope it will be seamless tho as I’m sure there are a lot of old users that (sadly) have moved on and won’t be joining up again.

    I’m wondering if what will happen to all the old LD events. It would be great to have a good overview “hall of fame” / trackrecord of all past LD’s (and mini LDs) with a nice overview page to find them by. Basically just a list of all past LD’s with links to their event pages. This is something I’m really missing for the current page too, it can be really hard to look up an old LD and find out the theme, see winners and try out some of the entries. Would be great to see this working in the new website, so that new website not only is a great event hosting page but also a great place to find a ton load of games to try out, and for new users this will show how much LD actually has done over the years.

    • PoV says:

      Good point. We have this:

      http://ludumdare.com/compo/ludumdare/

      and

      https://en.wikipedia.org/wiki/Ludum_Dare

      But we could certainly do better. Good idea. We should definitely show our history better.

      It will become much easier to find games on the new website (unified search, tags, all kinds of views), but plainly walking the list of historic events, yeah, we should definitely do more.

      • sorceress says:

        PoV, do we have game data from before wordpress? afaik this only goes back to circa LD10.

        Since you’re interested in assimilating data from other game jams into our database, it’d set a nice example if the full history of LD was itself available for browsing. I’ve really no idea what the early games were like. :)

        • PoV says:

          We have pretty-much only what you see here, linked in the numbers.

          http://ludumdare.com/compo/ludumdare/

          Off hand, I think that’s only the one that Mike Hommel ran (hamumu.com). I can bug him for a database dump.

          EDIT: Okay, I’ve opened an issue in the main Ludum Dare buglist.

          https://github.com/ludumdare/ludumdare/issues/4

          I can fire a note off to Geoff, Mike and Richard, but I can’t remember who hosted Ludum Dare 8 (Swarms), 8.5 (Moon/Anti Text), and who ran thewavelength.net.

          EDIT2: Emails sent.

          I’m also asking for help to figure out who ran Ludum Dare 9 on TheWaveLength.net and who ran 72 Hour GDC (Game Development Competition). One of the reasons we started running our Jam event was because 72hrGDC stopped running events, so in a way it’s part of Ludum Dare’s history too.

  9. Amazing specs and work done!

    I’m wondering if some people will be upset if there won’t be a potato-league, or snowman or other proto-leagues that have sweapt LD the past years. :) I’m also a little scared about what it will do to the games submitted if people start taking them seriously. But still, I think it’s a great idea.

    For the groups you listed, I’m wondering if it be useful with a dynamic @event-host or something so that one can address whoever is currently “in charge” of the jam or mini-ld. Another group that could be daunting, but potentially helpful would be @play-test (for getting feedback on something during an event).

    The following of people sounds awesome, hope one will be able to do that from the game page (including team members maybe), so that while voting one can easily add new people to adore.

    One thing though. In the same social vein, that has happened to me on several occasions, is that when the voting is over, I get the urge to check how some of the games I played faired. During voting it is easy to get a list (I never remember to download it though), but when voting is over, the list of my personal votes (and more important than my votes, just the list of games I’ve voted on) disappears. My memory simply isn’t good enough to remember them on my own, but I’d love to be able to say “congrats” to people on twitter whose games I played and did good in general. And more importantly, say “I think your game rocked” if everyone else didn’t appreciate something like I did. I get that it may be needed to discard the individual votes after each event because huge amount of data, but I would suggest either (a) keeping the list of games that someone has voted on (it would look nifty highlighting those in the top ranking lists) and/or (b) waiting some weeks after voting before flushing that table of individual vote data.

    • PoV says:

      Cool. Yeah, @host might be a nice thing to have. Alright, one more item for the list. :)

      The only real caveat I have is that I’ll need to be more strict with MiniLD hosts and scheduling. It’s normal to have some overlap with Ludum Dare events, but eventually @host messages will be for me. I’ve left some scheduling guidance in the signup doc, but things will have to be a lot more structured in the future (i.e. 2 weekends only, can’t end after the LDJAM 3 week mark).

      @play-test, @playme, @testing, @testme, something along those lines yeah. I have @press on my list, for brave folks that make videos and reviews to be broadcast to, but not everyone is press. I think you’re right that testing is one to have. Now I’m trying to think if there are any other phases of the event that would suit a group.

      As for where you can follow, I expect there to be a standard popup whenever you click on an avatar, that you can do things like follow, thank then (+1), view some stats (number of submissions, popularity, love, etc), go to their page, etc.

      We actually don’t discard any vote data (we have it all). It’s just the “what you voted on” view is attached to how the compo works. At the time we just never thought to make it stick around.

      And you’re right, we should definitely let you revisit what you did during the voting phase of the event. I’m thinking a view that lets you see all the games you played, as well as any comments you left. With that you should be able to remember “oh that was the one I helped the dev debug his Windows bug” and so on.

      The new site has a favourites system (internally called Stars). User Favourites are follows. Game Favourites were either going to be a personal favourites list (like a wishlist, but without the wishing) or a save-for-later list for the associated event. I’ve been leaning towards the later, but there’s probably going to be some reasons for people to want to make lists. General lists of games from our entire database. I don’t know what they’d be used for yet, but I guess that’s the point. There’s probably no harm in having our own form of Steam-like Curator lists. If we build it in to the site, it’ll just make things easier for everyone. Hmm.

  10. Seppel says:

    Why does it cost $200/month? That’s what I pay for 2 years of service. I have no cap for disk space, bandwidth, or database size, and I’m currently using about 20% less than what you’re using, plus I’m running a lot of scripts in the background. My provider has had only one major outage since 2009.

    You’re either paying for something way beyond what you need, or you’ve been shilled. Switch providers and save $1,100 per year!

    • PoV says:

      Ludum Dare has a dedicated server. We used to run on a $10 shared host, but got kicked off because we were bringing the machine to its knees. When then ran a VPS for a while before brining that to its knees. We kept having to bump the VPS until it just became cheaper to have a dedicated server. Ludum Dare may not be busy now, but during events the traffic is real.

      We run WordPress today, and WordPress doesn’t scale. I’m working on fixing that with the new website.

      Today we also have a CDN (CloudFlare) hosting our static files in data-centres around the world. This is new since December’s event last year, and this solved part of our performance problem. A few weeks of optimizing queries made the website usable, but it’s still too heavy. Again, WordPress doesn’t scale.

      We’ve been running the same Octo-Core Xeon machine for the past 3 years, and though we did get a RAM upgrade last year, it doesn’t have an SSD. A server with an SSD would be faster. We will eventually move to a machine with a fresh CPU, and an SSD. And now that Ludum Dare is modular (you can run your own copy of it locally), I’ll be able to run real benchmarks using our real data on other machines.

  11. DeltaF1 says:

    If we have to make new accounts for the new website, are there any measures in place to keep people from stealing our username? Or will we just have to be quick on the buzzer?

    • PoV says:

      We’ll be reserving a long list of names (not necessarily user names). Any names we think are at risk of being snagged (Unity, GitHub, Notch) will be there. When you try to sign up using a reserved name, you’ll get a message that says if it’s really you to contact me. We’ll try to be comprehensive, but if the personification of YouTube shows up, we’ll fix it.

      There should be no reason to have multiple accounts.

      If some folks have multiple accounts, we’ll help them merge them.

      Groups are there to handle a number of internal features (support groups), as well as Companies with multiple employees getting involved in the community. Team names will not be pulled from the same pool as User Names and Groups, so Team Mysterium and user Mysterium can coexist.

      There will be a policy to reclaim abandoned names. The policy is TBD, but I’m thinking along the lines of: Assuming there’s no funny stuff (fake entries, scams), anyone that has submitted a game to a Ludum Dare event will have reserved their name. So if an account sits idle for some period of time, never used, an active user *WITH* a submitted Ludum Dare game can take it. That’s your privilege as a participant, we’ll give you the best user name we can.

      And just to make everyone feel a little safer about their name, I’ll probably end up adding a previously used name check and following similar criteria. i.e. If a user has submitted a game, and the e-mails don’t match, notify the user attempting to sign up of the discrepancy, and what to do if they changed their e-mail. If the user *HASN’T* submitted anything, then the name will eventually be up for grabs.

      There will be special cases. Say a well known developer shows up, creates an account, but never finishes their game and goes away. To avoid confusion, we may decide to just leave the account. Also our media guests wont necessarily have games on their account. I need to remember to add popular YouTubers to the reserved list, ’cause the last thing we need is some fan pretending to be PewdiePie.

  12. WetDesertRock says:

    I like this. All of it.

    One note that made me a bit worried is the possibility that some people may get their posts hidden away. One thing I liked about the current LD site is that popularity doesn’t equate to visibility (like it does on reddit). You will see all sorts of skill levels on the site. With leagues and such I’d be scared that people may start some sort of exclusion based off of skill and that it then becomes unfair for other people.

    I’ll try to sum that up again because I’m not sure how well I conveyed what I meant:
    I’m afraid that creating new ways and leagues to affect for the feed will make hard to get the same amount of visibility for the less popular or maybe less skilled people.

    • PoV says:

      Well the main reason for leagues is so those posts by those less popular people stick to the “front page” longer. Instead of being pushed off by the constant flow of posts, there’s a more gradual relaxed flow. Yes it means that only a fraction of the community will see them, but that fraction will see it now, instead of it just flying by. And if it’s genuinely cool, people in your League are going to +1 it, sharing it with everyone.

      There’s a lot of posted content that doesn’t matter, such as “I’m in” posts. That’s more for you than it is the rest of the community. These sort of things wont necessarily get +1’d, unless there’s some fun reason to do it.

      And of course, if you want to see everything, you’ll be able to.

      One of the big things everybody says they love about Ludum Dare is the feedback. It’s hard to give feedback when things are moving too quickly.

      • WetDesertRock says:

        Alright, seems like you are going about it in a way that won’t get people covered up. Is there going to be any quick start method for new people who just want to make games and not worry about all of the site stuff?

        • PoV says:

          Assuming you have an account, joining the event shouldn’t be more than 1 click (i.e. I want to participate). I’ll auto-assign everyone, but during free league selection time, offer users the choice to change their League.

          I think somewhere in the config we’ll also let you change Leagues whenever you like, but only to leagues that are less-full than your current league. That way, friends can make sure they’re in the same league (if they both decide to switch at the same time).

  13. oranebeast says:

    This is great and all; But I’d like one thing.

    The ability to keep the every post timeline option; I kinda liked it as it gave me a sense of real community and showed what we were all doing; not just a fair few.

    But I also like the idea of followers and leagues; It sounds good.

    I’m looking forward to it.

    • PoV says:

      Yes, there will be a way to toggle what view you’re seeing (little tabs or something). And yes, “View All” will be an option. It just wont be the default anymore.

  14. drnick says:

    I have seen more than one comment on using PHP but I guess you went with what you feel safe with.

    Also, I will want to have a different username in the new ludumdare. In the current ludumdare I am drnick but secretly lucasmaismais as evidenced by author page URL. In new ludumdare I desire to be drnick only, hope it will be possible.

    • PoV says:

      I can fix that for you now. Assuming drnick isn’t already taken, your author URL will change, and you’ll have to log in as drnick. Let me know, and I can do that.

      And to anyone else that has a less desirable username, feel free to contact me.

      Again, I can only rename you to something that isn’t taken.

      Names used by idle/unused accounts, we wont be enforcing a policy to claim those yet. As we transition to the new site, if a desired user-name hasn’t submitted a game, it will be up for grabs.

      • drnick says:

        Wont this break all links to my author page though?
        If yes, I’d rather wait for the new ludumdare site, if I can reserve “drnick” based on nickname rather than author page name.

        • PoV says:

          It would break any links to your user page, but your game pages are by your id, and your posts are by date, which wont change.

          Waiting is up to you. You’re welcome to duke it out with the *other* drnick come new-website time πŸ˜€ (I don’t even think there is another drnick, but it would be funnier if there was).

  15. Kimau says:

    My saddest feels is I’ll lose my hip old id of 15. Strangely proud of that in a weird way πŸ˜›
    Being an oldster who has slowly become less relevant.

    Understand the PHP choice that being what your comfy with, even if it makes me wince πŸ˜‰ Convert you to the wonderful land of Go πŸ˜›

    Will the reserved name list protect old nick’s for a limited period or something. Would be crushed to lose Kimau, and I’m sure some trolls will hunt down some of our more well known names.

    Looking forward to the new site.

    • PoV says:

      My saddest feels is I’ll lose my hip old id of 15.

      Ha! Sophie said the same thing to me (she was sad to lose her similarly low number). πŸ˜€

      It’s not a real problem, but hearing that this is a concern amuses me, so much that I think I want to do something about it. πŸ˜€

      At the very least, I’m thinking about adding some cleverness to the new site that can figure out roughly how long you’ve been Game Jamming by looking the the oldest event you submitted a game to. And then we can say this user has been “Game Jamming for 13 years”.

      But going one step further, I think I will import the original Ludum Dare Author IDs, and store it in your new accounts metadata. And then we can make that something you can optionally show on your new user page. :)

      If we’re able to get our hands on more classic event data, we can import those Ids too.

      Will the reserved name list protect old nick’s for a limited period or something.

      You’ll keep your name, no problem. While talking about the reserved list, I decided it makes more sense that we should just blanket protect any username that has submitted a game. So you’re good. :)

      As long as your e-mail hasn’t changed, it’ll just work. Anyone that tries to take a name that’s been used will get told this is a historic name, and if it is yours how to get it.

  16. YourLocalFax says:

    I think it’d be great to see a “turn of the lights” option, toggling a dark theme. I and many others hate to stare at bright things, especially later in the day :p

  17. Jwatt says:

    All of this is sounding snazzy. Some of these changes are long overdue with the exponentially growing community.

  18. pi_pi3 says:

    You are awesome Mike. Have you been thinking about Looking for team/Looking for partner feature? It’d be nice if programmers could find an artist easily.

    • PoV says:

      Actually yes I have been, but we need a new website first. :)

      The first step toward this is that I want to start collecting and showing regional data. If you want you can always opt out, but I think a lot of us would really like to know how big our regional game jam communities are. Not everybody has a local Game Dev Meetup group or Global Game Jam locale (or attends them).

      That’s not matchmaking. That’s just better understanding our regions.

      From that, I can figure out what timezone people are in. Even if you’re not in the same country, it’s a lot easier to collaborate with someone that’s awake. :)

      But again, this is just a small step.

      I want to avoid typical dating style matchmaking, because when it comes to collaboration, it’s less about shared interests and more about trust. Like the common teamwork problem of one person carrying the group. I want it to be useful to more than new people, but veterans too. I think it needs to be organic. Less “I’m looking for a collaborator”, and more “I’m thinking of working solo, but…”. Better facilitate spontaneous “I like your stuff, you like my stuff, lets jam a game” moments. For it to be really useful, it should be a natural extension of our socialness. Less like dating, and more about starting conversations and making friends.

      Again, that’s my thought on matchmaking. I haven’t entirely figured it out yet, but I know it needs to be better than a “Looking for Group” checkbox. And don’t get me started on the problems of matchmaking and minors. :)

      So yeah, I think the key here is building something that makes it easier to trust others.

  19. quantumpotato says:

    What’s wrong with /shitface? I’d use that URL, more people would find it..

  20. Frenchie says:

    Hey PoV! The work being done is really exciting! However, I’m concerned because I don’t see any mention about what I feel is LD’s greatest weakness: lack of threaded conversations in game submissions. It would be an awesome feature to have, especially when combined with user notifications when someone replies to your thread. It’s just impossible to have any kind of conversation around the games right now :(

  21. gingerBill says:

    Hey PoV,

    I am really excited about the site and I cannot wait. If want some help, I don’t mind helping out.

    A few things though:

    * MySQL: MySQL has numerous problems which cannot be fixed and anything else would be a better. I would suggest Postgres and migrate the old database to it.

    * Prism.js: C-Like languages do not highlight correctly. I personally want to split types (e.g. int, float, etc.) from keywords (e.g. const, struct, class, if, etc.). This means that you will need to write a custom style for those languages and modify the CSS to reflect that. It’s not hard to do but it seems a little weird that they haven’t done it to begin with.

    * Markdown: Are you using GitHub flavoured markdown? Also, will you allow for video/sound(cloud)/game embedding?

  22. Firefox says:

    :smiley_cat:
    :smiley:
    ?
    ?
    Emojis seem like pointless fun to have on the website!
    There should probably be some sort of safeguards so that people don’t go crazy and spam them everywhere…

  23. Unbelievable amount of work and effort.

    Much respect.

  24. Great, now make it P2P!
    /s

    That aside, it’s all good (and long-awaited) news.

    One thing I haven’t seen on your list but would also be neat is yet another submission category, Tools. Not tools as in, I used Haxe / tiled to make this game, but tools by LD developers created for LD developers – like (as3)sfxr. They would not be specific to a single event, but could be used in any LD.

    Specific events should also have the ability to define their rules easily, including banning certain tools, libraries, etc. Then people / moderators could flag submissions based on breaking a certain rule.

    Other small ideas that come to mind – all of the theme business in one place – suggesting new themes, theme slaughter, (with some pretty stats, updated live?) … Easily accessible categories / directories for wallpapers, IRL meet-ups…

    Any idea what the new look will be? I know the wip versions are not about the looks, just wondering if you have thought about this. Sticking to simple flat shapes? Some craziness that will require an artist? I know it feels nostalgic now, but the old LD design looks kinda bad now :I

    Anyway, good job πŸ˜€

  25. g_o says:

    If things go really slow maybe I could lend a hand here and there… You do work on it for a long time now

  26. Bemmu says:

    Why not import users?

  27. Skyfish says:

    I’m HYPE this is going to be amazing!

  28. Great changes, can’t wait!

  29. Firefox says:

    This is probably intentional, but…
    Right clicking then left clicking on the giant chicken image makes a list of all the things on the site appear.
    Is this going to be on the actual site or just a beta testing feature?

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]