develwoutacause’s avatardevelwoutacause’s Twitter Archive—№ 638

          1. I was complaining a bit about @unity3d earlier, but I wanted to call out some of the cool aspects I really liked about the engine while working on this project. @develwoutacause/1397049439655645184?s=20
        1. …in reply to @develwoutacause
          1. Being able to add [SerializeField] on almost any field and manipulate it in the editor is really simple and powerful. It's easy to understand and goes a long way. I especially like that I can make those fields (and lifecycle methods) private and they still work just fine!
      1. …in reply to @develwoutacause
        2. I expected to not like MonoBehaviour and that one would slowly grow to encompass most of my game logic, but that didn't happen. Thinking of them as a mixin, sometimes providing an API to be consumed by another behavior, I was able to make decent abstractions.
    1. …in reply to @develwoutacause
      None of my behaviors got super large or poorly abstracted without a whole lot of effort on my part. In the end, I think they worked out pretty well.
  1. …in reply to @develwoutacause
    3. ScriptableObject is really useful for abstracting raw data shared between objects. A lot of the design abstracted quite nicely and easily into ScriptableObjects.
    1. …in reply to @develwoutacause
      4. I really like #Unity's use of coroutines to pass time. Being able to yield return new WaitForSeconds(5); is a nice way of waiting without losing context. All local variables are still in scope.
      1. …in reply to @develwoutacause
        Without this, you'd have to manually track time passing and save relevant data to privates fields, the load them later to understand what you need to do. It gets out of hand really fast. Using coroutines here is a really clever and intuitive way of passing time.
        1. …in reply to @develwoutacause
          5. The component system is a pretty simple way of decentralizing game object state. You can easily add and get a particular component without adding a bunch of nonsense to *every* game object. This makes components much more specialized and easier to work with.
          1. …in reply to @develwoutacause
            6. I expected building a 2d game in a 3d tool to run into a bunch of weird edge cases such as 0-depth sprites having collision issues or being at the wrong z-value. But this didn't really happen. It mostly "just worked" and I often forgot that my game was running in a 3d space.
            1. …in reply to @develwoutacause
              7. #csharp's type reflection is really powerful to enable APIs like GetComponent<Type>(). This makes the type system much more intuitive and easy to work with. I didn't feel like I needed many awkward casts or that I was fighting the compiler at all.
              1. …in reply to @develwoutacause
                Just want to make sure we celebrate and learn from the positive aspects of #Unity and the hard work that went into it!