It shoudn't be, I've include the lwjgl natives for macos, but I don't have a mac so I don't know. The jar works on ubuntu and windows, I did have an issue on windows initially due to the different path separators. If you run it from the command line, when it crashes does it say anything? Mail it to me if so and I'll have a look.
Thanks, I'll try my best to get there, for now though I'm just the one guy doing it so it might take a while. If my plans work and I make the project opensource though, then we're talkin'.
I mentioned somewhere else here the libraries I used, search for jbullet with your browser and you'll find it. The rest I built myself. Clojurescript is just for the website. I don't have a background in mechanics, so no, not really. If anything I was trying to avoid the complications that real mechanical engineers have to deal with.
Great! Be sure to share pictures of anything cool you build. I should have mentioned this before, I'm on Twitter and Instagram as MockMechanics too if anybody wants to share anything with me. I haven't posted anything there yet, but I'll start tomorrow since people seem to have liked the program.
> I feel like common mechanical subsystems like cams (which, for example, allow a rod to follow an arbitrary velocity curve when you move a knob), gears, and other devices may be abstracted away by a simple primitive
This is exactly how I was thinking before I pivoted the project to a more practical version, spot on. I feel like this project has moved on from that, but someone should really investigate this. Just off the top of my head imagine how easy it would be to run a genetic algorithm to find machines if we had an abstract description for them, or maybe there could be a whole branch of mathematics to prove that a certain machine does what we think it does (a lock is secure, this sort of thing).
In time, why not? One of the main aims of this program is to exploit people's natural physical intuition, making it VR is a step in the right direction.
Well things are a little fuzzy right now. I was just telling someone who asked me this, the plan is to make it open source eventually (after I refactor the code so that people can actually understand it!), but I would like to make a little money from it too (stupid covid!). So if I can make some money through patreon, crowdsourcing, youtube ads or something like that, then that's what I'm going to do.
Thanks, it's a little hard to be sure, my first commit according to git is March 30th, 2018. On one hand, I did take months long breaks while I worked on other things since then, but I also have tried to build something like this once before, years and years ago, but it went nowhere back then.
You're probably right, it's just that I'm more of a programmer than a web designer (this is my first site) so I just built everything with Clojure/Clojurescript. But I'll definitely do that once I have some time.
That's a good idea. When I recorded the piano I hadn't built the tetris machine yet so I didn't have the proximity-test library part. Now it would be so easy to test if there is a hole or not (or a bump) in a block working as a sheet as it moves down. And now that scripts have editing powers, I can see how I could add a block to where the "cursor" is when I'm recording the song.
Thanks, we do :). From now on what the program can do depends on what people build, the library machines they create so that other people can use them as parts and so on.
You know I had actually considered this exact thing you want a while back as a way to move forward once I had the program working. You could design all the graphs, logical connections on the computer then load them and just snap all the parts together. The main drawback I encountered then was how to implement the wagon since it can move in an arbitrary track path circuit. I'm not sure how that could be done. Another idea that's a little out there is that if someone could implement the basic building blocks using molecular parts, then maybe that's how we build molecular machines!
Thanks, if your son (or you!) builds anything with it I would love to see it and put it on the gallery on the website :)
Thanks for the offer, I'm dealing with so many moving parts here (pun intended) I hadn't even considered it. I think the most helpful would be translating the documentation, if you'd like to do that. Or posting a video explaining how to build something in the other language you speak would be great too.
Thanks, once you are familiar with it you can start extending it right away, a couple of motherboards running custom short scripts could implement all those things you mentioned and then you could make that machine (for example the motor/generator) available for others to use on their own machines!
org.clojure/clojure obviously, org.clojars.nakkaya/vecmath, org.clojars.nakkaya/jbullet, batik and lwjgl. All the other stuff, the opengl shapes and whatnot I wrote myself over the years, mostly to learn how to do it. In fact I probably can speed up this program a lot by not using my own code for those parts where libraries are available.
Thanks, one of the great things about creating a program where other people can create things is seeing them inventing things you wouldn't even think of, it's so open ended. Alan Turing and those other guys had no clue what we would do with his idea. I'm looking forward to see what people will make with this. (Not that I'm comparing myself to Alan Turing!)
Well, I was really into formalizing stuff when I was in college, you know proving that a cryptographic algorithm was correct by formalizing them as black boxes talking to each other, that sort of thing. Then I just started thinking about how to formalize mechanical things. One of the very things I remember is coming to the conclusion that all motions of a machine can be implemented as a combination of linear and rotational motions (and that's where the two things that move on mockmechanics, the track and the wagon, come from), but I don't know if that is true. But I don't really have any prior art, I had a 2d version that didn't work years ago but I think I lost it.
Haha... I remember talking to a teacher in college that used punch cards when he was young and I thought it was awesome, people were closer to the hardware you know? Hopefully my version of mechanical programming is a little more convenient :)
You're welcome :) I remember someone saying somewhere that most of the great computer programs probably haven't been written yet, if we remember that maybe we'll be the ones to write them!
Yeah, as an introduction to programming, it could even be used with very, very young kids, apparently people are born with an intuitive physics module (babies are surprised by things that don't make physical sense), so who knows? Maybe someone may claim one day that she has been programming since age 2!
It's interesting you'd mention that, because most of the program is "mechanical", you manipulate things in 3d, but for some things you have to go into a window and connect a few 2d nodes like the gates in motherboard mode. I was thinking maybe I should use 3d manipulation for everything, maybe the video you posted could serve as inspiration for 3d gates.
Thanks and that pong game is a great idea for my next machine, unless someone beats me to it! If I recall correctly the very first thought that led to this project was thinking about how to formalize mechanical devices, they have a language of sorts to describe chess games, same with choreographed dance I think. I was thinking how can I do that for machines without all the extra stuff like heat and friction, but I pivoted a lot since then and ended up with this.
Hey guys, I've been working on this Clojure project for a while now, honestly I'm not even entirely sure what it is, a game? a game engine? a 3d editor? a visual programming language? Anyway, it's a system to create mechanical contraptions and interact with them. I built a few test machines and you can see them in the first video I posted on my channel [1]. For instance you can create a fully functional piano in 5 minutes and play it, the keys move, it plays the sounds as you would expect. And this system turned out surprisingly powerful, to build these machines it often does not require any coding which was kind of surprising. I created this tetris game in half an hour [2]. It's not perfect but it is functional and again it required only a tiny snippet of code to coordinate the different submachines and even that might be unnecessary. The "programs" i.e. the machines created also interact in a way that you usually only see with command line programs. You can create a machine then someone else can use that machine as a part for a more powerful machine, for instance that lever that turns the tetris game on and off doesn't "come standard" with the system, I build it separately then imported it. Using the program is a lot like programming, thinking logically, coming up with solutions to problems, fixing bugs, but it's entirely visual so you can use your physical intuition to figure things out, maybe that's why it's possible to do things so fast. Anyway I was hoping some of you would give it a try and give me some feedback. I need people to see what they can build with it, I don't even know what's possible at this point. And if you want to give it a go and get stuck, feel free to contact me with any questions.