Search Unity

Red Herring's Multi-Level Shrubbery Creator

Discussion in 'Assets and Asset Store' started by duhprey, Nov 8, 2013.

  1. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166

    Find it on the: Asset Store

    Updated for 5.0






    Draw grass onto any surface.



      • Attach a component.
      • Add grass textures
      • Use the draw tools in Scene view to paint directly onto the scene.

    Features new to 1.8:



      • Updated UI
      • Coverage mapping to paint lots of grass by texture
      • Advanced wind as shown in the video above.

    Features new to 1.6:



      • API for dynamically changing the grass, here
      • Changed the defaults for shadows and "Ignore Grass Select"
      • The shadow options work with details.
      • ctrl-alt and ctrl-shift are more sensitive in the scene view.

    Features new to 1.4:



      • Tinting and wind
      • Controls for shadows
      • Rendering optimizations
      • UI Editing improvements.


    Here's what the interface looks like:


    Documentation on the interface is available here
    API Documentation is here


    Find it on the: Asset Store
     
    Last edited: Mar 26, 2015
  2. Sornelo

    Sornelo

    Joined:
    Dec 31, 2011
    Posts:
    33
    Looks nice... great work.
     
  3. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Here's another, this time showing the detail meshes painted onto the sphere and cylinder. $Screen-Shot-2013-11-10-at-4.10.00-PM.png

    And for further info here's a page detailing how to use it: http://www.tosos.com/unity-components/shrubbery/

    I'll be submitting to the asset store soon.
     
    Last edited: Nov 15, 2013
  4. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
  5. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    This is actually groovy as hell, plus I like the word shrubbery. If it's going for a decent price and you add some kinda distribution map support i'm there (Unless it's there and im missing it). By distribution maps i mean the obvious coverage and height sort of things but also angle would be great too, i'm thinking much like the vrayfur object in max/vray. The ability to paint it is excellent but if I could generate distributions say in world machine or even something crazy like an object's AO or whatever, then that would make it very cool indeed, perhaps just an rgba for coverage(r). height(b) and green and alpha for xy direction. There's probably more you can do, there may be arguments against it, not sure exactly but this with that would be a buy, next time the missus doest spend all the money on cosmetics.
     
  6. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Thanks for the input. That's an interesting idea we'll look into adding that. We've submitted to the asset store, waiting on approval, but we'll continue to make improvements and releasing updates once its up. It'll be $15.
     
  7. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    That price is more than worthwhile, i might stump up when the need particularly takes me (which might not be too far off), but yes being able to use maps would without doubt be a dealmaker, probs for a host of people i'd imagine
     
  8. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    This is great and i want it :)

    Your HD youtube videos are not uploaded the right way because they only show SD or even lower.
     
  9. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Looks very useful. Keeping my eye on this.
     
  10. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    Looking forward to this, posting here so I will be notified of update to the Asset Store status.
     
  11. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    Very interesting indeed. Bookmarked!
     
  12. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
  13. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Just to be clear that I understand what this does:

    I add grass texture images to the shrubbery object and then paint them over my objects and shrubbery creates the geometry?
     
  14. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    That's exactly it. It creates two triangles (one square) for each grass instance rotated randomly around the normal (the normal points based on how you set things.. see the video)

    Theres also a detail mesh version that essentially paints any mesh in the same way. Although it works with any mesh this is really meant for low poly, small meshes that aren't part of the game but add static details. Like small mushrooms growing in a cave, or piles of dust or something like that.

    And the point in either case is to allow you to paint lots of these details without impacting performance as much as possible.
     
  15. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    That sounds exactly what I need. I'm working on a fishing simulator and it's looking pretty bare with no grass at the moment.
     
  16. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    A new version is waiting approval in the asset store.

    The changes to this version are all reflected in the documentation here. They include:

    $GrassTinting.png

    Tinting and wind effects (as in normal terrain grass).

    Shadow controls to turn shadows on and off for grass instances.

    Several optimizations to the rendering.

    Some additional features in the editing UI to make editing easier.

    These changes will all be available in version 1.4 when it's approved.
     
  17. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Purchased this.

    Good update, I was going to ask about turning shadows off too.

    Another question I had was regarding swapping textures at run time. I have all the seasons in my game and currently swap textures to give Autumn colours or winter snow on trees and such.

    Is this possible or could I perhaps change the tinting at runtime?
     
  18. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Ah, cool thanks. That's a good point. I don't have an API for changing those things at runtime; it's all in the editor. So, I'll need to migrate it over and document it, that'll take me a little while, but it should be very possible.
     
  19. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    Great Asset.

    I really need most of the functionality in-game. Also being able to procedurally apply a random patch of grass to a mesh game object.
    Can you give an approximate time when the API will support run-time ?

    Cheers.
     
  20. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Well, probably a week or so for the first iteration. But I think it would need a few iterations to get the APIs right. Especially for real-time generation. I didn't really think that would be such a wanted feature :). Figured I could get to that sometime later.
     
    Last edited: Dec 8, 2013
  21. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    HI ! Thanks for developing this tool !
    This is a Amazing Asset !

    ___________

    Something that i searched and didn't had many infos about ...
    ANd excuse-me for asking ...

    But Im Just a Litle bit Worried about Performance ...

    - Can we actually Fill a WHole Level of Millions of this Grass Detail Meshes ?

    You Say all meshes are instances right ?
    - - Hows the mesh instance / pooling System working ?
    - - There is any LOD or Distance Oclusion Triggers ?

    Could This Asset be used to paint Scatter on Non terrain Geometries
    Other Stuffs Like Big To Medium Rocks, trees, Meshes with several lods .. etc ..

    ___


    This seams a wonderful development Tool !
    Especially if new versions are going to Have Ecosystems, Auto Generation of Large Amounts of Scatered zones...


    Im Thinking This Plugin in a year of development from now on could be for unity
    As is today the 3dsmax plugin Itoo Forest http://www.itoosoft.com/

    ----

    One way or other I will buy it Before Christmas !


    ... but i'm needing a Feature that this product still dont have,
    so i would like to make a litle question about it, if you please could answer :

    ------------------------------

    - Is it possible to integrate a SPLINES PATH Painting Tool ? SO the Scattered geometry Follows along a Path of Several splines : )

    - Here is how Should be its usage.
    - - Paint the Many Spline Paths against the scene geometry
    - - Apply a Geometry or severall geometries to scatter along Selected splines.

    ___________________

    This would grow for example IVY , or other Tree-Creeper bindweeds and all kinds of climbing flora On a Painting Paths Based Way ...

    For example we could paint Splines that Connect a Clif to other clif, and grow Suspended Roots ...
    - Then we could connect to those painted hanged splines and connect to those roots some creepers ...
    - - Then over those even paint some grass mushrooms ...

    __________

    A SPLINE PAINTING Tool Would help alot to Define Zones, and grow Geometry on Open Spline Paths / or closed Spline Zone based ...

    ...

    I know Must be not that much easy / but Would be wounder full To Have sooner a Tool like that !

    MILLION THANKS FOR LISTENING !


    ------------

    Happy Holidays ! And Bunch of sales ! Are All my Wishes !

    Best Regards !

    SOULS
     
  22. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Performance is not too bad. If I paint out a million or so grass instances on an empty scene my framerate goes to 30fps or so. Here's a webplayer with an earlier version: http://www.tosos.com/ShrubberyTest/ If I remember correctly there's only around 600,000 grass instances in that one.

    There is culling based on camera depth. There's a parameter for max distance, which when a particular grass cluster is outside that range its render component is disabled, I'm thinking about switching that to true distance instead of depth.

    There isn't LOD or instancing since the meshes are static, but as you edit it only creates mesh instances when a previous fills up. Essentially you're painting polygons into a mesh and then when it reaches the max (around 64k vertices in unity) then it creates a new instance to fill up. There's also an "Optimize Distributions" button which reclusters all the polygons so that they are as tightly clusters as possible, that way the disabling can be more efficient. For a million or so instances that clustering takes around a minute.

    Splines is an interesting idea. I'll look into that. Thanks for the suggestion.
     
  23. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Still fixing up a few things, but here's the API for what will be in the next version. http://www.tosos.com/unity_components/shrubbery/api/class_shrubbery.html

    Didn't take me as long as I thought. 1.6 should be posted to the store soon.

    Other changes:
    Changed the defaults for shadows and "Ignore Grass Select"
    The shadow options work with details.
    ctrl-alt and ctrl-shift are more sensitive in the scene view.
     
    Last edited: Dec 8, 2013
  24. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    i actually did end up getting your shrubbing toolkit anyways just on sheer impulse, and its going to come in very handy soonish! Havent actually used it yet though hah. But anyways, did you put any more thought into some of the things i thought would be pretty super for the whole thing - mainly a texture based method to create coverage. Its something thats become very relevant because i'm about to start using terrain composer a bunch and its got some very neat tools for creating coverage - typically though a thinger for placing objects based on coverage might only consider the position, or maybe the height, when i's actually quite like to use maps that can control position, size/height, leaning angle and maybe even variety of vegetation, i figure if you have one rgba texture with red and green for lean direction (x/y), blue for size and alpha being the coverage, with maybe the first 16 pixels of the image used for choosing varieties of shrubberies and shubbery related thingumabobs that you could have slots for. Terrain composer in all its wonder can generate these textures and it would be extremely useful.. particularly with grass i think being able to control how the grass leans and its leaning not all be the same, even having patterns reflecting the path of something that walked through the grass, contributes hugely to the realism of an area of grass

    Now ive bought it you dont have to add the feature to entice me, screwed myself there eh! But this would make this the best shubbery related thing concieved since monty python and the holy grail, and probably essential software for environment work

    Throwing down the gauntlet sir
     
  25. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Hmm, I haven't yet. Can you share the link for terrain composer? That would help figure out the details of making something like that work. Either way its on my todo list.
     
  26. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    You could make the maps in photoshop to be honest, terrain composer would just make it a lot easier to automate and control, here's the thread link, http://forum.unity3d.com/threads/15...-photorealistic-Unity-Terrain-in-just-minutes the videos give you an idea what it does, btw if you do a bunch of terrain work, that and the rtp terrain shader are both very nifty and go together well, recommended! Your tool does seem intended for more of a specific painted application but i think coverage maps would make it extremely useful, especially if you can make maps for any old uv mapped object, in which case not just terrains can benefit

    Another idea for painting in variation for the shrubbing process would be vertex colours, its always nice to provide options
     
  27. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    Guess I got a little carried away, but it does look cool, especially closer than this.
    I can still get 75-80 FPS with my Titan, but if I remove the component I get around 300 FPS.
    It's covered on all sides like this one and the bottom 6 feet or so is totally covered.
    I did optimize using the button, but guess one needs to be a bit more conservative?

    :)

    $obelisk.jpg

    Closer

    $obelisk_closer.jpg
     
    Last edited: Dec 8, 2013
  28. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    From this side I get almost 300 FPS when moving slowly and then when I stop it goes to about 100 FPS.

    $different_side.jpg
     
  29. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Thanks for posting those shots, nice texture :)

    I think I'll add more to the optimize docs. It tries to redistribute the grass into localized clusters. Then if you turn down the max distance it'll turn off each cluster that's outside that distance.

    A new container is made every 16,000 grass instances. So after you optimize you should see sphere gizmos, which will tell you how many clusters you have and approximately how many total grass instances. 5 spheres means ~80,000

    Anyway still trying to figure out what optimizations I can do, especially in the shader. But in the meantime use draw distance to control how much is drawn.
     
  30. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    Hey, yeah, thanks.
    I did turn off showing the sphere gizmos and forgot where the option is.
    I am using the distance settings but don't want it to look like there is no grass from the other side of the level,
    seems kind of funny if you can't tell at all that there is any foliage on the models until you get close to them.
    :)
     
  31. softwizz

    softwizz

    Joined:
    Mar 12, 2011
    Posts:
    793
    Can this be used to create topiary?
     
  32. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    You can definitely create topiary. Whether its the most efficient way to do it, versus tricky modeling... I'm not sure.
     
  33. ForceX

    ForceX

    Joined:
    Jun 22, 2010
    Posts:
    1,102
    Just saw this asset, Verry cool! You sir must be a master shrubber. I can tell by the assortment of shrubbery you offer. I am looking for some tall shrubbery to be placed behind my short shrubbery to create a leveled effect, and i believe this tool will do the job.

    Ni!!
     
  34. softwizz

    softwizz

    Joined:
    Mar 12, 2011
    Posts:
    793
    Shrubtastic!

    Maybe just create a base model and give it a coating of shrubbings to give the effect of topiary.
     
  35. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Because we're expanding the scope of this tool beyond what I originally anticipated, we're planning to raise the price. However, I wanted to give plenty of warning, so it won't be for at least another month.

    As far as potential features, it's not entirely certain. We're definitely going to upgrade the interface. We're also looking at ways to improve the wind, either accessing the Windzones or mimicking the behavior. And we're looking into how to implement requests here, coverage maps and splines.

    Anyway, it may be a little while before the next feature update comes through. I think I'll push through a small bugfix update either this weekend or the next.

    Please do keep the suggestions coming. We'll take those into account as we consider how we're expanding scope.

    Finally, if you can also take the time to rate the asset on the asset store, I would really appreciate it. And of course suggest to others! :) The more people using it the easier it is to prioritize the work.

    Thanks,
     
  36. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    No worries on taking time! I think when you start talking coverage maps (soz if i did nag a bit there), you're looking almost at a replacement system to unity's so, it'd be a bigdeal, anyways, keep it up, i love shrubberys
     
  37. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    I am glad to hear you are upgrading the interface.
    It's useful now but I'm sure you will improve it.
    I've tried copying/pasting the component values from one object to another and it doesn't seem to work,
    so that would be nice to be able to do since then you will have the same plants, grass etc. on the objects without having to reload them manually.
    Also, multi-selection of grass types would be nice, to do it in one fell swoop.
    Better view of the selected items in the interface would be nice, since it seems until you've actually used them, or selected away from the object,
    they are black images.
    Editing of things like size, variation and color is kind of painful right now, maybe be able to do this on all selected plant types at one time?
    You are right about wind needing some help, maybe some global wind control so you don't have to set it for every object you've painted separately.

    Brainstorming:
    Even putting them on multiple objects could be cool, though I don't know about all the implications that might arise from that.
    Maybe even applying to an object with some sort of mask might be cool, guess this has been mentioned.
    A separate interface you can dock would also be nice.

    Finding this tool quite useful to add some greater realism to my scenes.
    Glad you are ramping up (or at least continuing) the development!
    Thanks!

    :)

    Edits:
    Live editing of size on already painted items?
    Terrain support of course, so you can quickly put splotches of grass at the base of each tree.
     
    Last edited: Dec 25, 2013
  38. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    Is this supported in DX 11?
    I am getting this error:

    Material doesn't have a color property '_Color'
    UnityEditor.DockArea:OnGUI()

    And some of my objects are the characteristic "pink".
    Yeah, changing back to DX 9 fixed it.
    Will this be made DX 11 capable?
     
  39. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Hmm, that's surprising. I'll look into that.
     
  40. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    This package is growing into a very nice asset.

    I'm doing mostly in-game stuff. Would really love to buy the package.

    Can you give an approximate time frame for a Runtime API ?

    Cheers.
     
  41. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    A version of the runtime api is in there now. I'm not sure how well it maps to any use cases, I've just done a few simple tests, but if you try it and find you need different control then I can modify it.

    Heres the URL to The APIs docs: http://www.tosos.com/unity_components/shrubbery/api
     
  42. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Here's a taste of the new main feature we're adding.



    and

     
  43. Don-Gray

    Don-Gray

    Joined:
    Mar 18, 2009
    Posts:
    2,278
    Looks like it's another plugin Vertex Painter 2.
    Sorry for the confusion.
    Will have to investigate that now, thanks.
     
  44. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Is it me or does the second video not work? Does look great in the first one though! Reminds me of a screen space grass video i saw on youtube, probs not the same thing but to look that convincing is pretty impressive
     
  45. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    The second video is pretty short, so that may be part of the problem. I'll try to get a better quality one.

    This technique definitely isn't screen space. We're drawing thousands of grass textures and then warping and tinting them in the wind.

    Thanks for the update on dx11. If its some namespace collision I can look into renaming something on our end.
     
  46. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh yep I knew it wasnt, screen space grass is a pretty recent gpgpu technique for drawing grass that's going to be covered in an upcoming GPU Pro book, the fact you got your grass so convincingly behaving in light of it given you're using a much more traditional grass rendering system was impressive to me. Just in case you're interested and want a head start, the book will be out in March I think (And the source for the contents of all these books is available for free off the publishers website) and if you're fast you might have a product there (I haven't thought to tell anyone of it yet)

    this video is old but I think it encapsulates the effect http://www.youtube.com/watch?v=zjIM1xVS0XM

    I had a question, i do already own this and it's much to my dismay that all the stuff I have to do before I can make best use of it takes so long, and I might be asking a bit much in this particular instance but here goes. Especially given your addition of a very nice wind driven effect, i'd probably like to use this in places where the player might spend significant periods of time, as i'd be adding more particular detail there. However the amount of terrain i'm using overall that requires grass/trees/detail mesh placement is extremely large, and there are some sections where I imagine i'll be using Unity terrain grass, and some places made of shapes Unity terrain can't really stretch to where this would be very handy, and these places could also be extremely large (Which was why i requested based texture based placement).

    Are there any performance implications of using this to place so much grass and such, when compared to Unity terrain's handling of it?
     
  47. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Well I think so. I see two scenarios with big things.

    One is very large structures where you may have grass over wide regions of it. This is where the optimize distributions button comes in it clusters sections of the grass into locally contained regions (unless you have so little grass in total that doesn't make sense). Then it can disable these clusters based on camera distance. So when you're far off in one part of the structure grass on the other side isn't even drawn. At least if you set the max distance low enough.

    Another. what I think you describe, is where you've got large structures sporadically through the level. Each of these should have a separate shrubbery object. So the clustering doesn't matter as much since probably those objects are one cluster, but the max distance is still important here to disable drawing on that structure from far enough away.

    Its outside the scope of this tool, but I recommend having the texture on the structure use the same color as the grass where you place it. That way when youre far out you see the color but when you close in you see grass. This will be easier with The map for placing grass that was requested here

    One thing I'm not sure about for large structures is how much will be too much memory. I try to keep the memory down as much as I can, but The tradeoff here is usually going to be use more memory if it means more speed.
     
  48. TRIAX GAME STUDIOS

    TRIAX GAME STUDIOS

    Joined:
    Nov 27, 2013
    Posts:
    49
    Hi Duhprey ! I bought your Asset and its amazing ! Best buy "Money vs features" At is class in along time ... by far !

    Yo Look ! Sory to Ask ... But Man I miss here something ..
    I use nowadays Alot SkyShop and Shaderforge For Ibl Lightning In all Scene shaders ...

    I would reaaly need also Ibl Cubemap Support / So Skyshop Interaction with Shruberry Shaders WOuld be REAALY important Around here ... As in our Scenes all Everything Looks Well shiny and proper lit by the cubemaps, and Shruberry well gets dull .. I think also Sruberry would Benefict of Ibl Lightning for realism ...

    I think a Good way Would be allowing Sruberry to be used with Any Shaders !
    Or I dont know ... Integrate your Optimizations With Shaderforge ?
    Like Making 2 Shruberry Shaders in Shaderforge for :
    Shrubbery-Grass-Shadow.shader
    Shrubbery-Grass.shader
    Then Allow us to change WHatever we want in the node editor ...

    Or just i dont know : Allow us to use Any shader ! Like Putting the Shadows grass optimizations in a "extracode.Cginc" file that we would just then add a #include "Assets/path/to/your/shader.cginc" In any Shader we Want to use ... like ?​

    THANKS SO MUCH FOR THE AWESOME ASSET AND Cool Features Support .

    PS: That thing of Having a Bitmap Controlling Were the Grass is placed along the Uvs of Terrains mesh objects Toguether ( Scatering along many Selected objects ) WOuld be amazing to have as feature ! As well Have a Automatic "population scatering" With Many layers and masks ( like terraincomposer does but for custom objects ) ... as Well Tint The Scatered objects With a Color map ... Would make this Extension 10 Stars !
    Reaaly looking Forward to that ... ​

    My very Best Regards!

    Trish Dian / Triax Game Studios
     
    Last edited: Jan 19, 2014
  49. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Yes do all those things
     
  50. duhprey

    duhprey

    Joined:
    Nov 13, 2009
    Posts:
    166
    Updates, finally! Once 1.8 hits the asset store in a few days.

    Most of the changes can be seen in the image below, but to call them out:

    • The UI is updated.
    • The wind gusts (from the previous video) are in.
    • Coverage maps are in
    • There's continued improvement to editor performance.

    $ShrubberyEditor-FullView.png

    The documentation, here, is updated.

    We're considering this update a release candidate for 2.0 We'll be raising the price with 2.0 (next release) most likely to $30. If you're interested at all now is a good time to pick it up, but I think it'll be a week or two before we update that.
     
    Last edited: Feb 8, 2014
    hippocoder likes this.