Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

Is Unity the best choice for my project?

Discussion in 'General Discussion' started by theweresloth, Mar 24, 2015.

?

Best option(s) for this project?

  1. Unity

    100.0%
  2. Unreal

    0 vote(s)
    0.0%
  3. Xamarin

    0 vote(s)
    0.0%
  4. Appcelerator

    0 vote(s)
    0.0%
  5. Other... (post please)

    0 vote(s)
    0.0%
Multiple votes are allowed.
  1. theweresloth

    theweresloth

    Joined:
    Jul 23, 2012
    Posts:
    13
    My next project will be about 2/3 application 1/3 game. The feature list requires:

    - App-like GUI support ( this seems to be available through "New UI Widgets" )
    - User definable GUI ( so the ability to dynamically create and arrange the GUI, not a problem as far as I know )
    - Ability to save and share GUI templates with other users (I'm guessing some JSON magic would work here)
    - Ability for user to import images which would then be added to a 2D scene/map ( this would also need to be shared with connected users )
    - Cross platform multiplayer networking between Android, iOS, Windows & Mac.

    From my research so far, it seems like Unity should be able to do all these things (in some cases with a little help from the Asset store), and I have some experience now with Unity, so it's my 1st choice. But if there is another environment that might work better ( Xamarin has my attention for example ) I'd love to hear opinions. Also thoughts on good Unity assets that could make development easier would be great.

    Oh, and as far as my coding skill is concerned, I'm an intermediate level programmer that has dabbled in several languages, though I hate working with C-based languages (so Unreal has an uphill battle to win my vote).
     
    Last edited: Mar 24, 2015
  2. cod3r

    cod3r

    Joined:
    Sep 19, 2012
    Posts:
    91
    Unity is not the best choice for a GUI driven application. Its a great choice for a game that has GUI elements though.

    Hard to tell what you are doing with your description.

    Spend a little time on the official tutorials. Once you work through them you'll be able to decide for yourself.
     
    zombiegorilla and angrypenguin like this.
  3. theweresloth

    theweresloth

    Joined:
    Jul 23, 2012
    Posts:
    13
    Yeah, I guess a bit more info is a good idea. It's a companion app for paper & pencil RPG's. So the players and the game master will sharing data for die rolls and map data (player positions, etc.), and the community will be sharing character sheet templates and game maps (user generated).
     
  4. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    Since it involves little in the way of animated, real-time graphics or real-time user input I wouldn't think Unity is a good solution. It can do the job, but it'll have a lot of overheads.

    Edit: A couple of prior discussions can be found here and here.
     
  5. theweresloth

    theweresloth

    Joined:
    Jul 23, 2012
    Posts:
    13
    Great discussions! Thanks!
     
    angrypenguin likes this.
  6. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    Unity can be used for practically anything. I remember reading an article where this one guy made a DJ app using Unity (with the old UI too) that ran his tracks at the club - and on top of that he integrated it to control the lighting at the club too.

    Is it more or less efficient for things outside of interactive entertainment? I honestly can't say. What I can tell you is that people HAVE done it.

    The sky is the limit.
     
  7. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,150
    Less efficient.
     
    angrypenguin and knr_ like this.
  8. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    Nice. I wonder how that could change with the switch over to IL2CPP eventually.

    EDIT: I said that with the understanding that there would be a game loop. ;)

    EDIT #2: In building a game with Unity, we actually use MonoBehaviours very little too - only when necessary, and I think we only have one MonoBehaviour class that actually uses the Update() function. Most things go through singleton's and events that are in no way associated with the MonoBehaviour class. I can see where AA's coming from, but I can also see how one could get a fair amount of that performance back in Unity simply by how they decide to structure their code.
     
  9. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Every one is doing something like IL2CPP that is optimised for their own platforms. Either way it won't do much.

    As always in performance optimisation, the choice of algorithm makes more of a difference the the execution of the algorithm. As you rightly point out Unity is built on the game loop. This means it will have expensive overheads for any application that does not require this loop.
     
  10. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    Not if you are not using the game loop.
     
  11. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,150
    You're still using the game loop.
     
  12. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    There are certain functions in MonoBehaviours that are called from the game loop - others are not. If you avoid those and build your infrastructure outside of that, then you are not using the game loop - well, not in any significant way that would make Unity less efficient anyways.

    Still, the UI would be using it anyways for rendering, so yes, there would be some performance loss there either way assuming the UI rendering is slow.
     
    Last edited: Mar 24, 2015
  13. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    If your application naturally fits the game loop the go ahead with Unity. It's possibly the best tool on the market for this.

    However you are kidding yourself if you think you can avoid the game loop in Unity. No matter what you do Unity will still search for input, process and render every frame.
     
  14. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    You can't avoid it completely, but you can avoid it enough to make it negligible.

    Considering that every operating system I know polls for input, receives interrupts when the state of any input changes and is handled by any applications currently running, this is a moot point by saying Unity's game loop handles those things. If someone was going to use a different technology the operating system STILL would poll, STILL be interrupted, STILL send out events when its interrupted that applications will receive.

    Regarding rendering... considering operating systems process and render to screen at the Hz that the display is set to (whether it is a mobile device or a desktop device), that seems to be a moot point too. Even console applications render to screen 60-120 (in some cases 240) times a second - just not through OpenGL or DirectX usually.
     
    Last edited: Mar 24, 2015
    ramand likes this.
  15. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    In fact, that our rule #1 lol.
     
  16. knr_

    knr_

    Joined:
    Nov 17, 2012
    Posts:
    258
    But anyways, as far as it being the best choice (theweresloth)? Probably not.
     
  17. theweresloth

    theweresloth

    Joined:
    Jul 23, 2012
    Posts:
    13
    any thoughts on Kivy? I enjoy Python, but it looks like Kivy might not be the best supported platform
     
  18. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    That level of pixel pushing isn't at all the same as what a 3D engine calls "rendering", though. And typical GUI-oriented rendering generally works on some kind of invalidation system - only things that change get re-rendered, and only when they change. Game engines are optimised for a different use case, though, so they re-render everything at fixed intervals without caring if it's changed or not.

    Whether or not you choose to use particular MonoBehaviour methods doesn't alter the fundamentals of how the engine works.
     
    Ryiah and Kiwasi like this.