Official Level Design Collab Rules & Deadlines [REVISED 11/19/2023]

Not open for further replies.


In charge of way less than you might think
Sonic Team Junior
Kart Krew™️


Welcome to the Official Level Design Collab! For those not in the know, the Official Level Design Collab (OLDC for short) is a collaborative event held multiple times a year, accepting maps of all kinds, from all users, to celebrate all the map creators in our community. We've created new channels on our Discord server where submitters provide each other with constructive criticism and help each other fix bugs. All submitters are required to be there, so you're guaranteed to find new ways to improve your work!

Basically, if you want to get into level designing, if you're already an experienced designer, or if you're somewhere in between, join the collab! Show your work, get some eyes on it, let people give you ideas and feedback, and become a Collaborator!

Please read over all the rules carefully, even if you were around before the transition from contests to collabs. Some rules have been changed, mostly for more leniency, and you may be happy to see some of the changes, especially if you're a fan of creating custom content!


  • Single Player
  • Circuit
  • Match
  • Capture the Flag


  1. To qualify for submission, you must be a member of the SRB2 Discord server, and you must have a valid (not banned) SRB2MB account.
  2. OLDC packs will be labeled as okay for others to port and maintain, but not okay for others to make major modifications. If you do not want others to port or maintain your levels after the OLDC pack is released, please refrain from submitting.
  3. Make sure that the level works properly, that it is normally accessible, and that it does not interfere with other levels. This means that:
    • Your level must have been created for the current major version of SRB2. If the current version is V2.2.X, then levels for V2.1.X and earlier will not be accepted.
    • Single Player levels need to be completable. We recommend you use MAP01 so that your level is easily accessible, but be prepared to move your map to a different slot later if accepted.
    • Multiplayer levels need to have enough player starts, and need to be accessible via level select.
    • Existing resources (textures, objects, sounds, music, etc.) can not be overwritten.
    • Any scripts present in your level must not interfere with other levels. If your level contains significant gameplay changes, please ensure that they are contained solely within your level slot using a MapLoad hook. Click here to see how to do this.
    • Your levels may not cause crashes under any circumstances. Ensure your level is stable and looks (mostly) correct in both software and OpenGL render modes.
  4. Previously released levels are not allowed. Private testing is allowed (and highly encouraged within the Discord channel), but the level must not have been released on the SRB2MB or other public spaces.
  5. Ports and edits of existing levels are not allowed. However, you may submit remade versions of older levels you made, though they must be sufficiently different from your original work.
  6. You may submit multiple levels to any category, but please focus your effort on a small handful of total levels. You'll be able to make much better levels if you don't spread yourself too thin!
  7. Custom assets and scripts are allowed! All custom assets and scripts must follow message board rules. Custom sounds must be in OGG format (quality level 0), and custom music must be in OGG 0, IT, MOD, S3M, or XM format. Click here to read a tutorial on music looping that includes how to export in OGG 0 using Audacity. It's slightly outdated, but it should still be helpful.
  8. Keep accessibility in mind when creating your submissions. Entries containing excessive flashing lights or other content that could cause problems for players with epilepsy or related conditions will not be accepted.
  9. Cutscenes are allowed, but they must focus mainly on story or background for the level. Warnings, credits, or reminders to give feedback may be included in the form of a custom texture or in-level script the player can activate.
To submit your level, hop into the #oldc-submissions channel on our Discord server. You'll find further instructions there. Once your map is submitted, please stay in the server so that we can easily reach out to you if there are any issues with your submission. If your map is accepted, you will be given access to a private channel where the feedback and bug fixing stage of the collaboration takes place.


Entries are due twice per year, at 23:59 UTC (18:59 EST). The deadlines are as follows:
  • OLDC Round 1: May 1st
  • OLDC Round 2: November 1st
After each deadline, all entries (including multiplayer levels) are compiled into one big addon file. Its Single Player entries will be accessible from a small hub world, with a map voting system courtesy of the SUGOI series. After the collab pack is released, a discussion thread will be opened where players can leave constructive feedback on the levels they played.


Once the collab pack is released:

  • You will be given the Collaborator role on our Discord server, as well as the Collaborator banner here on the SRB2MB, until the release of the next collab pack. This lets everyone know you made a map that's in the latest pack.
  • You will be awarded a ribbon in the form of a badge on the SRB2MB. Ribbons are a permanent way that you can commemorate your participation! You can choose which ones you want to show off on your profile.
Please keep in mind that participating the collab does not mean your map(s) will be included in a future SRB2 update. Although some maps submitted to the OLDC in the past are included in SRB2 today, it's not because they were in a collab pack. Rather, it's because the map author(s) became part of the development team and put the maps in the game themselves.

Now get out there and get mapping! Don't be afraid to show off your progress. Good luck and have fun!
Last edited:
How to restrict code to your map:
Keep in mind that this is only relevant if your code affects the behavior of the player, the camera, geometry or of objects that exist in other maps; for custom objects that exist only in your map, this method won't make a difference.

1. Create a custom level header parameter

This is done by opening your level header and inserting a parameter with a name of your choice followed by the prefix Lua., for example:
Sonic Object Configuration (SOC):
Lua.MyMomentumMod = true
Keep in mind you can give any value to this parameter, since it's going to be parsed by the game as a string and not as a number or boolean. Just make sure the name is unique and no one else is going to use it on their map by accident. This will create a setting that's exclusive to your map.

2. Check for the parameter in your hooks

At the head of every function called by hooks that control your custom behavior, check for the parameter's existence. It will be accessible as a mapheader_t variable written in full lowercase. For example,
local function MyMomentumFunction(p)
  if not mapheaderinfo[gamemap].mymomentummod then return end --  if the map doesn't have parameter MyMomentumMod, abort the function

  -- rest of your code

addHook("PlayerThink", MyMomentumFunction)
Or in the abridged format,
addHook("PlayerThink", function(p)
  if not mapheaderinfo[gamemap].mymomentummod then return end --  if the map doesn't have parameter MyMomentumMod, abort the function

  -- rest of your code
Assuming this parameter is not defined in other maps, it will read as nil for them, and so your code is safe to only execute in yours.
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)