Guncat is our fist game created using Unreal Engine 4 (our games: http://shortbreakstudios.com and http://techland.pl). Basically we wanted to create something small but something new for us - 2d game using UE4 was something that we haven’t thought if it’s possible. Well… it’s possible
Game is Featured by Apple on AppStore.
First of all let me introduce technical features:
- Full 2D game (planes with textures, we haven’t used paper2d),
- 95MB build size, (no way of getting it smaller)
- Supports iOS and Android (not yet shipped on Android),
- Universal build,
- iPad 2 performance: 25-30 fps,
- Leaderboards, Achievements, In-Apps (both iOS and Android),
- Almost fully done in Blueprints,
- Used 4.5.1 and moved into 4.6 before submitting the game,
The game is fairly simple. You are a cat who want to sleep and birds are messing with you. Watch the trailer to have better understanding what the game is.
- UMG rocks. Basically if you learn how to use it you can create entire UI within 2 weeks. This is something really great because 80% of mobile games are UI based and you don’t need a programmer working on UI during whole production time,
- Blueprints rocks. Basically they are „Unreal Script” from Unreal Engine 3 but can be used without any programming skills. 95% of the game was created using only blueprints. Thanks to them our designer/tester/producer was able to help a lot during production,
- Tools. We have used Unreal Engine 3 before and there is a lot of tools that help you boost production time in Unreal Engine 4 as well. (cue editor, particle editor, shel mesh editor, materials etc)
- Paper2D isn’t working for us so well. Basically you can’t create full game using Paper2d yet. (4.5 version) We decided to move with 3d planes and textures as in Flappy Bird. This came out really well, but still it’s using Nvidia Physics which affect performance a lot,
- Without Paper2D you can’t properly do atlas texture animations using Materials. We needed to create our own functionality to animate textures in C++. All cat animations was created with this system. Thanks to the system we were able to create animations using blueprints - name them, chose which part of texture is used, chose frame time etc. It would be much more easier to use Paper2d which have this already,
So, it would be nice if you guys can focus on Paper2d and let us small games using Unreal Engine 4.
- Mobile backend is lacking. Basically what we have seen is that Epic isn’t focusing on Mobile that much, and this need to be changed if people want to chose UE4 as mobile engine instead of Unity.
*AdMob is only working in Android. We needed to implement our own backend for iOS.
*No support for other ad providers. Someone can say „Why Epic should implement that?” - why? because competition - Unity - have most of them already supported with plugins. We have implemented AdColony on both iOS and Android.
*No Analytics on mobile. Why you haven’t chosen Flurry or GameAnalytics? They are free and everyone can use them. Again - competition have them already as plugins.
*Achievements, micropayments, leaderboards - they aren’t implemented correctly on Android. We had to change some things in C++ to get them working,
Mobile performance on mid-devices. We have 2d game, unlit, small usage of collisions and it’s really hard to support mid-end devices like iPad2. On Android even on Nexus7 we had problems. Comparing to competition it’s a shame. Slate performance is REALLY bad, 2d collisions from Physics is bad as well.
Slate performance is really low. If you want to create inventory or have lot’s of draw calls you won’t be able to support mid-ends. Competition - Unity - have canvas batching and it’s working lot faster.
Collisions performance is lacking (moving actors with collisions). On mid-end devices if you have a lot of changing location and rotation with components that have collisions you will get 5 fps.
Clear Build size is to big. We needed to remove lot of content because of the binary size - 50MB with clean engine (32bit&64bit) comparing to 10MB from Unity. Another thing where competition is LOT better.
Blueprints cycling reference. We had a lot of them. Basically Epic should create HOW-TO change variables in blueprints, create dispachers etc - basically everyone can get this issue during production if working without C++ methodology (pure functions, functions to change values, without references) ← this was fixed in 4.7
There is small Android support in our opinion now. (it’s BETA support) Yes you can support some devices with unlit with stable fps but that’s it. We are doing everything to prepare Android version of the game messing a lot with source but we are sure that we will support something like 50% of the west market and 20% of east market. We will lose revenue.
So basically from my point of view Epic should invest for a mobile team to prepare UE4 like Unity is prepared. Basically if you use Unity (we have used it for 3 games so we know what we are talking about: Dead Stop, Heal Them All, The Collider) you will be sure that everything is working correctly, you have backend, you have performance, you can support low-ends and your build size is small so you will make revenue. Production time takes longer when using Unity compared to UE4.
We are working on mobile 3d game as well and I can add couple of thing here too:
- Online Subsystem for mobile is out of date. Basically you can’t create lan game. Matchmaking using both iOS or Android isn’t implemented yet so you can’t create online game based on game center for example,
- 3d performance is bad. You only can support hi-end devices even if you have simple materials. Even if you want to support mid-ends you need to create another binary because you don’t have tools to scale the graphics down, (there are device settings but even without post process, full resolution you won’t get 30fps because you need to change materials which can’t be configured different’y on mid-ends)
- Lighting is a problem. If you have static lighting + dynamic lighting (for example character or dynamic obstacles) you will have lot of problems to light them properly. DLE from UE3 is something that is critically missing in UE4,
- Creating procedural content is another thing that is messing with lights. If you want to create endless runner keep that in mind. It’s a pain to light everything properly. Both using Instanced Streaming Level and moving static lighted blueprints. I’ve seen endless runner example from Epic (on youtube) and I can assure you that this won’t be working on mobile with finished graphics and collisions,
- Updating movement component takes 60% of game thread, even Player Controller is updating Movement Component (and it doesn’t have any!) in our profiling. We are losing a lot of performance because of moving one player,
Conclusion: UE4 tools are better than Unity tools - production is faster because you can iterate faster. Unity is more prepared for mobile compared to UE4 so if you want to create small mobile game keep that in mind.
Basically Unity is production ready (and stable) for small games/mobile games and they are investing a lot now in AAA games to get as near as UE4 is. I have a feeling that Epic isn’t investing a lot for small games/mobile games to get close to Unity. That’s why I’m creating this post and try to trigger “creation of mobile division” at Epic games to make UE4 mobile friendly engine. You should invest more on Mobile. I don’t know how many people is working on mobile platform support but this value should be more than 50 people if you are thinking to be as good as Unity is.
If this post is to rough I’m sorry - I don’t want to be rude. I’m loving Unreal Engine and for my opinion it’s the best engine out there. You guys basically rock! …but I’m crying with mobile support guys, I’m just crying.
You can download the game for free here from AppStore: https://itunes.apple.com/ca/app/guncat/id925313304?mt=8 The whole project has been sent to Epic.