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