Hi all! I’ve been working on a tool for Unity for a bit now. It’s called NodeScript, and it’s intended to make scripting for level design easier.
I’ve worked on a number of Unity projects at this point, and I kept running into the problem of wanting to hook up really simple triggers, behaviors, and interactions in a scene, but they were so specific to the level that it was ridiculous to write a whole script file for them. I would end up cluttering my Assets directory with stuff like BrokenRotatingPlatform.cs, ShopkeeperWaveAndBellOnEnter.cs, and BrokenBarrelCounter.cs. It always bothered me that I was writing code to do scene and level-specific stuff. It was also always fussy to set up (lots of dragging of specific objects into reference slots), especially in the case where I would end up writing these elaborate choreography scripts… Basically, setting up things that were quick and easy in older engines would always turn into a “thing” in Unity.
There are other things out there on the Asset Store, like PlayMaker, that address some of these problems, but they’re really full replacements for programming, which isn’t really what I wanted. I just wanted something like good ol’ Hammer had, only less jankey. What I wanted was something that would let level designers put in little hand-crafted interactive details, something that let me build up the character of the world. It needed to be fast to work with, saved in the scene file, flexible but not overly complex, and clear about the spatial connections that these scripts often have. I wanted something that was focused on being a helpful tool, but wasn’t so complicated that users could get themselves into real trouble. NodeScript is what I’m making towards that end.
I’ve got it functional at this point, and so far it does a pretty good job at quickly letting you do things like:
- Start with the scene black, wait until a sound is done playing, and then turning on player control and fading in
- Automatic doors when a character enters a trigger
- Changing properties of a material on a timer to make a light blink
- Play a door unlock animation when the player has dropped objects on several buttons
- Parent an object to another on collision
- Playing a sound on cue, and then firing a particle system once the sound is done playing
I’m posting this here because I was hoping to get some feedback into what other people would want out of something like this. Is there any level scripting you’re working on right now that’s more of a pain in the butt than it should be? What are the sorts of things you would want to do with something like this? Let me know so I can make them happen!
TL;DR: NodeScript is about level scripting. Quick and easy, stored in the scene, spatially oriented. Tell me how to make it better!
Here are some screenshots of what it looks like right now. It’s still pretty rough, and I do intend to visually polish it up, but I also want to keep the focus on utility over aesthetics.
I’ll be posting with more progress as time goes on, as well as questions. Hope to hear from you all!







