Sharing specific User Generated Content within Discourse (for Halo Infinite)

Hi folks! Hoping someone far smarter than I can recommend a good approach here - even if it means hiring a Discourse developer for something a little more custom.

I own and operate - a growing video game publication with a lively and active Discourse powered forum.

I also have been working with Microsoft on Halo Infinite since 2020 on the latest iteration of Forge, the UGC side of Halo, as part of their “Forge Council”

As I have my own community, a lot of them with a vested interest in Halo, I’d like to provide a place to share maps when Forge launches in beta in November.

What I’m looking to achieve:

I want to create a post creation workflow specifically for users looking to share maps and gamemodes, which would become it’s own category on our forum ( for Halo Infinite.

A user would be able to fill in details on their creation, from whether it’s a core competitive map, or a minigame. They’d be able to attach screenshots, advise on primary gametypes (Slayer, Strongholds, CTF etc), list a description of the map, what “map canvas” it’s built on, collaborators, weapons, etc as well as provide a link for a user to bookmark the map to play in Halo Infinite.

Each map would effectively be able to be it’s own “thread” with users able to discuss the map, provide feedback, and even rate the map itself. Users would be able to look across the entire category of maps submitted by the community, and filter to just look for, as an example - minigames, or core maps etc.

Ideally, I’d rather build this WITHIN our Discourse instance, rather than build yet another custom specific application (for example, see

So, clever people - what’s do-able/possible? All feedback/questions appreciated! <3

1 Like

I wonder if the Custom Wizard Plugin could be used for your post creation workflow. I think you could use it to create topics that fit a certain template.

1 Like

You might use tags for the different game types.

Without changing discourse, you could use a template to encourage people to enter the stuff that you want them to.

At the opposite end of the spectrum you could create a custom plugin that has custom fields for the various pieces and displays them in some custom fashion.

I’ve looked at this, and we’re investigating as to how well it might work.

I feel like a template isn’t suitable, because human beings are stupid and hate reading/following guidance, hence a workflow being the preferred option.

I sense a custom plugin is where we’re going to land, especially in terms of displaying them to encourage discoverability, which has to be the primary design goal overall.

I agree about humans.

I think the discoverabiliy/search piece is likely best handled with tags,as that’s a natural fit and can be imposed by native discourse. Check out tag groups if you haven’t. You can force people to choose among sets of them.

1 Like

This is great to know.

The best example of what I’m looking to hit (but obviously exceed in term of usability/modern interface) is probably Maps | ForgeHub - from a plugin perspective, is building something like this particularly difficult/longwinded?

1 Like

Is there a map repository somewhere standard?

If so you could build a plugin on both platforms to create a pub-sub relationship and automatically post a new Topic for each new map submitted to the repo.

See: PubSubHubbub Core 0.4 -- Working Draft

I’ve built such a thing previously, but I’m afraid it’s not OS.

This would require a reasonable amount of work (and buy-in if you don’t own the map repo) but is very pragmatic.

1 Like

So I’m understanding correctly - the map repository would be ALL maps ever saved/published via Forge that have a URL generated for sharing via HaloWaypoint (presuming that’s the way they’d do it?

That probably wouldn’t be feasible from my understanding of how Forge works - this would only be for folks sharing on our forum for their specific creations only. Hoping I’m making sense here!

1 Like

You could:

  • receive a message for each and every new map
  • filter out ones that don’t represent those from your users (using some key relationship, e.g. some custom attribute on your Discourse that links their “forge author ID”?).
  • create those topics.


Another approach might be to investigate their API and implement some kind of intermittent polling (but polling is generally expensive and you might use up your quota very easily if you need this to happen very frequently). But again you’d need to know what to look for and knowing the foreign ID’s of your users would be critical here too. If they don’t have a specialist public API you could also scrape their existing web pages for the information.

1 Like