update()
render()

while(running) {
  long frameStart : System.currentTimeMilliS()

  input.update()
  network.update()
  update()

  network.render()
  graphics.render()

  long frameEnd
}

time passed : frameEnd - frameStart

if(timePassed < FRAME_TIME) {
  Thread.sleep(FRAME_TIME - timePassed);
  timePassed = FRAME_TIME;
}


BufferedImage image
javax.imageio.ImageIO.read(getClass().getResources(path));

java.awt.Canvas
java.awt....BufferStrategy

[Note: show the JFrame before you create a buffer strategy]
Canvas canvas = new Canvas();
bufferStrat = canvas.createBufferStrategy(2);
Graphics2D g2d =  bufferStrat.getDrawGraphics();
~~~~
~~~~
g2d.drawImage(creatureImages, x, y, null);
~~~
~~~
bufferStrat.show();

these all use a Component class containing booleans representing
being highlighted, etc.... there's position, etc.
