Terrain

Yeah, loading screens are quite easy. Try something like this:

import direct.directbase.DirectStart
from direct.gui.OnscreenText import OnscreenText
#create a loading screen here:
loadingText = OnscreenText("Loading...", fg=(1,1,1,1))
#or whatever you like (an image, an animation, whatever.)
#render two frames
base.graphicsEngine.renderFrame()
base.graphicsEngine.renderFrame()

#now, put the rest here. Like the rest of your imports, and your classes.

class World(blah dee blah):
  yadda yadda

w=World()
#just before you call run(), hide the loading screen.
loadingText.hide()
#ok, now run the game.
run()

This is just abstract code, but something like this is the basic idea.