We have to deal with complex entity systems quite often in Goldsource. Until recently, I used to start working on them directly in Hammer without any preparation beforehand.
However, as a computing student, we've been taught Oriented Programming and the analysis and design process. Basically, it's about finding requirements for a software and designing the code before actually starting coding it. Naturally, I wondered: why not try the same for Goldsource entities systems? I always struggled to make complex entity systems and the method I used to use makes the system a real pain to build, to understand and to maintain, so it sound like a good idea.
So here it is, I tried to design the entity system of an elevator using the software Visual Paradigm with an object diagram. Each type of entity is a class and each entity is an object. Targets are represented with dotted arrows.
https://onedrive.live.com/redir?resid=A52162CFA2ECDDBB!28411&authkey=!AN3aD6RykHcT_i8&v=3&ithint=photo%2cjpgClassy, isn't it? The only problem is: for some unknown reasons, it doesn't work… -_- But I'm working on it!
They made us use it to generate Java code templates for a uni course I did. In the end it would have been 10 times faster to just write the damn code, but the tutor insisted using the diagramming tool was better somehow. Academic type people are strange.
It will deceive you, but Visual Paradigm is still the same, there's at least 3 rows of tabs for each panel, opening each another panel. I'm not sure it's a bad UI. You just have to know where are the options of interest for you, and you can be sure to see every possible options available in one place.
However, you can also sometimes made a right click and make changes without opening a panel, it's quite rare though.
I still don't write them though.
Now, I don't code much out of class since I'm focusing on the art and design side of things, but I find it much easier to just simply describe how it works from a high-level perspective on paper in plain english, then make a step-by-step comment skeleton of what goes where before diving right into the code.
@2muchvideogames Now that you mentioned it, I feel like my elevator system is quite too much complicated! But there's actually a reason for that. I made it so any new floor possibly added later do not interfere with the previous floors. In other words, it doesn't need to know what the other floors are and at which floor the elevator is, nor if the elevator is moving or not.
And the map itself.
There was parts 1 to 7 which he explained how the whole system worked but due to the limit of size of his hoster he had to remove them.
His elevator is quite classy, I may peek in the rmf a little if I'm not too much pretentious! ^_^