USED: AndEngine, Cocos2D, LWJGL (although not really an engine)
REQUIREMENTS: Crossplatform, easy refactoring/changing, no need to change code to add new content, etc, OpenGL
CHOICE: I currently use my own engine, Ux2Engine.
OWN:
code behind it:
UxEngineOptions options = new UxEngineOptions();
options.fullscreen = useFullScreen;
UxAssetProvider renoriaEncryptedProvider = new RenoriaEncryptedAssetProvider();
options.displayMode = new UxDisplayMode(requestedWidth, requestedHeight, 32, UxDisplayMode.REFRESH_RATE_UNKNOWN);
options.setComponent(UxComponent.RENDERER, useJava2D ? new Java2DRenderer() : new GLVAORenderer());
options.setComponent(UxComponent.ASSET_MANAGER, new UxAssetManager(useJava2D ? new Java2DBufferedImageAssetProvider(renoriaEncryptedProvider) : new GLTextureAtlasBuilderAssetProvider(renoriaEncryptedProvider, runOptions.getOptionalInt("textureCacheSize", 10))));
options.setComponent(UxComponent.PHYSICS_ENGINE, new RenoriaPhysicsEngine());
options.setComponent(UxComponent.INPUT, new RenoriaInputHandler());
options.setComponent(UxComponent.NETWORK, new RenoriaPacketCrypto());
UxEngine engine = new UxEngine(options);
UxEngineWindow wnd = useJava2D ? (new SwingDoubleBufferedEngineWindow(engine) : new LWJGLEngineWindow(engine) );
wnd.loop(new RenoriaGameLoop());