Search Unity

Another GUI for Unity? SQUID is coming to the asset store

Discussion in 'Assets and Asset Store' started by Chris-Herold, Nov 14, 2011.

?

Would you like to see Squid for Unity?

  1. Yes. I'm very interested!

    52.3%
  2. Not enough information to make a judgement

    11.6%
  3. I'm happy with EZGUI and oGUI

    5.2%
  4. I'm going to wait for Unity 3.5 GUI

    31.0%
  1. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Squid.Unity Open Beta announced: http://forum.unity3d.com/threads/159306-SQUID-Beta-GUI-System


    Hello fellow Unity nerds,

    i'm Chris, the developer of SQUID (http://www.ionstar.org/?p=111).

    Squid is an engine agnostic GUI library for realtime 2D/3D applications with a truckload of features.
    Squid is blazingly fast: it draws the whole GUI in a single draw call, if you merged your textures the right way.

    We have just successfully tested Squid running in Unity, on several platforms (Windows, Mac, IOS)
    and are now contemplating the idea to put it on the Asset store.

    Since Unity 3.5 is supposed to bring a completely new built-in GUI, but there is no more information about it since, i'm wondering how much interest there is in the community for another (really feature rich, fast and stable) GUI solution.

    Screenshot of Squid example skin and layout:



    A little feature overview:

    - Fully skinnable (you can even switch between different skins at runtime)
    - Scale9 texture slicing. (yes you can have pixel perfect round corners without distortion)
    - Retained mode (Unity GUI is immediate. Squid is retained. Think Windows.Forms)
    - Docking, Anchoring with Margin and Padding
    - Hierarchical opacity, Z-Ordering, Scissoring (no hardware scissor, no render state changes)
    - Custom mouse cursors (can be animated too)
    - Tooltips, Dropdowns, Modality Queue (modal dialogs and dropdowns)
    - Full control over rendering. Full control over scissoring and batching.
    - BBCode markup support including clickable links (Squid.Label)
    - Supports arbitrary control shapes via texture masking (8bit collision mask)
    - Fully interactable in 3D (slap a GUI on any mesh and interact with it)
    - Easily extendable. Squid was specifically designed to be an SDK. That means you can easily create your own custom controls.
    - built-in animation system using coroutines/fibers. same pattern as in unity. see code example below.

    What does retained mode mean?

    I noticed some confusion about the term "retained mode" on these forums and i think it's helpful to make this a bit clearer.
    Retained mode does not mean there is only 1 draw call. It also does not mean the GUI uses a "dirty rect" pattern to only draw recently changed parts of your GUI.

    Ok, so what is retained mode?

    The terms immediate and retained do NOT describe how the GUI is drawn, but how you interact with it in code. In an immediate system, you get immediate response from a button (bool result = GUI.Button). In a retained system, the button is created once and remains in the object model until chose to remove it. Interaction is handled via events and delegates.

    Even in an immediate system the actual drawing is deferred until the very end of your GUI instructions. This makes a lot of sense, because you still want to be able to batch, use software or hardware scissor and possibly crank everything into a single draw call.

    Restrictions:

    It is not possible to rotate GUI elements. In Squid, each and every GUI element is a rectangle, but don't fret, they can still have any shape you like. Defined by your textures and collision masking.

    Things to come:

    I'm happy to announce that Squid will come with a full WYSIWYG editor inside Unity!
    No external tools! You select your GameObject and start designing your GUI right in the scene view. More about this later - i'll provide some screenshots and maybe a video asap.

    A simplified code example:
    Code (csharp):
    1.  
    2. private Desktop MyDesktop;
    3. private Button MyButton;
    4.  
    5. void Start()
    6. {
    7.     MyButton  = new Button();
    8.     MyButton.Size = new Point(100, 20);
    9.     MyButton.Position = new Point (100, 100);
    10.     // MyButton.OnMouseClick += delegate(Control sender) { do something };
    11.  
    12.     MyDesktop  = new Desktop();
    13.     MyDesktop.Size = new Size(800, 600);
    14.     MyDesktop.Controls.Add(MyButton);
    15.  
    16.     // use animation (milliseconds)
    17.     MyButton.Animation.Size(new Point(100, 100), 500);
    18.  
    19.     // use custom animation routines
    20.     MyButton.Animation.Animate(IEnumerator myRoutine);
    21. }
    22.  
    23. void OnPostRender()
    24. {
    25.     MyDesktop.Update();
    26.     MyDesktop.Render();
    27.     // all rendering will now be routed through GuiRenderer.cs
    28.     // you dont have to touch a single line of code to integrate it.
    29. }
    30.  
    I would appreciate any type of feedback and be happy to answer all questions.
    Thanks for your time and opinions,
    Chris

    P.S.: My apologies to the iGUI folks. The poll should say "iGUI", not "oGUI".
     
    Last edited: Nov 21, 2012
  2. Gruhm

    Gruhm

    Joined:
    Sep 9, 2011
    Posts:
    80
    Looks interesting. Would love to see some more info on your site.
     
  3. techmage

    techmage

    Joined:
    Oct 31, 2009
    Posts:
    2,085
    Looks pretty awesome. I'm curious to know how does this integrate into Unity?

    It seems like you guys have written your own rendering system, that is cross-engine compatible. So I assume a Unity integration of this wouldn't be like your standard 3rd party Unity GUI plugin, where they typically create the UI elements as 3D Objects in the actual scene. But I assume something else? Would your plugin draw the UI elements to the framebuffer itself? Would it do this through the Graphics class in unity or something else?
     
  4. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    First off, thanks for your interest.

    "It seems like you guys have written your own rendering system, that is cross-engine compatible. "

    Squid doesn't render anything at all, it just notifies your engine to do so. The integration is done by implementing a single interface (ISquidRenderer). That renderer class then takes care of drawing things, scissoring, batching.


    "a Unity integration of this wouldn't be like your standard 3rd party Unity GUI plugin, where they typically create the UI elements as 3D Objects in the actual scene."

    That's correct. The GUI elements are not Components, but live outside the typical Unity code paradigm. If you've ever used something like WindowsForms, GTK or QT you will immediately feel comfortable with Squid.


    "Would your plugin draw the UI elements to the framebuffer itself? Would it do this through the Graphics class in unity or something else?"

    The current Unity renderer implementation uses GL quads, but it can be done via DrawMeshNow too. We'll probably offer both variations. Drawing to frame buffer AND to render surface both works the same way. You attach a very simple component to any camera and have it render.

    In practical terms:
    Squid.Unity consists of 4 files: GuiBatch.cs, GuiRenderer.cs, BitmapFont.cs and Squid.dll (107kb)
     
    Last edited: Nov 14, 2011
  5. recon

    recon

    Joined:
    Nov 28, 2009
    Posts:
    119
    Looks very promising. A couple of questions though.

    What kind of license would you distribute it with?
    What would it cost?
    Would there be an option to obtain the source (for a higher price)?
    Is there a way to map input manually to Squid or is that hidden from the programmer?

    At first glance it seems really awesome, but Im always a bit skeptical about third party closed source software.
     
  6. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    "What kind of license would you distribute it with?"
    Usually Squid requires a license per seat and product. However, we are considering a lighter license for Unity. Squid is already available free for non-commercial use, outside of Unity Asset Store. (http://www.ionstar.org/?page_id=10)

    "What would it cost?"
    Somewhere between 99$ and 199$ for the closed source license.

    "Would there be an option to obtain the source (for a higher price)?"
    Yes, this is possible. There is no standard source license, instead we talk to you and find the best deal for both sides.

    "Is there a way to map input manually to Squid or is that hidden from the programmer?"
    Absolutely yes. All input is transparently fed to Squid by you.
     
    Last edited: Nov 14, 2011
  7. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    How efficient is it in terms of garbage generation?
     
  8. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    There are no memory leaks in Squid.
    I'm not sure how else to answer this. :) - Can you elaborate or is this the answer you were looking for?
     
  9. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Well, "memory leaks" are pretty difficult to pull off in a managed environment. I'm sorry I wasn't clear, but I'm talking about memory allocation. Once the engine hits steady-state, how many bytes (if any) are allocated per frame. Lots of allocations lead to GC collections which cause pretty noticeable spikes on low-end hardware. The native unity 'OnGUI' implementation is absolutely horrific in this regard.
     
  10. Gigiwoo

    Gigiwoo

    Joined:
    Mar 16, 2011
    Posts:
    2,981
    Heya,

    Squid creates UI's from code? Really? I keep thinking we're past the days of building UI's by hand. Sure, I want to manipulate, control, and edit via code, but I don't want to build the whole UI by hand!

    "But, wait!" You say, 'We're building a WYSIWYG editor!"

    And what does it do under the covers? It builds code for you! Egads! That is so 90's - like, crank up some Nirvana and we can all design Grunge UI's. I want your editor to work directly in Unity - create real Unity objects that I can see and interact with. Don't play make-believe to my face and then spit out a bunch of C# classes behind my back.

    Gigi.
     
  11. Gigiwoo

    Gigiwoo

    Joined:
    Mar 16, 2011
    Posts:
    2,981
    Have you read the Unity license? Most Unity plugins are 1 seat = whole organization. You are crazy if you think you can charge per developer. Might want to learn more about your audience.

    You are hoping to charge extra for source code? LULZ. Good luck with that.

    Gigi.
     
  12. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    WTF are you talking about? Pretty much every WYSISWYG editor spits out "code," including the ones built in Unity.

    And whats wrong with charging for source code? There are plenty of Unity plugins that are closed source. LULZ.
     
  13. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Thanks for your response Gigi, i take all of that into consideration.

    "In Squid you create UI with code."
    I agree that it's more convenient to build a GUI visually and still be able to manipulate it from code.
    However, since coding is what you do in Unity all the time i think "UI from code" is still a very viable approach, with or without a visual editor.

    "And what does it do under the covers? It builds code for you! "
    The editor uses XML - code generation is an optional feature.
    You can chose to use either of them.

    " You are crazy if you think you can charge per developer."
    Sorry if it came across like we planned to apply the same license as stated on our webpage.
    We haven't decided anything license wise yet.
    So thanks for the feedback, it's much appreciated.


    "You are hoping to charge extra for source code?"
    I'm hoping that the API itself it totally sufficient and you won't need access to the source code.
    Yes, if it is absolutely necessary for you to have it, we do charge extra.
    And frankly, there is nothing weird about it.
     
    Last edited: Nov 14, 2011
  14. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,603
    you should just not post if you don't read the license and break law.
    the licenses sold on Asset Store are per developer as a matter of facts, there is no asset licensed 'per site' as you describe it unless illegally spread within the organization and I wish any dev a slow painfull going out of business who thinks piracy is fine if it is for him but not when it is against him, cause thats lame, broken ethics.
     
  15. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    A very valid concern, and i see where you're coming from with the OnGUI comment.
    There are only a handful of structs (Point, Rectangle, Margin, UVCoords) allocated per-control-per-frame.
    Not a single reference type is allocated per-frame, so there's nothing to worry about for the GC.
    Squid is very lightweight, a GUI will spend the most frametime in the renderer implementation (and that's where you decide what to allocate)

    I hope this answers your question.

    P.S.: In fact i'll be testing this and get back to you with numbers, possibly a blog. Thanks!
     
    Last edited: Nov 14, 2011
  16. Games-Foundry

    Games-Foundry

    Joined:
    May 19, 2011
    Posts:
    632
    This could be very interesting, but in reality I think most people may wait until 3.5 is released to see what the UT offering is. If for some reason the new 3.5 GUI lacks something, is inflexible, or buggy, then there is a market for what you are doing.

    I noticed you have Squid.dll. How does this fit with say the Mac deployment? Does this also mean you've implemented custom hardware cursor support (*praying*)? If you have, and 3.5 doesn't implement this, you've got a sale waiting right here. Or is it still frame-rate bound, and therefore prone to lag?

    Personally I prefer to code my GUI.

    Have you considered offering a functionally limited trial download so we can evaluate it before purchasing? I'm always nervous about using other people's code because quite often it sucks balls when you start using it seriously and realise its not been properly tested. Not only would this encourage me to evaluate, I'd probably pay more for it knowing it met our requirements.
     
  17. techmage

    techmage

    Joined:
    Oct 31, 2009
    Posts:
    2,085
    As other people have said, the biggest hold up for me is, what is coming from UT themselves?

    They have stated the new GUI system will be a retained mode system as well. There will be a visual editor, and it will all be easily animatable.

    Your offering seems to be one of the best I've seen but, it may not offer much over Unity's new builtin GUI system.
     
  18. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    As a fellow dev i completely understand what you're saying right there and getting feedback like this was the sole reason i opened this thread. Yes, we will offer a trial of some sort. I totally hear you.

    Squid.dll only uses System/System.Xml and is embedded as a Unity Asset - Mac and iOS deployment "just works".

    Hardware cursor - we cannot support it since Squid is only a black box.
    Squid doesn't know about any hardware or engine, so there's nothing to grab a cursor from.
    Instead you feed all input to Squid, so a laggy mouse position is something you'd have to address on the engine end, outside of Squid.

    Hm, that was a weird answer. Let me explain this further.
    Squid draws a cursor for you. You can use it or disable it. You also feed the position of the cursor to Squid. So no, Squid does not change the hardware cursor. (edit: everything i could explain form here is probably clear as day to you)


    Thanks again and keep the questions coming!
     
    Last edited: Nov 15, 2011
  19. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    5,004
    I would be interested if:

    1. It had a designer that was integrated into Unity, allowing easy editing of event code (like winforms, etc)
    2. Unity did not ship their GUI framework in 3.5, or if their new framework is worse than the old one.

    They've been making noise like the new GUI framework might not ship in 3.5... So who knows.
     
  20. recon

    recon

    Joined:
    Nov 28, 2009
    Posts:
    119
    See, theres a potential problem right there. By referencing System.Xml you include a part of the dot net framework that you don't want when you are making an iOS build. Although it only adds a couple of megabytes to do so, those megabytes might be extremely important when you are targeting iOS because you usually want to get below the 20 meg limit for apps that can be downloaded via the mobile network.

    By having access to the source code we could (Im guessing) easily replace the system xml with a more compact solution. Some people use TinyXml for example, I use my own code.
    And this is why I always want a complete source when I get a external plugin, because there will almost always be something, albeit small, that I want to change/improve myself.

    Now, I know how hard it can be to release the full source to something you've spent a lot of hard work on, but it's the most useful option for many of us. You did mention that it might be available for an extra fee, I just hope that it wouldn't be out of reach for us poor indie devs :p

    But other then that I will definitely try it once there is a Unity demo available! Looking forward to it :)
     
  21. bigkahuna

    bigkahuna

    Joined:
    Apr 30, 2006
    Posts:
    5,435
    That's a problem IMO.
     
  22. Gigiwoo

    Gigiwoo

    Joined:
    Mar 16, 2011
    Posts:
    2,981
    Are you sure? That doesn't seem correct to me. What about Vectrosity, EZGui, and Prime31's stuff? Aren't they all 'per organization'? Does being in the 'Asset Store' changes things? Not sure, but those 3 are very popular, are 'per organization', and include source.

    But you know what? I apologize for being so aggressive. Squid won't work for my teams, but I do hope they have success!

    Gigi.
     
    Last edited: Nov 15, 2011
  23. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    bigkahuna, could you elaborate this a bit?
    Did you have this as a specific requirement in projects, or is this just extrapolated?

    I'm asking because we could add it, i'm just not convinced it is worth the effort.
    Rotation isn't something you usually encounter in a user interface. Rotating content (animated texture), yes, but not rotating elements, like buttons, sliders, etc.

    I'd appreciate if you went into more detail with a little example. And thanks for the reply!
     
  24. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    We'd very much like to integrate the editor into Unity the exact same way you described.
    Although Unity offers excellent options to extend the Unity IDE, there's no way to control the scripting environment.
    For code-behind editing we need access to whatever scripting tool you chose, and since different people use different code tools (Scite, MonoDevelop, Notepad, Visual Studio, etc.) there's not a real chance we can account for all that.

    However, i haven't given up on it and even if the chances are slim, they still exist.
    So maybe with a little help from the Unity dev team i could make this happen.

    Thanks for the input.
     
  25. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Again the type of response i was looking for! Thanks!
    System.Xml has been a thorn in my eye and it's something i need to address for a Unity release.
     
    Last edited: Nov 15, 2011
  26. duke

    duke

    Joined:
    Jan 10, 2007
    Posts:
    763
    As far as i'm concerned, whoever makes it to market with a usable, intuitive and smart system first gets my money. EZGUI, imo, is a mess, and some of the other solutions follow incredibly odd conventions or aren't aimed at GUI work. I looked at Squid a while ago and liked the general concept, so if you get it out, i'm in!
     
  27. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Having let the poll settle for a while, we ended up with a consistent 30+%.
    While i personally hoped for a couple more opinions, i'm quite excited about the outcome so far.

    So here's the good news. We'll keep working on a Unity release and keep you updated here.
    We're hoping for a release in january, maybe february, depending on how the documentation progresses.

    On another note, we removed System.Xml completely.
    So now Squids one and only reference is System, which should make the iPhone people very happy.

    Thanks for your interest and participation!
     
  28. bigkahuna

    bigkahuna

    Joined:
    Apr 30, 2006
    Posts:
    5,435
    I use rotating gui objects all the time (dials, meters, etc.).
     
  29. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    I see. To be honest i tend to see this as a special case, rather than a base requirement to create user interfaces in general.
    However, this is something that is still doable, since you can mix Squid with your own drawing code.
     
  30. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    Its a shame I haven't seen this thread before but for what its worth, here are my comments:

    What I like:
    - Scale9
    - Docking, Anchoring with margin and padding
    - Tooltips
    - Modal windows

    What I dont like:
    - The weird integration in Unity. Code like MyDesktop.Update(); MyDesktop.Render(); sounds very weird for an Unity plugin since a Monobehaviour already does that and you should not bother the user with it. Just as an example Desktop should/could be a Monobehaviour or you create a GameObject in the constructor and do an AddComponent to it, you instantly save me from writing two extra lines of code.

    - GL class usage, you do realise this means its Unity Pro only?

    - No WYSIWYG editor (yet). Again, use Unity, don't fight it. Unity is very extendible and Unity people are used to have editors for plugins. This means iterating quickly instead of switch application, import some xml file and then run the game to find out how it looks.

    - No rotation

    Questions:
    - I haven't seen a mention about animating stuff. What do you support?
    - Do you have to create the texture atlasses yourself? Or can they be generated?

    I am a reasonable happy user of EZGUI. Its name is wrong since it isn't easy and it has waaay to many properties exposed in the editor but once you get the hang of it, you can develop a gui pretty fast.

    If you add the good things from EZGUI (ineditor placement and setup, auto generated atlasses, using invoke for events etc) to what you already have and change the workflow a bit so you use Unity instead of leaving it sideways, you definitly add value compared to other gui systems.
     
  31. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Thanks for your comments, Lukas.

    "Weird integration in Unity"
    Desktop cannot inherit MonoBehaviour, because it is engine agnostic. The baseclass in unknown to Squid.
    However, the code provided is exactly as simple as writing your own little MonoBehaviour (in fact it comes shipped with Squid.Unity)

    "Unity WYSIWYG integration"
    As much as i'd like to make this happen, it is very unlikely. We're not fighting Unity, believe me. If this were doable we'd offer it.
    The existing GUI editors for Unity all require you to run the game, instead of working in the Scene tab. And to be honest, i think this is really awkward and i'm not a fan of it.
    Note: Please educate me if i'm wrong about this.

    "Texture atlases"
    It's again something not included with Squid, but we can add it for the Unity release.
    This is already part of Squid.Editor.

    "Animating stuff"
    If i understand you correctly you're talking about stuff like easing size/positions/colors etc.?
    Yes you can animate whatever you like. We don't have built-in animation methods, but it's easy enough to add.

    "No rotation"
    You can rotate whole desktops, not single elements. You can also mix your own drawing with Squid, so yes - dials and such are possible.
    I have to admit that Squid is not your usual GameGui, but tries to cover a broader range of application development. Hence we designed it for speed, not for convenience or fancyness. We'll do our best to cater to Unity users tho. So again thanks for the feedback.

    "GL only Unity Pro"
    I think this is not true anymore. To the best of my knowledge GL works in the free license just fine.
    However, as i mentioned before we'll most probably offer a version using Graphics.DrawMeshNow too.
     
    Last edited: Nov 29, 2011
  32. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    No problem. Just to clarify, I am not here to be negative or bash you but to help you :)

    Okay, so there hasn't been made a branch for Squid in unity? (which I could understand)

    You are right and wrong ;) When you add a widget to the scene, you need to hit play so it creates a mesh with the correct uv's. But now thats created you can just move the widget around and size it how you like.

    This is how ezgui works. I believe the hit-play-toc-create-mesh step could be removed when you make proper use of [ExecuteInEditor].

    I agree with you that constantly hitting play and building atlasses is awkward and annoying.

    Sounds good

    Yes I am. Making a gui look polished you need a lot of tiny little easing effects here and there. Having the tools for this out the box would be a real big plus.

    Aha, just to push it a bit. Game devs need that fancyness! We need to entertain people and boring applications like excel are definitly not entertaining ;)

    To prevent any disappointments; check this comparison matrix http://unity3d.com/unity/licenses and look for the title "Low-Level Rendering Access". GL and Graphics are still Pro only.
     
  33. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    "Okay, so there hasn't been made a branch for Squid in unity? (which I could understand)"

    That's right, there is no Unity branch.
    And even if i made one, i can't just inherit MonoBehaviour (unless it is an interface, which i think it is not)

    "Aha, just to push it a bit. Game devs need that fancyness! We need to entertain people and boring applications like excel are definitly not entertaining"

    That's totally fine and valid. I agree rotation might be a necessity for some, but in general i'd say it's not really a requirement for a GUI system in the sense that rotation should be supported on every single control. Most of these things can be achieved with sprites.
    Still i let this sink in, so thanks.

    Thanks a ton for the heads up about GL, i wasn't really sure about this.I guess it's time for me to integrate Squid for free users too.

    I'll look more into the WYSIWYG part, but having spent quite some time with this already i'm not very optimistic.
    It's hard to elaborate, since you don't know what Squid.Editor does. Imagine the Forms designer in VisualStudio, with code-behind editing.
    This is pretty much what our tool does - and it's not as easy to pull this off in Unity as some might think. Unity is really nice when it comes to extending the IDE, but there are barriers. Barriers which i need to overcome before this is possible.

    Thanks again and no worries about negativity - i'm thankful for every single opinion, positive or negative.
     
  34. Arowx

    Arowx

    Joined:
    Nov 12, 2009
    Posts:
    7,231
    +1 WYSIWYG otherwise will struggle on with EZGUI.
     
  35. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    I think I'm a bit lost.

    It seems to me like you have a WYSIWYG editor, but its standalone. Is this correct?
     
  36. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Yes, that is correct.
     
  37. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Cool. I suspect most people should be comfortable using multiple programs to edit their content. I mean, at any given time, I have photoshop, blender, visual studio and unity open. As long as its integrated well with Unity, third-party executables are fairly 'transparent.'

    Whats the ETA on SQUID? It doesn't look like the GUI will make it into 3.5 from the sound of things, and I'm actually not that convinced by EZGUI. Currently, I'm running the very bare minimum UI I need to be able to continue my project. One of these days, I'm going to have to look into a more permanent solution :|
     
    Last edited: Nov 29, 2011
  38. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    @Herold
    Thanks for the answers. If you keep listening like this with your target audience, Squid for Unity will be great.

    As a side note, I have experience with building editor extentions and in no way I think a WYSIWYG editor inside Unity would be easy. A big hurdle when using an external editor would be if the created gui didn't got updated when I switch back to Unity. I think this could be overcome with doing some funky stuff with a custom assetimporter.

    My advice would be to get a stable version of Squid out of the door, keep updating, adding features and polishing it.
     
  39. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    I took your advice and ran with it.
    Using Couroutines, which Unity users will probably be accustomed to:

    Code (csharp):
    1.  
    2.  
    3. // change properties over time in milliseconds
    4. // different easing methods can be applied, default is linear
    5. control.Animation.Size(new Point(300, 200), 1000);
    6. control.Animation.Position(new Point(10, 10), 500);
    7. control.Animation.Opacity(0.3f, 250);
    8.  
    9. // can use custom animations
    10. control.Animation.Animate(WalkASquare(control));
    11.  
    12. // animations are implemented as IEnumerator
    13. private System.Collections.IEnumerator WalkASquare(Control control)
    14. {
    15.      yield return control.Animation.Position(new Point(10, 10), 1000);
    16.      yield return control.Animation.Position(new Point(1000, 10), 1000);
    17.      yield return control.Animation.Position(new Point(1000, 600), 1000);
    18.      yield return control.Animation.Position(new Point(10, 600), 1000);
    19. }
    20.  
    21.  
    Every control runs its own coroutine scheduler and you can throw anything at it.
    There are default methods implemented for various control properties, but you can implement your own coroutines easily (as shown above).
    I'll update the opening post accordingly.
     
    Last edited: Nov 30, 2011
  40. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    I'm hoping we can get this out during January.
    There's quite a bit of work to do, so i'm not making any promises.
     
  41. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    Thats fast, looks great :)
     
  42. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    I'm happy to announce that Squid will come with a designtime WYSIWYG editor right inside Unity!
    No clicking play - no custom tool. You select your gameObject and start designing your GUI in the scene view.

    More about this later - i'll provide some screenshots and maybe a video asap.
     
  43. mindlube

    mindlube

    Joined:
    Oct 3, 2008
    Posts:
    993
    Herold, great news about the wysiwyg editor. Looking forward to screen shots. Can you say how does Squid deal with multi-resolution GUIs? One thing I like about EZGUI is it's resolution independent (because the whole gui is made of gameobjects in the scene). It makes it easier to support lots of platforms and devices. However, it does not really support having multiple texture atlases like 1x, 2x resolution, for example.
     
  44. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Out of the box Squid does not provide resolution independency.
    What i mean by that is: there is no "UI Scale" like in WoW (or other games).
    It is something i have been thinking about, but it's low priority at best.

    However, using Docking and Anchoring you can create GUIs that resize/reposition intelligently based on available screen estate.
    At least in our projects this has proven to be sufficient and in some cases even preferable.

    Note: With a bit of extra code this is doable from the outside, without Squid support.
    Squid "only" gives you the very core of things, aka clipping, event handling and the like.
    A lot of features can be added without ever touching Squid itself.

    A note about textures/texture atlas:
    The UVs used in Squid are in texture space (0-1).
    So for example you can use a 256 skin texture on a mobile device and a 1024 on a desktop by just changing a filename.
     
    Last edited: Dec 3, 2011
  45. g2mediagroup

    g2mediagroup

    Joined:
    Jun 25, 2011
    Posts:
    98
    Hi Herold,

    The poll needs one more choice, will you purchase if comes before Unity 3.5 GUI ------>> OH, YEAH!!! If I can use on 1 project, before/if 3.5 system ships, it would pay for itself in the time and frustration savings ;)
     
  46. Fes

    Fes

    Joined:
    Dec 9, 2011
    Posts:
    2
    Our team is extremely dissatisfied with EZGui, and we're looking to replace it as quickly as possible. Unity's new offering is still too nebulous so we're writing it off until we have it in hand. We are definitely motivated buyers if this product does what we need.

    I like what I'm reading so far, especially the fact that it's currently free for non-commercial use. This, to me, suggests that you're confident the product withstands public scrutiny and people will be even more motivated to buy it after having evaluated it. I intend to investigate this forthwith.

    Before I get ahead of myself though, there's a few things I'm curious about as far as the Unity version goes:

    - First, I didn't see much mention of text capabilities. Our project absolutely requires bitmap font support including custom glyphs, preferably with kerning support. Also, how robust is text formatting, including things like single/multi-line text boxes, justification, word wrap, etc.

    - Second, while we don't make extensive use of rotation currently, we do use it in a couple places and its absence makes me nervous. If we were to add it ourselves as needed, how badly does that impact the abstractions provided by the API? Does custom rendering have any collateral impact on things like hit-testing, modality, etc. that could make things more complicated?

    - Third, somewhat related to the previous point. How heavy are "desktops"? Does each imply at least one draw call, or are they composable with other desktops? We have many "in scene" UI elements, and we'd need them to still batch. What is required to make that happen exactly?

    - Fourth, can I do it in code? Our project has a very complicated, dynamic UI and we find it easier to construct it in code with the coordinates provided by our UI designer. From the sound of it, this kit is friendly to constructing UIs in code, but it sounds like the editor is required for atlas generation. Is it viable to simply use the editor to create an atlas that can then be consumed by controls instantiated in code?

    - Fifth, scroll areas. We have many scrollable lists that contain more than just text, such as images and nested controls. Some of the lists are multi-select, others are single select. Is this a supported use case or will it require extensions? Do scrollable areas have good support for scroll bar customization? mouse wheel scrolling? How well do they work on touch devices?

    Sorry for the massive question dump, but our project is basically 90% UI and so we tend to hit every snag there is to hit. I"m sure some of these will be answered by just trying the public version, but any clarifications you have would be most appreciated.

    Thanks.
     
  47. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    Thanks for the detailed questions - i'm happy to answer them as good as possible.

    Q: "- First, I didn't see much mention of text capabilities. Our project absolutely requires bitmap font support including custom glyphs, preferably with kerning support."
    A: Squid uses custom bitmap fonts instead of Unity fonts. You have full access to the bitmap (Texture2D), the glyph data (TextAsset) and the implementation (SquidFont.cs). Basically you can use whatever data you want, we just give you a working standard. SquidFont uses Kerning.

    Q:"- Also, how robust is text formatting, including things like single/multi-line text boxes, justification, word wrap, etc."
    A: Text rendering is very robust imho

    Squid.Label:
    - WordWrap (respects hard line breaks)
    - Leading
    - TextAlign (TopLeft, TopCenter, TopRight, MiddleLeft, MiddleCenter, etc.)
    - some BBCode tags (font, color, url, br. img is planned)
    - multi/single line is autom. there is no toggle
    - AutoSize
    - mouse selection

    Squid.TextBox:
    - single line only
    - scrolling, mouse/key selection (ctrl/S***+arrow keys)
    - cut/copy/paste (no OS clipboard)
    - a multiline textbox is on the roadmap.

    Q: "If we were to add it ourselves as needed, how badly does that impact the abstractions provided by the API? Does custom rendering have any collateral impact on things like hit-testing, modality, etc. that could make things more complicated?"
    A: You can do custom rendering and hit-tests without breaking stuff as long as you use the SquidBatch methods for drawing. We'll provide code examples for this.

    Q: "Third, somewhat related to the previous point. How heavy are "desktops" ?"
    A: Think of a Desktop as your GUI canvas. Most of the time you will just use 1 desktop that fills your screen and handle you game gui inside of that. You can also switch between desktops whenever you want. Squid supports multiple simult. 2D and 3D desktops, but that's an advanced topic. Each desktop is drawn seperately, either to screen or to a texture (for 3d guis). So with optimal atlases every desktop is 1 draw call.

    Q:"- Fourth, can I do it in code?"
    A: Yes! You can do everything and the kitchen sink in code. There is no need to use the visual editor for anything. (incl. atlases)

    Q: "- Fifth, scroll areas. We have many scrollable lists that contain more than just text, such as images and nested controls. Some of the lists are multi-select, others are single select. Is this a supported use case or will it require extensions? Do scrollable areas have good support for scroll bar customization? mouse wheel scrolling? How well do they work on touch devices?."
    A: You can scroll in pixels/steps, scroll with mouse/keys/code, have the trackbar at fixed or autom. scale, show/hide scroll buttons, etc. - The input handling of this is really up to you. The scrollbar doesnt even scroll anything, it just gives you a value to change the position of anything you want. Think of it as a value slider. (HScrollbar is just a button | slider | button combination).
    Works fine on IOS, but we havent considered supporting multi-touch yet.

    Hope i covered everything!
     
    Last edited: Dec 9, 2011
  48. Fes

    Fes

    Joined:
    Dec 9, 2011
    Posts:
    2
    That was very thorough, thank you. That tipped my vote to "very interested" in the poll. Sounds like most of our needs are covered and then some. Being able to build atlases in code is awesome. I'm definitely eager to learn more about the "desktop" concept, especially the 3D ones. Will be keeping a very close eye on this for sure as it develops.
     
  49. charmandermon

    charmandermon

    Joined:
    Dec 4, 2011
    Posts:
    351
    add support for html tags (<sub><sup>) and ill buy... superscripts and subscripts are the only thing keeping my company from buying unity licenses.
     
  50. Chris-Herold

    Chris-Herold

    Joined:
    Nov 14, 2011
    Posts:
    91
    I'll give that some thought, thanks.
     
unityunity