Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Arcadia: Unity 3D Development in Clojure (arcadia-unity.tumblr.com)
229 points by ramseynasser on Oct 17, 2014 | hide | past | favorite | 32 comments


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...


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!


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.


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.


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.


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.


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!


Thanks!


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.


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.


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/arcadia-unity/clojure-clr


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


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


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.


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).


Clojure exists for a long time in the form of Clojure-CLR.


Sorry, I'm out of touch. I visited CJCLR a long time ago (maybe a year or two) and had the impression it's a work in progress and a lot of basic things are missing. Is that no longer true, or was my initial impression invalid? Can I start learning Clojure with it and expect it to work more or less like “proper” Clojure?


There is a lot of Clojure code out there using Java interop. That said, a lot of "proper" Clojure runs across all three major runtimes (Java/CLR/JS) without any significant changes.

(while I'm here, let me also point out http://hylang.org in case you use Python - it's a nice gateway drug, if you'll pardon the pun)


I've never used ClojureCLR personally, but its wiki on github claims to track the main Clojure project within weeks, and the last commit was 2 days ago. There seems to exist a version 1.6.0.

That said, I bet the tooling isn't so nice to use as Leiningen, although there does exist a Visual Studio somewhere.


You can expect a full, "proper" Clojure 1.7 experience using Arcadia.


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.


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


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.


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


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


"Unity brings the cutting edge graphics" - huh?

Great initiative though.


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.


This, this and this. For top notch presentation, you need good art, first and foremost. Then the graphics substrate needs to pack enough punch. The engine is the canvas and the brush and the paints - but not the painter. Art is not a random linear combination of default assets no matter how many cycles you use for your rendering equation. You need a coherent grammar of visual presentation that is pleasing to the eye. The engine can facilitate this if you know what you want but it cannot make anything awesome by itself.


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


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


I'm pretty sure the next version of Unity does that and more.


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

its an interesting project...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: