I used the AffineTransform in Java2D extensively, and I have noticed that Slick2D does not offer any inverse transform methods?
I'm not too familiar with AffineTransform or inverseTransform, but usually there are simpler ways of doing this with Slick. For example, to rotate a shape you could simply rotate the graphics context:
g.rotate(cx, cy, angle);
g.rotate(cx, cy, -angle);
Slick also provides "pushTransform" and "popTransform" which can be useful.
On Swing + Slick2D, has anyone really dived deep in this?
Generally speaking, it's not a good idea for a game. Swing is slow, clunky and bloated, and doesn't play well with OpenGL. Most people use this mix instead to create toolsets and editors aimed at developers (for example, Slick's Hiero font editor uses it well).
But if you just want to make something that "works" in a short amount of time, and don't plan to learn any new GUI libraries, then I suppose you can stick to Swing.
There is just an odd issue that if I make the render area of the CanvasGameContainer take up the entire screen, it will crash, so I had to make it 1 less pixel than the displayable resolution.
This sounds like a bug. First try updating your libraries (lwjgl.jar and the native libraries) to the latest version of LWJGL. If it persists you can post a small test-case in the BUG/RFE forum.
I do get good performance, though: I can draw 3,700 rotating and scaled transparent images at 60 FPS (I could only get 30 FPS on Java2D). Depending on the scale, this could increase to 4,700 images at 60 FPS. This pleases me, so I think I will get huge performance gains over Java2D (Obviously!).
If you plan on rendering that many images, there are lots of optimizations discussed in this thread:viewtopic.php?p=26686#p26686
(I am getting 17,000+ images at 60 FPS)
Don't get too caught up thinking about "how it would be done in Java2D," as that line of thought will only slow you down. e.g. Double-buffering your entire scene is unnecessary.
Finally, on the OpenGL aspect. I heard that not all machines have these libraries (??). Is this true? I haven't done much with hardware rendering capabilities (I've always used Java2D) so this is new ground for me. Can I distribute the OpenGL libraries with my application and have an installer install them if required?
You should always be distributing the LWJGL native libraries along with your program. There are a lot of tools that make it useful to package an LWJGL application into a single JAR/executable.
If OpenGL is not supported on the computer, then your game will simply not run. This is rather unlikely, though; most people looking to play computer games will have a graphics card that supports OpenGL at some level. Unless you are targeting ancient
systems, you shouldn't worry too much about this. If compatibility is your top concern, either abstract your rendering (a lot of work for very little gain) or stick purely to Java2D. But, realistically, the number of users with no OpenGL support is minuscule.
If you have more questions feel free to ask.