Not many Unity users use Boo.

:shock: I thought it would be one of the more common languages when I first saw Unity considering its from Python.

NOTE: Yes, the first part of the poll is a joke :smile:

You spelled a lot wrong.

The lack of documentation and no good IDE to work with Boo (even Python has this problem, no free and good IDE, with code complete, refactoring… if you know one, let me know) have kept most of the users away. I hope this next release of Unity brings more documentation on C# and Boo.

I think Netbeans is an IDE that has all you ask for Python. As for Boo, no. Frankly I never heard of Boo until I came here. I learned some basic python last Fall. Super fast and super easy to code. I am a fan of Python, although I can’t say I ever felt I needed to use it for something as I am good with Java.

Beside of the lack of proper support from Unity like the non existing documentation, not beeing available for iOS publishing, the rather low popularity, it’s relative not this high importance/capabilities compared to other high level languages, … i mainly blame the name, Boobs would have had the potential to attract a lot more people.

Python is my preferred language, and the Boo support is the reason I first looked at Unity development.

But the lack of Boo for the iPhone has kept me from using the language.

^ this is the big one. Where I work, it got banned precisely because it’s unusable on the iPhone.

@dart: The documentation for Unity3 has a selector that lets you pick the language for the sample (or displays all three samples if you have javascript off)

I can spell it how I want to. =P

Also first two replies have Half-Life profile pictures. Love that game. :smile:

I wish a preview of that documentation was available!

ahaha Boobs or Free beer

Sure does fix it in the new update :smile:

I’ve never used Boo though

350467--12175--$screen_shot_2010_07_20_at_21022_pm_177.png

But it wasn’t available so far. I wonder why a) there are no comments in the code snippets beside of Javascript and b) why Boo for instance can’t be tighter integrated like Javasript and c) when there will be Ruby support giving me the Blues…

I would use Boo over C# if there was IDE support for it. There is an excellent IDE out there, PyCharm, from the same guys who made iDEA and ReSharper, but there are no .py files for the API for it to parse, and thus no code complete.

It would be relatively easy to reflect out the classes and methods to prototype headers from the UnityEngine library though. DISCLAIMER: obviously I’m not advocating reverse engineering here, only creating empty class/method definitions from the API of the DLL. The same way they are available to the code complete functionality in Visual Studio/Resharper.

I did this for my own engine where I used boost::python to export classes to script space. I then parsed the C++ headers with the boost::python macros and created empty classes and methods to support the code complete function in PyCharm. The same method works with Komodo and Aptana Studio.

For example:
NetServer.cpp

BOOST_PYTHON_MODULE(NetServer)
{
	class_<ServerObjectManager, ServerObjectManagerPtr, bases<ObjectManager>>("ServerObjectManager");
	class_<ServerApplication, ServerApplicationPtr>("ServerApplication")
		.def("Init", &ServerApplication::initialize, "<type></type><params></params><comments>Initializes the server application</comments>")
		.def("Update", &ServerApplication::update,"<type></type><params>float</params><comments>Sends a message to the Server Application to update its state</comments>")
		.def("Shutdown", &ServerApplication::shutdown, "<type></type><params></params><comments>Shuts down the Server Application</comments>")
		.add_property("Objects", make_function(&ServerApplication::getObjects, return_value_policy<copy_non_const_reference>()), "<type>ServerObjectManager</type><params></params><comments>Returns the ObjectManager instance owned by the server application</comments>");
}

exports to NetServer.py:

class ServerObjectManager(ObjectManager):
    pass
    
class ServerApplication(Object):
    def Init(self):
        pass
    def Update(self, Float):
        pass
    def Shutdown(self):
        pass
    Objects = ServerObjectManager()

With .Net’s Assembly namespace introspection this would be pretty to implement.

The reason I haven’t done it is that I feel dirty thinking about reflection and all the documentation is in Javascript, which is easier (faster at least) to translate to C#.