Game Engine (Unity) vs Native for a gamified app

Hi,

While there is a lot of discussion on this topic all over the net, a lot of it is a few years old.
I am an Android developer. I have been tasked to build an app that is heavily gamified - so not a game per se, but a lot of animation, basic characters etc required.

We have quite a small team (I am the only developer) and I have been looking at Unity. So far I like what I see and I feel there are lot of aspects that Unity can simplify for us. Cross platform development is also a big plus. I need to interface with some native code to make use of the microphone, but it seems this should be fairly simple with the plugin system.

What are possible pitfalls I should look out for? While the app has a lot of "gamey" aspects - it is also quite heavily UI based and I am worried that Unity will make the UI part harder.

I would really appreciate advice from people who have worked on both sides...

Thanks!

Comments

  • I haven't used Unity for what you're thinking about (although I have used other game engines for similar jobs and done both native and game-engine-based apps that aren't games), but the trade-off is usually: if you want to make an app look like a native app (in terms of UI), or you want it to use a lot of low-level stuff, like GPS, camera, etc., then using a game engine will be like pulling teeth. However, if you want to make something that is very quick to port cross-platform and is going to predominantly look like a game, then game engines are your best bet.

    The best might be to talk to the client, explain the pros and cons, and show them some examples of what the differences are. Doing some quick investigations, to see what is possible is also a good idea. In the past we've also used hybrid approaches, where we've used a game engine for UI and a low-level layer for performant stuff like audio processing. The best option will largely depend on the specifics of your project. If you're able to share all the specifics, I can try give you a better indication of what I think would be best.
    Thanked by 1Elyaradine
  • Hi @slickorange

    One is able to access the microphone device from within Unity via scripting. provided you add the permission to the app.

    I have developed several games on Android using Unity3D and I can only speak from my experience, but here are some things to consider:

    Unity is scripted in C#, not Java (might require some time learning a new language).

    An Android app with only the Unity3D game engine, (i.e. no code, graphics or sounds) is around 8 mb.
    Our 2D games are around 13 - 15 mb each.

    - Unity is incredibly powerful and will require a lot of time to learn all the various aspects of working with the engine.

    What are the expected timelines? Have you considered outsourcing this project?
    If you PM more details on the project, I can potentially help you to build the app in Unity3D.
  • Thanks for the quick and quality replies guys!

    @francoisvn I have managed to quite easily get access to Android's AudioRecord class by creating a Android plugin. So it seems this is not too hard to do in Unity? While the app is quite heavily UI based it does not have to look like a native app, and thus does not need to use the native UI components. So if those two concerns are covered, I guess what you are saying is that a game engine like Unity is not a bad choice?
    So far the UI building feels clunky to me, but maybe it is just because I am so used to building UIs with HTML & XML.

    I can't give too much details yet - but the app will have a lot in common with some of the fitness tracking apps on the market, but even more gamified. (Narrative, animations, characters, upgrades)

    Thanks @Oneil_CT. Expected timelines is about 6 months.
    If we go with Unity I know I have a lot to learn! I worked with C# a few years ago. While I am not an expert, I can find my way around. (Syntax is so much like Java that it does not really bother me) That said, I know the language is just a very small part of what I need to learn - I assume most of the learning time will go into learning Unity..

    We are definitely considering getting in additional help. So as soon as I have more details on the direction we are taking I might get in touch.
  • Hi @slickorange. All the advice above is good, I would add that your options are not limited to Unity vs a natively built app. Honestly, Unity probably wouldn't be my first choice for a "normal" UI driven app for the reason you highlighted above-it's not designed primarily for UI so that can be clunky. Besides the size @Oneil_CT mentioned, it'll probably be heavier on the user's battery and startup will be a bit slower than strictly necessary.

    If you're looking for something that would allow you to write cross-platform in a paradigm more suited to traditional apps, consider a solution that compiles to native, like Xamarin using Forms or (playing to your strengths) a hybrid wrapper like Phonegap.
  • @mattbenic agreed your comments are spot on when making the decision between native, hybrid or Unity3D.

    @slickorange Unity3D is first and foremost a gaming engine. Physics, animations, sounds and particle-effects are just some of essential tools when making a game and Unity provides game developers with this and so much more. I will always choose Unity3D first, but that is because I choose to make games and not apps.

    I suppose the decision really comes down to whether the game development features of Unity will add value to what you are creating - the more gamified an app becomes, the more potential it has to become a game. Developing the gamification aspects of the app further into a fully fledged fitness game is not such a far fetched crazy idea!

    @slickorange I can't imagine your audio requirements to be anything beyond recording or playing back audio input, and as such, a plugin approach may work for you. Plugins introduce an added layer of communication chatter between the native platform and Unity, and in the case of audio, you may experience choppy sound or latency issues. As an added bonus of accessing the mic input from within Unity is that you benefit from the cross-platform, write once, run everywhere paradigm.

    In terms of the UI and text handling, Unity has come a long way in the last few releases. It would be a rather trivial task to style and animate it as a native Android app if need be. UI building in Unity is very different to HTML and XML and it will take some time to get used to it. Spawning prefabs of custom-built UI elements into static layouts at run-time, is a strategy that has worked well for me.

    In terms of coding, I had no problems transitioning from Java to C# as the syntax is very similar. You should be able to get a working prototype done in Unity without too much fuss, especially with all the great tutorials available on the Unity website.

    If you have any other questions or issues along the way, just shout ;)
    Neil
  • So coming in late to the party here, but I would say on the tech above unity is very nifty, but I think it may give you more pain than love in this sort of application.

    There is quite a difference between making serious games and gamification, and unity is very heavily focussed on making games as full games. There are some really nifty tools for making gamification apps that really will do a lot of the heavy lifting for you already that are all pretty much free. I guess it would depend on what you want to gamify and what your userbase looks like, but I would really advise you to look at Moodle (https://moodle.org/). It is a free LMS style system, but it has some epic drag and drop bases for doing the gamification side of your server here:
    https://www.paradisosolutions.com/blog/moodle-plugins-for-gamification/
    https://moodle.org/plugins/browse.php?list=set&id=88

    and then from there to create the native app I would really just hit the api and have it do all the workies for you:
    https://docs.moodle.org/dev/Core_APIs

    It is not that you can't use unity at all, but when you get all keen and intergrat-ey with other platforms remember that although unity works on C#, the actual .net capability you have with it is closer to like .net 3.5 so you will be limited in terms of what you can do, whereas something like android studio for making the actual android app is going to do so much of the work for you already in terms of your UI.

    Really just my 2c :)



    Thanked by 2mattbenic critic
Sign In or Register to comment.