rey meustrus
Sponsor
I think that if you're dealing with objects, you should use OOP. Especially with your _Create() and _Update() and any other calls you make. With that underscoring pattern you need to be very careful you don't do something like make a _Collision_Create() function that introduces ambiguity whether Scout_Collision_Create() is creating a Scout_Collision object or creating a collision object for a Scout. This is just an example and it's easy to get confused when things get more complicated.
You could always do as Unity does with UnityScript and define that an entire script file is within the scope of a single object. That way the scripters don't need to grok any extra object syntax.
As for self.RotateByDegree(...) vs. RotateByDegree(self, ...) I don't think that matters as much unless error reporting suffers. If it were Ruby it would be the difference between seeing the error on the line that says "self.RotateByDegree(...)" saying "No such method `RotateByDegree` for Scout object" and seeing the error inside the RotateByDegree function saying "No such member `rotate_vec` for Scout object". It's better to see the error where the scripter made it than to see the error inside internal functions that just weren't called correctly.
You could always do as Unity does with UnityScript and define that an entire script file is within the scope of a single object. That way the scripters don't need to grok any extra object syntax.
As for self.RotateByDegree(...) vs. RotateByDegree(self, ...) I don't think that matters as much unless error reporting suffers. If it were Ruby it would be the difference between seeing the error on the line that says "self.RotateByDegree(...)" saying "No such method `RotateByDegree` for Scout object" and seeing the error inside the RotateByDegree function saying "No such member `rotate_vec` for Scout object". It's better to see the error where the scripter made it than to see the error inside internal functions that just weren't called correctly.