Author Topic: Serious question -- NGUI 3.0?  (Read 9748 times)

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 278
  • -Receive: 1133
  • Posts: 21,902
  • Toronto, Canada
    • View Profile
Serious question -- NGUI 3.0?
« on: March 16, 2013, 10:27:42 AM »
I have a serious question for you guys and am curious what you think.

Throughout the development of NGUI I have been hamstrung by maintaining backwards compatibility. As I discovered new things to do something (better way to handle events being one of them as an example), I couldn't simply change NGUI as it would break backwards compatibility with existing projects. Because of this NGUI hasn't changed much at its core since a year ago, and the fact that the Free version of NGUI built in May of last year is still able to open projects made with the current version of NGUI is a testament to that.

In retrospect, Unity itself is stuck in a similar boat. When a question is raised about keeping something backwards compatible, or changing it to be much better, the former always wins.

With that said, as many of you know, my work at Unity involves the creation of the "next" UI system -- the followup to NGUI. In order for it to be as awesome as I can make it, I have to make some compromises, such as changing the event system (which in itself will ship separately in a future version of Unity). To give you one example of this, as you likely know one of the events NGUI sends out is the OnPress(bool isPressed) event. The new system sends OnPressEvent() and OnReleaseEvent() instead, which plays better with tools like Playmaker. The new event system also has additional events such as OnDragEnterEvent / OnDragExitEvent, which make it possible to react to the touch sliding off one button and onto another easily. With this event system also being native to Unity (it's built-in on the C++ side), it's also naturally a lot faster as well -- and it even plays well with the OnGUI buttons, in case someone still uses them for debugging.

Other examples of the changes: replacing the UISprite, UIFilledSprite, UISlicedSprite and UITiledSprite with a single sprite that will have an option for how the content is drawn, depth vs Z issue fix, complete replacement of the event notification system (onSubmit, on value changed, etc) with a drag & drop delegate solution, visual placement functionality (drag / rotate / scale widgets with the mouse instead of adjusting inspector properties), and more.

So they are all obviously better systems, but these improvements come at the obvious price of backwards compatibility. I can't simply change NGUI to make use of these changes because doing so will completely break backwards compatibility with all existing projects, and with 100,000+ developers using it today, that would obviously be... quite bad.

Another issue here is -- if I was to make such sweeping changes to NGUI and release NGUI 3.0, simply replacing the existing version in the Asset Store is not a good solution, as there is no way to download an older package when you need it, and I can't possibly force it on all the current customers. Likewise, #ifdefing out the new system is not a good approach either as it would double the code and complicate the $^&@ out of it -- something I am not willing to do. I also can't release it for free either, even verifying an existing NGUI purchases -- processing and verifying 100,000+ requests would mean an insane amount of time which I don't have.

So it would have to be a separate product that people can choose to buy.

And so comes my question. If I was to ditch the backwards compatibility out the window and create a version of NGUI now that would allow developers to easily migrate to the upcoming UI system when it's finally released later this year -- would you use it? And more importantly -- do you believe it would be a viable product for me to invest my free time into?

Personally, I am a bit hesitant about this and am leaning towards a "no", simply because some people will inevitably expect all this work to be done for free... but I am curious about what you guys think.

Yay or nay?

goat

  • Guest
Re: Serious question -- NGUI 3.0?
« Reply #1 on: March 16, 2013, 10:40:52 AM »
A colleague and I (he bought nGUI just today; I've had it a while) are just starting with nGUI and are interests are towards migrating to Unity GUI when it's ready.

One of the reasons we are using nGUI because knowing you are working there we are guessing that Unity GUI will be conceptually similar.

I can't speak for him but I wouldn't want to pay a large amount of money for a stop gap solution when Unity GUI is 'assumed' by many to be on a release timetable for this year.

Already, there is no version control in the Asset Store where I can delete obsolete packages I don't want any more. Going back to an older version is not as interesting although if Unity versioned the Asset Store and the Unity Program that would be a big deal.

Nicki

  • Global Moderator
  • Hero Member
  • *****
  • Thank You
  • -Given: 32
  • -Receive: 141
  • Posts: 1,763
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #2 on: March 16, 2013, 11:15:35 AM »
I'm having a thought. Couldn't you include both in a single asset store package?

Just have the customer only include one or the other or even have 3.0 as the exposed one and the other in a zip file next to it? This way NGUI moves forward, and for the few people who need backwards compatibility the whole 2.0 package is in there too. It's a bit of a hack of the asset store I suppose, but I can imagine people wanting both packages anyway.

Personally, I would want it to move forward and break compatibility, but that would screw over a lot of other folks, I'd wager.

Alternatively, make the existing asset store purchase move forward to 3.0 and make a new package (cheaper) for 2.0 perhaps. People who really really want the backwards compatibility either have the packages they already got downloaded or can buy access for a token amount - NGUI is already cheap, so it shouldn't be a huge issue.

It's too bad you can't "connect" two asset store bundles together, that would have made everything so much easier. :)


So in conclusion, my vote is a solid "maybe".

Seriously though, if it came down to either not doing it at all, or making a new NGUI 3.0 package, we would likely just get the 3.0 one. And my guess is that future users would also just want that one instead of the 2.0 one.

AeornFlippout

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 46
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #3 on: March 16, 2013, 11:58:24 AM »
Hey, first, thanks for being totally open about this and asking for the community's input!

For us, I think upgrading to a theoretical 3.0 version would depend largely on the cost and benefit to our project. The current version is serving our needs fairly well.

If 3.0 is going to largely reflect the new Unity UI (which I'm assuming we'll all be getting for free as Unity 4.0 owners) then we'd likely hold out for the "official" Unity version so we only have to go through the upgrading process once.

In an ideal world, you'd write some kind of one way, 2.0->3.0 converter, but I realize this would probably be a major undertaking.

Tiles

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 35
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #4 on: March 16, 2013, 12:36:03 PM »
The question is, why should i buy a NGui 3.0 when Unity itself comes in the nearer future with a probably free* GUI version which is most likely as powerful or even better than NGui, be it 2.0 or 3.0 ? My guess is that most of the paid gui solutions out there will have problems to survive against the inbuild solution.

* At least for the Pro version. You don`t have some insider informations about the inbuild GUI solution for the free Unity version, have you ? ;)

I personally would hate to fix or to rewrite my UI in my current project to fit it to NGui 3.0. I am happy that i got it working. Which would speak against a 3.0 buy. Other story when i start with a new UI. But here we are back at the competition issue. When there`s a commercial NGui 3.0 and a free inbuild solution that is as powerful as NGui, what do you think i will use?

Quote
Just have the customer only include one or the other or even have 3.0 as the exposed one and the other in a zip file next to it? This way NGUI moves forward, and for the few people who need backwards compatibility the whole 2.0 package is in there too. It's a bit of a hack of the asset store I suppose, but I can imagine people wanting both packages anyway.

+1
« Last Edit: March 16, 2013, 12:48:40 PM by Tiles »

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 278
  • -Receive: 1133
  • Posts: 21,902
  • Toronto, Canada
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #5 on: March 16, 2013, 12:49:26 PM »
Nothing has been decided in regards to making it a pro-only feature, and I don't intend to compete with myself (all 3 solutions will be my UI systems after all). The only purpose of NGUI 3.0 would be to give current devs the ability to make UIs that will migrate easier to the next UI system months before the built-in solution is released.

As I said personally I am hesitant about this to begin with. NGUI works, and the new system will work as well. The only question is whether there should be something in-between.

Tiles

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 35
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #6 on: March 16, 2013, 02:42:50 PM »
Honestly, i would spend the time in making the Unity internal system as good as possible. And check back to this issue when the new GUI is released. Then you can have a look at the demand. As told, when the Unity GUI is free, then i doubt that you will make money from NGui 3.0

Ugur

  • Jr. Member
  • **
  • Thank You
  • -Given: 0
  • -Receive: 1
  • Posts: 60
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #7 on: March 16, 2013, 03:26:27 PM »
I would like a new version which is or moves towards full compatibility or easy porting support to unity's new Ui system.
Besides making projects using (that) ngui version more future proof/ easier to port up it could also be useful for working with and on unity's new UI itself since people could early on create new widgets/ controls for it and one could also battle test features of the new UI system early on that way.
Now where i see the problem is the asset store itself which definitely should allow:
-a way to have several versions of a package available for download
-allow a package uploader to flag a new version as breaking change version so that then for users it wouldn't just show an "update" button but maybe rather something like a warning sign and a link to the product page where the breaking change is explained so people can then either download the old version or the breaking change version.
I would like it a lot if the asset store gets that added, for many packages, but if not feasable at all (bummer), then yeah, better do it as separate package (maybe if you can offer some kind of discount price for that for existing ngui owners)

Now regarding the new UI i already gave some feedback in other place on it, but yeah, just on a few points again:

-naming:
why:
OnDragEnterEvent / OnDragExitEvent
and not:
OnDragOver OnDragOut
?
More common naming and also the other event handlers like OnGUI, Update etc don't have "Event" postfix either

-support bubbling but with it turned off by default for buttons etc

-on event: -return event object (next to custom param object user can define) which contains senderinfo: senderGOName, senderObject

-scroll area with easy/automatic resize of clip area
also dragging working in it even where nested buttons are in it
setting up such a scroll area in ngui right now is rather cumbersome to me =)

<edit>-also: big bonus points for allowing effects one can do on text like shadow etc on all sprite types and also stack several on top (see flash's filter panel feature)

-more builtin sprite animation support would be very cool, too ;-)

Besides that all sounds good, looking forward to it and appreciate your openness and asking for feedback =)


ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 278
  • -Receive: 1133
  • Posts: 21,902
  • Toronto, Canada
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #8 on: March 16, 2013, 08:58:32 PM »
Event callbacks were designed to play nicely with all existing systems, and having the "Event" suffix clearly shows what that is. Plus inside you use Event.current to determine additional information, so it all ties together nicely.

Event bubbling is already supported by default. I can't talk much about it yet as it hasn't even reached the Unity Alpha release, let alone Beta.

Tiles

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 35
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #9 on: March 17, 2013, 04:02:40 AM »
Quote
I can't talk much about it yet as it hasn't even reached the Unity Alpha release, let alone Beta.

Time is the key here. When there´s a gap of let´s say a year or so then NGui 3.0 may make enough money to make profit. On the other hand, why buy 3.0 when i have 2.0?

Ideally i as a customer would see the 3.0 update as a free update. But i know that this will not happen. And that`s where i loose interest :)

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 278
  • -Receive: 1133
  • Posts: 21,902
  • Toronto, Canada
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #10 on: March 17, 2013, 08:30:45 AM »
Cool, thanks for the feedback guys. :)

marasto

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 23
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #11 on: March 17, 2013, 12:33:08 PM »
Hi ,

I think that when the built-in GUI will be available later this year who would like to use it (probably everyone in the end but mostly depend on how good it is) will start making new UI from scratch. So I don't think the 3.0 as an "helper" is the right approach, but this is my opinion.
Instead viewed as an improvement it could make sense but only if the gap in between 3.0 and the new built-in version is enough. There is no point in investing in a new stuff that will become "outdated" soon.
Making 3.0 need time, your time, and should be payed. No problem about it.. but because it will break the backward compatibility there should be enough new feature and improvement. So my opinion is MAYBE.

Version 2.x is already there and work. Maybe it is not perfect and need extra component to be built on top/side but it is ok. It still need a bit of extra stuff like Sliced/Tiled filled sprites, a better support for dynamic font, label that shrink to fit the box instead of being capped, auto sizing buttons with text, etc..

Could it make sense for you to continue invest in some upgrade to the 2.x as extra package that can be bought (or free for the PRO) ?


Buey

  • Guest
Re: Serious question -- NGUI 3.0?
« Reply #12 on: March 17, 2013, 04:01:42 PM »
Can you stick 3.0 into the existing NGUI as a zip file?  That way, if we want to use it, we can just extract it out and replace 2.x

I'm working on my first project so I can't really justify paying out of pocket for something that's going to come out in Unity core soon, and when NGUI 2.x works great as-is.

RyoheiTokimura

  • Guest
Re: Serious question -- NGUI 3.0?
« Reply #13 on: March 18, 2013, 07:56:07 AM »
I'll buy it.
I can't wait Unity new GUI sysytem.

adam718

  • Jr. Member
  • **
  • Thank You
  • -Given: 2
  • -Receive: 0
  • Posts: 60
    • View Profile
Re: Serious question -- NGUI 3.0?
« Reply #14 on: March 18, 2013, 10:04:37 AM »
Hi Aren.
I think, it depends on how fast it would be released.
I guess, New GUI will take at lease a year to be released (may be in Unity 4.5?)
and will take more time to be updated and improved as many users like NGUI ...

So if you plan to release in a month or two, then many users will like to upgrade it.(money doesn't matter, i think)
But it will be postponed then, NGUI users will focus on only keeping their old product with previous version and wait for New GUI.

So for a while, NGUI will be the first in Unity GUI System.

Regards Aren.
« Last Edit: March 18, 2013, 10:13:19 AM by adam718 »