Я б посоветовал в начале запуска игры загрузить все что касается интерфейса меню. И по возможности загрузить то что будет общим во всех уровнях. Там например интерфейс геймплея, персонажа, может еще что то.
Далее я б написал функции что то вроде этих:
LoadLevel(levelname$) - для загрузки необходимого уровня.
ClearLevel() - При окончании уровня удаляет все данные уровня для того, что б не мешали при загрузке следующего уровня, другими словами уберем шлак. Возможно здесь тоже пригодится параметр levelname$- это уже зависит от тебя и игры.
Initialize(levelname$) - Подготовка переменных (например координаты X,Y,Z игрока на каждом уровне). Настройки камер и прочего что в разных уровнях будет отличатся.
А загадочный levelname$ - путь к файлу с описанием левела. Либо можно по другом:
Function LoadLevel(levelname$)
Select levelname$
Case "Level 1"
;Описываем загрузку 1-го уровня.
Case "Level 2"
;Тут соответственно 2-го.
Case ...
;и т.д.
Default
;Выкидываем ошибку, ибо уровня нет.
RuntimeError "Can`t find level: "+levelname$
End select
End Function