Unity 2017 Changelist

We do a thing in Rust’s subreddit where we get people to post their ideal changelog.

I find these threads a lot more useful than reading people’s dissertations on what they want changed. They’re brief, skimmable, and they’re not full of justifications, speculation and predictions.

So here’s my changelist for Unity in 2017.

  • Removed deprecated component accessors on Component
  • Reduced standalone memory usage
  • Added ComponentRef (automatically fills with the sibling component)
  • Allowed resources folder to be over 2GB without using bundles
  • Editor Dark Skin is the only skin
  • Steam is treated as a platform (includes Steam SDK)
  • Cloudbuild can upload to Steam
  • Added GameObject.Spawn which spawns a prefab but doesn’t call Awake/Start/OnEnable until you call go.Instantiate() (allows setting up before actual creation)
  • Added PrefabPool
  • Added ParticleSystem.AutomaticallyRecycle bool (deletes gameobject when particle finishes)
  • Layer renamed to RenderLayer
  • Added PhysicsLayer
  • RenderLayer/PhysicsLayers are a bitfield, objects can be in multiple layers
  • Up to 64 RenderLayer/PhysicsLayers
  • Tags are bitfields, objects can have multiple tags
  • Added Sound.Play( clip, position, volume, pitch, etc )
  • Built in components aren’t sealed, are derivable, default editor still works
  • Up to 64 tags
  • Changing platforms no longer requires reimporting every asset
  • Added search/filter to console
  • Console uses monospaced font
  • Can click on stack trace in console to jump to that file/line
  • Added back/forward buttons to project folder
  • Pressing mouse 4/5 navigates project folder history (like a browser)
  • Common functions are now thread safe
  • Editor will detect and break out of infinite loops
  • Profiler shows breakdown of visible meshes, vertices per mesh
  • ParticleSystem can be placed on overlay canvas
  • Replaced Mono with NETCore
  • Getting Object.name no longer allocates memory
  • Added dynamic occlusion culling
  • Special hook functions like Update, Awake, Start are virtuals instead of magic
  • Folders can be marked to compile to dll (compile times, modularity)
  • Removed Javascript support
  • Editor no longer freezes when changing files in a huge project
  • Added Physics.OverlapFrustum
  • Can serialize components/scriptable objects at runtime (saving, loading, configs)
  • Can load models, animations, shaders at runtime
  • Added loopback mode to UNet for singleplayer games
  • UNet Loopback mode can be used to record/save/play demos
  • UNet Loopback can be used for saving, loading
  • Added VoIP support to UNet
  • UNet transform sync interpolation works (without rigidbody)
  • Added CSS like styles to UnityUI elements (allowing you to change your games entire UI style from one place)
  • Headless/Console/Server is treated as a platform
  • Added automatic LOD generation
  • Editor child windows don’t disappear when alt tabbed
  • Terrain.Max Mesh Trees works again
  • Added version number on editor icon

5 thoughts on “Unity 2017 Changelist

  1. Amen. Unity could really do with dropping some of its dodgy design decisions from the past. Sadly legacy support is still a big deal for them.

  2. Ha, I’ve learned Unity over the past 6 months or so and I can definitely sympathize with this list.

    ComponentRef sounds nifty. It’s easy enough to automate in Awake() but still kinda a pain. You could probably do it yourself wiih your own MonoBehaviour subclass and a SelfRefAttribute or something (you’d have to make it).

    Steam can’t really be a platform since you still have to build separately for Windows/Mac/Linux but they could include build options to add Steam support in there.

    GameObject.Spawn makes sense since you’re just duplicating what the editor already does.

    I think threading problems can be attributed to Unity encouraging coroutines over threads. Though it’s not really the same and it would be nice if I could do some stuff from other threads instead of having to awkwardly do cross-thread marshalling using Update.

    Editor definitely needs to kill inifinite loops. Yes, it’s my fault I forgot to change the i++ in that copied for loop to j++, but do I really need to kill and restart the editor?

    NETCore is still a bit young to replace Mono here I think. You’d need to support every Unity platform which NETCore does not, yet. But otherwise I think it is definitely mature enough to work as a replacement as far as the framework functionality (unless you really need System.Drawing, I think). I would definitely like to see Unity contribute to getting NETCore ported to more platforms.

    And yes for the virtual functions! Magic is dumb. They’re probably using reflection or something internally. Even IPointer*Handler knows what’s up and doesn’t do magic. So we should have virtual functions or IStart/IAwake/IUpdate/etc though that would be a bigger pain.

    When I was just starting out with Unity I had someone ask me if we could port browser-based JavaScript code to Unity because UnityScript. Took me all of five seconds RTFM to figure out it wasn’t really JavaScript and would never work (the JS code I was asked to port used a lot of HTML manipulation and eval() and other browsery functions). Apparently this is a widespread misconception that Unity supports JavaScript.

    UI styles would be cool for theming. But it’s something you could make a system for yourself. Make scripts to define additional properties for each UI element, attach scripts to the UI elements, add a script onto the canvas which grabs all those scripts and can apply themes based on those properties, a theme definition, and whatever else is needed..

    Headless again wouldn’t be a platform, but it could be implemented as build options for existing platforms.

    The editor child windows are weird, they should be made standard OS windows so they appear on the taskbar and can be individually minimized and so forth. Probably the reason why they disappear is to hide some glitch caused by doing their own thing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s