Official Level Design Contest Rules & Deadlines

Not open for further replies.


STJr Team Representative
Sonic Team Junior
Kart Krew™️


The Official Level Design Contest is back! For those not in the know, the Official Level Design Contest (OLDC for short) is a contest held multiple times a year, accepting maps of all kinds, from all users, to compete against one another. During the voting process, voters are encouraged to leave feedback on every level they have played, which makes the contest a very effective way to get constructive criticism on your levels, allowing you to figure out what you might need to do in order to improve.

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 contest! Show your work, get enough eyes on it, let people give you ideas and feedback, and you might even win the coveted title of Contest Winner!

Please read over all the rules carefully, even if you were around during previous contests. 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!


Contest divisions with fewer than 2 entries will be skipped, and their submissions will be saved for the next contest.


  1. Make sure that the level works properly, that it is normally accessible, and that it does not interfere with other levels. This means that:
    • Single Player levels need to be completable, and show up as the first level when starting a new game.
    • 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. In this case, please notify us in your submission post.
    • Your levels may not cause crashes under any circumstances.
  2. Previously released levels are not allowed. Private testing is allowed (and encouraged!), but the level must not have been released on the MB or other public spaces.
  3. The level has to be your own work. This means that ports, remakes and edits of existing levels are not allowed, unless the original level is yours. In such a case, the level should be sufficiently different from your original level.
  4. Each participant can submit one level to the Single Player division, and up to three levels to each Multiplayer division. Collaborations are allowed, but fall under the same entry limits.
  5. Custom assets and scripts are allowed! Custom sound and music is also allowed. This sound and music must be under 3 MB total (the map itself and other assets are not subject to this limit). This filesize limit is shared between all of your Multiplayer entries. All custom assets and scripts must follow message board rules.
  6. 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 similar conditions will not be accepted.
  7. 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, create a new thread in the Contest Submissions subforum. If you submit multiple entries, each one requires its own thread.


Entries are due twice per year, at 23:59 UTC (18:59 EST), which means the deadlines are as follows:
  • OLDC Round 1: June 1st
  • OLDC Round 2: December 1st
After each deadline, all entries are gathered into two files. One contains the Single Player entries in a small hub world, with a map voting system courtesy of the SUGOI series. The other contains the Multiplayer entries, reorganized into a map rotation per division. Within one week, these files will be compiled and uploaded for the public to play through, which kicks off the voting period of two weeks. During this time, a discussion thread for the contest will also be opened. Once the voting period is over, the votes will be counted and the results will be made public as soon as possible.


  1. To vote, make a thread in the Contest Voting subforum. It will be private during the voting period, and will be made public alongside the results.
  2. The actual voting is done by ranking all entries of a division, from favorite to least favorite. You don't have to vote on all divisions!
  3. Participants voting on a division they have entered are required to rank their own entry highest.
  4. When providing comments or reviews, remember to keep it constructive!


If any map you submitted is voted highest in its division:
  • You will be given the Contest Winner role on our Discord server until the conclusion of the next contest. This does nothing besides let people know that you won.
  • You will be given the Contest Winner banner on the SRB2MB until the conclusion of the next contest. This does nothing besides let people know that you won.
  • You will be awarded a trophy in the form of a badge on the SRB2MB. Badges are permanent! You can choose which badges you want to show off on your profile. Badges do nothing besides commemorate your victory.
  • You will be entitled to bragging rights. (But don't abuse them -- be a good sport!)
Please keep in mind that winning the contest 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 won the contest. 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:


STJr Team Representative
Sonic Team Junior
Kart Krew™️
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)