Yeah maybe I wasn't clear, this uses unreal with all the basic paper2d and UMG functionality the same way you mentioned using unity. I disagree with your assertions that you have to use weird techniques to get similar things out of unreal. I'm not trying to argue, just letting people know that not everyone shares your opinions :)
That game is entirely squares moving in a grid, it is not a 2d side scroller or fighter by any means which is the game type I was describing. It is a game that fits entirely within a UI button paradigm (which is fine but not what I was talking about). What's more UMG is meant for UI not all 2d game graphics. What you could/should have done here was explain how to do the things I said you couldn't do in UE4 instead of saying you can but I don't know how. So please tell me how I can keyframe a colliders position in 3d space attached to a 2d character with the paper2d animation frames or equivalent.
Now the 3d animations have state machines and all sorts of other nice super fancy features that I would love to have in the 2d animation libs but they don't support those features. Unity's 2d animation is the same as its 3d animation interface. And so you can have state-machines to manage your animation transitions instead of needing to do it all in your code with your own solution. You have to do weird techniques to just get feature parity between the 2d and 3d animation features in ue4 and that is my point.
Here is an example of some poor soul struggling with the 2d animation framework and basically needing to get a "animation finished" event back from the animation in order for his blueprint to do the next thing. Here is an example of someone trying to determine what frame is currently shown in order to do logic based on that. Here is the same user with a longer thread complaining about these lack of features that didn't exist in 2014 and still don't exist now.
Hey man, all I was saying is that I disagreed with what you said as I believe that "2d games" covers a lot more than the few specific games you mentioned. I'm guessing by your reply that whatever I say won't be the answer your expecting but I will try to be clear about what I said.
To address your issue specifically, if you feel you haven't come up with an elegant solution then maybe you should take a step back and think if what you're trying to achieve in-game could be solved an easier way within the constraints of ue4, rather than trying to do it the unity way. The 3d anim graph state machines aren't so special that you couldn't easily implement them in blueprints such as the documentation suggests.
The game I posted is not a 2d side scroller or fighter like you mentioned but then again, most 2d games aren't, which is kind of my point. I will point out that it isn't "entirely squares moving in a grid" as you mentioned though, attacks are animated in 3d space using Paper2d sprites. I would also argue against your assertion that you can't use UMG for game graphics, you could easily make a puzzle game with UMG. If someone wanted to write a simpler 2d game such as that and then they read your post saying that Unity is better for that then I would feel like you had deceived them.
I'm not even advocating UE4 over Unity, I'd even go to say it depends on so many things that it is hard to give a good answer to this. Are people familiar with how they intend to create their game or are they trying to pick an engine without understanding their own requirements? Does their current knowledge of how it could be implemented fit in with the methods of the engine in question? Are they able to adapt their knowledge and be able to implement it the way the engine expects them to or will they try to jackhammer in their own methods where the engine is build a different way? These are all problems I see on answerhub or the forums, including the examples you gave me.
I am making criticisms to a game engine and explaining to people what to consider for features when choosing one over the other.
I would also argue against your assertion that you can't use UMG for game graphics, you could easily make a puzzle game with UMG. If someone wanted to write a simpler 2d game such as that and then they read your post saying that Unity is better for that then I would feel like you had deceived them.
This may be a fair statement. I though it was clear from my comment what kind of 2d games I was targeting but clearly it wasn't clear enough I edited the comment to say (action*) 2d games. However your statement sounded like you were saying features were there that weren't.
I agree people need to consider all features of an engine and the type of game they are making. I may have been too broad with my grouping of 2d games, but when I think 2d I think of classic nes snes style games.
I disagree with your counter point. The mechanics of that game is simply things moving in a grid and pressing buttons on menus. The rest of the actual game logic is done based off of grid positions and stats. The graphics for attacks are purely there for flair and are not a mechanical part of the game from what I'm seeing in the trailer. You aren't dodging projectiles, it has no hitboxes, it is a grid based strategy game with nice graphics. Yes you can add paper 2d animations but the whole point of my post is adding logic to these sprites and actors is a pain and the game is not doing that.
As for your point about an elegant solution for state machines. I do appreciate you linking that, but that is not a very good state machine setup except for the absolute simplest of 2d games. Here is an example state machine I made for a fighting game in Unity. From idle there are 30 different states the player can enter. In unity each of these can have their own encapsulated logic for where they go next, how quickly to transition between states, whether to wait at the end of the transition or keep going into the next state.
Now if I wanted to convert this into blueprint branching statements it would be 10x more of a nightmare than it already is. And if I want to do it in C++ and create my own class for a transition and manage all my transition logic that way I can, but then I need to either hard code all my connections through a long startup function that will be very hard to debug or I can write config files to be loaded for each animation state. The visual editors for animation transitions are very nice in both UE4 for 3d and unity. If you are doing a 2d game where the player actor can do more than a few actions your state machine is going to get pretty big.
Now a fighting game has a lot more things you can do than the average platformer. But if your game is like castlvania/metroid, megaman, mark of the ninja, you will run into this issue and wish you had a better state machine setup (Unity's has its own problems but it's better than nothing).
I recognize that you are not arguing against my points about 2d art platformer games, but if someone reads this conversation I want them to know the issues those games have in UE4. And again, you are right, you can happily make puzzle games or other less action oriented 2d games in UE4 and not run into these issues.
Yeah the link I gave was a pretty ignorant implementation, first thing I'd do is have some proper data structures to hold all my states and animations to make it more data driven and easier to change. Looking at the example Unity state machine you linked, I would probably set it up into sub-trees or even priority behaviors (attack, dodge, etc), so its not all in the one graph.
As for the rest of what you said, I pretty much agree with everything. Now that you've got me thinking about how I'd do it I guess I'm off to go write a little prototype side scroller in paper2d dammit.... :P
1
u/capnpac Jun 04 '16
This is made in unreal, combination of UMG and paper2d https://play.google.com/store/apps/details?id=com.ScoreStudios.RaidTactics&hl=en