announcements

Project/library announcements ONLY - use threaded replies for discussions. Do not cross post here from other channels. Consider #events or #news-and-articles for other announcements.
ertugrulcetin 2021-03-11T10:12:11.336200Z

We have been working on a project called Code 3D World. We are thrilled to announce that the first version is released 🎉 Code 3D World is interactive, and batteries included a 3D coding platform for beginners. https://github.com/ertugrulcetin/code3dworld

👍 2
1
🆒 2
❤️ 11
Jakub Zika 2021-03-11T17:10:20.338500Z

What do you use for 3d rendering? Just webgl?

blak3mill3r 2021-03-11T17:50:21.338900Z

Congrats! This is a wonderful idea.

chrisn 2021-03-11T18:01:09.343400Z

We have something really special today in libpython-clj news. Aside from continued work to stabilize v2 we have built a way to https://clj-python.github.io/libpython-clj/embedded.html!! This sidesteps a ton of issues of trying to setup the correct embedded python environment from Clojure and instead allows a primarily Python system to run arbitrary Clojure code -- I am really excited about this possibility. In any case, itemized updates: • Many bugfixes to allow v2 to automatically detect python on more systems. • the libpython-clj project is now https://github.com/clj-python/libpython-clj/blob/master/deps.edn. • You can run a Clojure repl from a Python host!! Come sit right at the technical cutting edge: https://github.com/clj-python/libpython-clj

🤯 31
29
🚀 19
Las 2021-03-12T09:37:26.356200Z

amazing!

chrisn 2021-03-12T12:36:04.357300Z

@raspasov - yes, when you install the JDK or the JRE it installs both a java executable and a shared library for embedding java in another system. In the embedded case we use javabridge which calls java on the command line to find the shared library and then loads that. AS far as I can tell it is a real JVM.

1
xceno 2021-03-12T12:53:36.357500Z

@emccue haha yeah, i don't want to hijack this thread. but feel free to ping me if you want. TLDR: UnrealEditor is scriptable via python since V2.22 or so, and I've dabbled around with ECL and CLJS for runtime stuff, but nothing serious yet

raspasov 2021-03-12T13:01:43.357800Z

@chris441 Thanks for the detailed explanation! And, I assume, that JVM shares memory with the Python runtime?

kwrooijen 2021-03-12T14:13:09.358500Z

@rob703 Wouldn't this require you to embed the JVM in unreal?

xceno 2021-03-12T14:15:57.358700Z

Yes, but there are already projects out there that embed V8, Python and all kinds of other stuff. So I know it works in theory. You don't want to have clj calls in tight gameplay loops of course, but for the stuff we do which involves a lot of pre-processing, server calls and stuff it would be great. It would also be completely different than what arcadia does with unity. So I look at it as a great additional tool, rather than a complete replacement for c++, or blueprints (for now).

👍 1
chrisn 2021-03-12T14:57:52.359100Z

@raspasov - Yes exactly. So zerocopy pathways should work. Shared memory space for better or for worse. Well, up until you use the python multiprocessing module then of course you have Y shared memory spaces.

👍 1
ertugrulcetin 2021-03-11T19:14:15.346500Z

@jakub.zika-extern JMonkeyEngine, which uses lwjgl underneath

👏 1
ertugrulcetin 2021-03-11T19:17:04.346700Z

@blak3mill3r Thanks! Glad you liked it.

blak3mill3r 2021-03-11T19:39:35.347400Z

It reminds me of https://en.wikipedia.org/wiki/Turtle_graphics from my childhood... but has the potential to teach so much more.

raspasov 2021-03-11T21:05:10.349Z

That’s the ultimate inception! So I guess that’s “similar in spirit” to how Clojure runs within the JVM?

xceno 2021-03-11T21:34:37.349800Z

Oh my god, you might have just enabled me to (finally) script Unreal Engine with Clojure! 🤯

emccue 2021-03-11T21:38:59.350Z

@rob703 wait what

chrisn 2021-03-11T23:48:10.350700Z

@raspasov - It is similar in that spirit and it uses libpython-clj to do the interop with the host language where necessary. Physically what happens is python loads java via a shared library and creates a vm object with a classpath provided by the clojure command line program. From there you can do things like find class, call static method, etc. Then we bootstrap Clojure, nrepl, cider, and off we go.

👍 1
1