Need advice about action RPG engine
-
I'm planning to make an action RPG (think Diablo) type engine. In case you're unfamiliar, it has a top-down view, where the player is always in the center and can move around on a map in real-time. Is it possible and advisable to do this entirely with Qt Quick, or should I use a QGraphicsWidget for the main map display, and just use QML for the UI that goes on top of it?
-
It's possible. Check out "V-Play":http://v-play.net/ engine, for example, or my "CCF":https://github.com/sierdzio/closecombatfree prototype.
-
It is certainly possible, however, I am not willing to bet QML will play nicely in a scenario involving high count game objects. And while I've seen a case of a significantly big QML project, it wasn't as big as an RPG game might go, and it wasn't performance critical as an RPG game would be. QML can easily be brought down to its knees, especially by extensive bindings.
Typically, what you would want to do is have as much C++ game logic as possible, and only use QML to markup structure or to script. That doesn't apply to trivial games, which are the primary intended target for QML, where the level of complexity is very low compared to a typical RPG game.
There are some ways to evade the overheads of QML, like making heavy use of lazy loading, make use of OpenGL geometry instancing, which I don't think is being used by the QML scenegraph, since it is unsupported in GLES2.
For a more complex game, I'd rather use Unreal engine or Unity or some other more specialized and mature engine, providing a wide range of game related features, but if it is a more trivial and simple game, QML will probably do the trick, especially if you avoid QMLs pitfalls, something that is not hard to learn if you become friends with the QML profiler.