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
What do you use for 3d rendering? Just webgl?
Congrats! This is a wonderful idea.
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
amazing!
@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.
@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
@chris441 Thanks for the detailed explanation! And, I assume, that JVM shares memory with the Python runtime?
@rob703 Wouldn't this require you to embed the JVM in unreal?
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).
@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.
@jakub.zika-extern JMonkeyEngine, which uses lwjgl underneath
@blak3mill3r Thanks! Glad you liked it.
It reminds me of https://en.wikipedia.org/wiki/Turtle_graphics from my childhood... but has the potential to teach so much more.
That’s the ultimate inception! So I guess that’s “similar in spirit” to how Clojure runs within the JVM?
Oh my god, you might have just enabled me to (finally) script Unreal Engine with Clojure! 🤯
@rob703 wait what
@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.