Guncat - small 2d f2p game for Mobile + UE4 Post Mortem

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 :slight_smile:

Trailer here:

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.

Production pros:

  • 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)

Production problems:

  • 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.

Hi Intoxicat,

Thanks for the feedback and congrats on shipping!

What things aren’t working for you in Paper2D /what features are you missing to be able to use it?

Cheers,
Michael Noland

Hi Michael,

We have used Paper2d with 4.5 and:

  • Collision performance was the same with planes + textures, (and collision performance was the most important thing for us)
  • There were issues with Collisions if using flip book animations,
  • There were issues with flip books animations - as well some features was missing,
  • Issues with Z order,

As far I know those were fixed, but we made decision to use planes + textures as in Tappy Chicken because you guys did that this way. I will dig around and let you know with more detail what was wrong and which features would help. We changed to planes really quick so can’t remember exactly now.

Congrats on shipping.

I love the concept, being a cat owner, I agree they do genuinely look like your cat in your trailer :).

Nice touch on the graphics too, impressive.

An interesting insight into Mobile gaming too. Thanks guys.

Thanks:)

Basically half of the game was created by a Designer who doesn’t have UE4 experience or programming experience. Blueprints will change how the thins is rolling. After this project we are trying to find the best way to work with blueprints and source. We found out that tick from blueprints takes some cpu so if you are aiming for low-ends you should add your math to c++ which isn’t so hard even for non-programmers.

Hoping to see more indie studios / people will ship their 2d games using UE4, and hoping it can be done without need of a technical programmer.

I’m really like to see something like BP and "only 2d part of engine"with 2d physics and other 2d only stuff for performance and final build size , so i can’t build 2d games because for now its impossible is so slow on low end device, unity go far ahead on 2d development

It can run smooth only if they use canvas instead of a deferred 3d renderer.

We have moved to 4.7 and our build size increased from 95MB to 195MB. This isn’t good.

Cool game. Congrats.

I’m happy to see you ran into so many issues.
Don’t take it the wrong way… but i’m hoping if more successful development teams are running into these issues Epic will address the mobile shortcomings sooner.

You might want to crack open the IPA and take a look to see what file(s) might be larger. You can also set the packaging option to not use pak files and then you’ll be able to see all of the cooked content files. That could narrow down what has gotten larger. Also, if you are comparing a development IPA against a shipping IPA, the development executables are much larger than the shipping ones.

Basically it is really weird guys because we made 107MB build just changing cooker shipping/development couple of times :slight_smile: (i don’t know if it depends on some tmp files or what) And there is an hidden option in iPhonePackager to compress build which finally created us 67MB build which is 30MB less than our first one…

Ya, that seems a little bizarre (the back and forth causing a lower size). I thought the compress option was exposed, but looking through there it is not. There is an option to compress content in the Project Launcher. That might also help you guys get a smaller IPA size. Basically, you can do the File|Package in the Project Launcher by creating a custom profile with the last step being Package (ignore all of the settings in the package stage). That would give you some finer control over what you are cooking as well.

Update on compression using iPhonePackager: after uploading 64MB build into App Store the build has been decompressed to 107MB so after upgrading to 4.7 our build size increased from 95MB to 107MB so we are below cellular download limit and basically we can’t remove more content/decrease quality for now.

  • we are compressing content and there is option for that in Launcher. Basically you have whole project and you can try it by yourself. It’s really hard to optimise build size if clean binary is around 60MB we have only 40MB for content for all devices if we want to have universal build and universal build is critical for Apple.

As for the cooker shipping/development weird issue - I think that it’s because some tmp files after upgrading, we will delete all content, binaries etc and just copy code/content to fresh project - this should help.

Ya, I am working on the executable size. It is possible to get it down to about 50MB for the universal binary by disabling some unneeded code and compiling for size over speed, but that still is not where I want it. I was able to identify some modules which are being included in shipping builds which have no business being there (they are specific to being able to debug the game via the editor/tools). However, I don’t expect to make any significant in-roads on the size for 4.8. 4.9 is a possibility though.

Totally understand. Unreal is really big and it will take time. Remember about Unity and their clean binary size basically you guys have a lot to do so crossed fingers here!

btw here you can grab 10 promo codes for Hellraid: The Escape - our previous Unreal based game.

XAFKJHN3YMXL
39WYEAHKWLTE
NTLTALK9HYK7
YFFNR7YPNNJW
EFPF4HEEL3PM
WT3M43A6374F-taken
PNJEP39FXNKY-taken
4LLPR43P3A99
7HL7MJR3NMX4-taken
EHY9P9P6HMK7-taken

You need a iPhone4s + or iPad2+ to run the game. Have fun!

Please let me know which promo code you grabbed so I can delete it from post.

I’m just chiming in to say I’ve been playing this game constantly since the day it came out. Great job!

Hi

Glad to see this game here. As Crocopede said, if the big teams are addressing the problems we are all experiencing in the mobile area, the chances it will all get resolved faster get higher :slight_smile:

One question: When do you think will you be ready to publish the Android version? Is the build size the only thing that is blocking you from publishing to Google Play or do other areas block you as well? The performance is surely an issue, but this is rather not a blocker…

I am currently finishing an Android title and have been fighting more or less the same issues, so it’s really interesting how do you manage this kind of issues at Techland.

Android version is working but performance is lacking really hard. (on CPU side - slate, collisions) We will support only small percentage of the market with 2d game. I’m not sure yet when it will come or if it will come.

The strange thing is that I am getting rather stable 60FPS on Sony Xperia M, using UMG, audio and around 120 objects with collisions that get turned on and off. Maybe it’s down to the fact that they are static but so far my game runs pretty ok in terms of performance. On first gen Nexus 7 I’m getting 30FPS so it’s not that bad. The thing that worries me at this point is that I do experience some performance drops after adding AdMob…

Maybe it’s the 2D collisions, not collisions in general, that are causing you the pain, as my simple 3D setup seems to work ok so far.