public void init() {

    // create lists
    diamonds = new ArrayList<Diamond>();
    sparkles = new ArrayList<Sparkle>();
    items = new ArrayList<Item>();

    // load map
    tileMap = new TileMap(16);
    tileMap.loadTiles("/Tilesets/testtileset.gif");
    tileMap.loadMap("/Maps/testmap.map");

    // create player
    player = new Player(tileMap);

    // fill lists
    populateDiamonds();
    populateItems();

    // initialize player
    player.setTilePosition(17, 17);
    player.setTotalDiamonds(diamonds.size());

    // set up camera position
    sectorSize = GamePanel.WIDTH;
    xsector = player.getx() / sectorSize;
    ysector = player.gety() / sectorSize;
    tileMap.setPositionImmediately(-xsector * sectorSize, -ysector * sectorSize);

    // load hud
    hud = new Hud(player, diamonds);

    // load music
    JukeBox.load("/Music/bgmusic.mp3", "music1");
    JukeBox.setVolume("music1", -10);
    JukeBox.loop("music1", 1000, 1000, JukeBox.getFrames("music1") - 1000);
    JukeBox.load("/Music/finish.mp3", "finish");
    JukeBox.setVolume("finish", -10);

    // load sfx
    JukeBox.load("/SFX/collect.wav", "collect");
    JukeBox.load("/SFX/mapmove.wav", "mapmove");
    JukeBox.load("/SFX/tilechange.wav", "tilechange");
    JukeBox.load("/SFX/splash.wav", "splash");

    // start event
    boxes = new ArrayList<Rectangle>();
    eventStart = true;
    eventStart();
  }