

Arcadia: Unity 3D Development in Clojure - ramseynasser
http://arcadia-unity.tumblr.com/post/100257212548/arcadia-0-1a-launched

======
reitzensteinm
This looks fantastic. I'm a full time Unity developer that uses Clojure for
all non gaming tasks, so I'm pretty much the perfect target market.

My only concern is - do you have any way to have compatibility with IL2CPP[1]?
As I understand it, there's a preview of the exporter already in Unity 5.

Without it, WebGL will not work, and it would not be a surprise to see similar
technology used for iPhone deployments in the future (which is specifically
where the Mono licensing problem comes from due to the static linking
requirements).

[http://blogs.unity3d.com/2014/04/29/on-the-future-of-web-
pub...](http://blogs.unity3d.com/2014/04/29/on-the-future-of-web-publishing-
in-unity/)

~~~
ramseynasser
IL2CPP has been on our radar for a while. We haven't gotten any real access to
Unity 5 yet, so we can't say what the compatibility will be like for sure.

But since IL2CPP acts on the CLR bytecode, and Arcadia emits valid CLR
bytecode, in theory there shouldn't be a problem. Time will tell!

~~~
reitzensteinm
That would be fantastic!

There would need to be ClojureScript style restrictions on the code though,
right? IL2CPP wouldn't allow (eval) at runtime by its nature.

~~~
timsgardner
Good question, reflective code emission won't work on some platforms. We think
this will only be an issue for eval. In the future we'll probably have options
for disabling eval while retaining macros for AOT.

~~~
jon_cham
IL2CPP seeks to provide similar functionality as AOT platforms supported by
mono today (e.g. iOS). If something works on iOS, it has a very good chance of
running on an IL2CPP supported platform.

------
pjmlp
I saw the recording of the presentation at StrangeLoop.

First of all, let me congratulate the developers.

Another idea that this presentation gave me was to profit from Clojure and
ClojureCLR, as a mean to write portable code across Android and Windows Phone
systems.

Specially given the anaemic support for OS APIs in the NDK for C++. At least
Clojure gets an easier life to the Android APIs.

So, assuming that Clojure 1.7.0 gets an improved startup time and profiles,
coupled with ClojureCLR 1.7.0, it would be a nice way to write portable code
with native APIs.

------
Nekorosu
Kudos to the developers! I've tried arcadia right before the public release.
It worked perfectly. This tool opens a lot of interesting possibilities. Also
it makes Unity 3D development feasible for me because the code becomes so
succinct. You have to see it. Thing of beauty!

~~~
ramseynasser
Thanks!

------
rcarmo
Congrats. I watched the StrangeLoop videos as well, and have been itching to
play with this -- I look forward to your next posts, and particularly like the
exposure it brings to Clojure CLR.

------
danabramov
Does that mean that Clojure is ported to Mono? If not, what level of Mono
support can I expect?

I'm wondering because I always wanted to start learning Clojure but Java
ecosystem puts me off.

~~~
ramseynasser
Totally! Arcadia is based on the Clojure-CLR port (an official project)
maintained by David Miller for five years or so. It supports Mono.

We had to fork the compiler to introduce a small number of changes to make
Arcadia work in Unity, though. Unity ships a very old version of Mono with
their own changes, so stock Clojure-CLR would not work.

[https://github.com/clojure/clojure-clr](https://github.com/clojure/clojure-
clr) [https://github.com/arcadia-unity/clojure-
clr](https://github.com/arcadia-unity/clojure-clr)

~~~
timsgardner
Clojure-CLR is the real deal, too - 1.7, transducers, etc. nREPL support's
probably coming soon.

~~~
Rapzid
That would be fantastic. If it could hook up to LighTable OOTB that would be a
fantastic way to introduce people to it.

~~~
ramseynasser
That would be amazing! Can you invoke command line scripts from LT? If so you
could just use our included REPL client implemented in Ruby. Otherwise you'd
have to port it to ClojureScript, but the client is designed to be simple
enough to make that easy to do.

~~~
joshuafcole
Yep, though it's not as easy as it could be yet. The best way currently is to
write your own command leveraging our spawning APIs (a thin wrapper around
node's child_process module with some extra cljs sugar).

------
sbochins
Wow, this is like a magical christmas present from above. I've never toyed
around with Unity but have done some android 3d game development using java in
the past. But, this will really get me motivated to start working on
something. I'm not sure I'll make anything useful or very playable, but this
should make for some great weekend hack projects.

------
virgil_disgr4ce
Nice job guys!! I guess I've got to make you the shirt now...

------
ijk
I hope to see a lot more people using this. The stuff that has already been
built is fairly impressive, especially given the pre-release constraints.

------
Yadi
This is amazing! 6 years this was like a dream never coming true or happening,
I'd say :/! Amazing!

------
byw
This is awesome! Once this works on Unity 5, I will switch from Unreal Engine
4.

------
CmonDev
"Unity brings the cutting edge graphics" \- huh?

Great initiative though.

~~~
Hemospectrum
Unity's actual power is belied by the poor quality of the default shaders
(especially shadows) and weak assets commonly used in amateur games. A
dedicated graphics programmer, backed up by professional-quality assets, can
get a lot of mileage out of it.

~~~
TillE
It's fine. Good, even. But really not "cutting edge". There's a huge gap
between Unity and Unreal Engine 4.

~~~
ntSean
Curious myself, in what way do you find the 'huge gap' especially noticeable?

------
jheriko
sorry, i had to lol quite hard and painfully at 'cutting edge graphics'

its an interesting project...

