I've been working with Facebook horizon for the past week or so. I just wanted to take a moment to talk about some frustrations and share some tips.
Improvements I'd like to see:
- Events are difficult to work with. The current approach is not sufficient. Events are sometimes missing which can easily lead to errors and frustration. The drop-down approach also becomes very awkward when your world has a lot of custom events. Instead, there should be a pop-up of some sort that allows access to all known events.
- Tags should be selectable from a list or dialog.
- Objects should be able to be named. It would satisfy my desire for clarity when adding object references.
- Accessing the "player" variable from the script should be easy.
- I should be able to mark objects as "owned" by a player. Or maybe allow objects to have multiple tags and allow the player to be a tag on an object.
- Objects should be able to have their own variables. For instance if I create a single script that destroys any object that touches it's trigger and awards points to the player, it would be nice to allow those points to differ depending on the object that is being destroyed.
- It would be useful to have a "contains" event for triggers which would fire every frame an object is inside of the trigger. This would be useful for applying a constant speed for instance (think conveyor belt or tractor beam)
- Trigger or collision events should be able to happen for both players and objects at the same time, not just one.
- A generic "timer" object that fires every x seconds. It is possible to do now, but it would be simpler to just have a timer object or event.
- An "advanced" editor or something that allows access from outside of VR. I'd like to be able to type scripts on my keyboard. I find the "blocks" approach very limiting.
- Textures are completely absent
- Prefabs are missing. I suppose you could create objects below the world that you could then duplicate and pull in to your world, but this feels wrong.
- Complex shapes. I should be able to build complicated objects. Maybe I can build it with the simple shapes and then click a button to remove the vertexes that aren't shown. I know I can group objects together, but this isn't quite the same.
- Ability to import scripts, textures, complex objects, sounds, music, from the web.
- Revision control! I know I can undo but that isn't the same.
- I'd like to be able to explore the stock sounds outside of VR.
- If your world seems to have stopped working or seems completely broken and you don't know why, try stopping your world, resetting it, then playing it again.
- If you want to mimic the behavior of a conveyor belt, you can add a script to an object that listens to the "collision enter" event. Then you add a "move to" action on the object to a target trigger that exists at the end of the conveyor.
- The tutorials are an excellent starting point for a variety of ideas you might have.
- I'm embarrassed to say it took me too long to realize if you want to switch worlds you need to access the menu while you are previewing the current world. I believe the first tutorial mentioned this at the end, but I glossed over it.
- Practice! Create objects and scripts to do what you want to do. Then start over in a spot next to your work area and do it again. Maybe try a different approach. Keep doing this until you are confident you have the best approach and can replicate your idea quickly and easily.