My friends and I have played so much already that the list of elements on the sidebar is unwieldy. You can paste this little js snippet into the console to add a basic search feature
I couldn't find any information but does this use some kind of LLM to derive the combinations from? It makes a request to the backend every time you combine items which sometimes takes >500ms, and also supports some really wild combinations that I highly doubt someone has taken the time to come up with. It would also explain why the icons are emoji's, it would be fairly trivial to ask ChatGPT to give you the result of Fire + Water and an accompanying emoji.
Off topic, why is nitter dying? I've noticed the main instance's SSL cert is down for a bit now, and other instances are pretty rate limited. Did something happen/change?
Wouldnt it be worth caching the results? For the first couple of million combinations at least. I suppose that would take away some level of serendipity. But I imagine it would make this a lot cheaper, considering its popularity.
Yeah I'm pretty sure you could do this just with the classic word embeddings (king =queen + man - woman). Maybe it doesn't work as well as with a full LLM.
For me it was when one of my early combinations of Pegasus (might also have been unicorn or flying horse, the latter already being a duplicate of Pegasus) and water became hippocampus, but with the hippopotamus emoji ().
I'm sure it was fun for the creator, bit I'll stick with non - AI games for now.
i really hate it when you are crafting something and get the same thing as another thing in your side bar but it has one CAPITAL LETTER!!! like what that dosnt change anything you fuggly rat
You're not dumb -- it's not only unclear, but the interface actively suggests the opposite of what you're supposed to do.
One of the best lessons I ever learned was from Don Norman's famous book, The Design of Everyday Things. Which basically teaches you that the user is almost never dumb, but rather human. And that the responsibility of understanding how to interact with an object, or program, always lies with the creator of that object or program. The designer. It's their job to design something so that it teaches you how to use it. (His most quoted example involves how a plate on a door invites you to push it, while a handle invites you to pull -- and this way you'll never try to pull a door that needs to be pushed open, or vice-versa.)
In this case, the interface invites you to drag things among the various pre-existing points, to continue the "constellation". It does nothing whatsoever to suggest that it would make any sense to drag the labels on top of each other. Indeed, previous experience suggests that this would simply lead to overlapping and obscured labels, so we actively avoid it. And the lines that get drawn between nearby points and labels goes even further to suggest that this is a game or experience about connecting things in a graph-like way -- which, once again, overlapping does not fit into conceptually.
I would never have thought to drag things on top of each other if I hadn't come here to the comments.
Nothing. They're completely confusing. At first, I thought maybe the little specs is where the combination happened, so as they passed between a set, they would automatically get crafted based on that set, in a neat chaotic way. Nope. Then I thought maybe I had to set up the "recipes" and wait, or click things, or I don't know.
I didn't realize it's just a basic drag drop combination thing until I saw the video, after coming here to see if anyone else was having trouble with Safari.
Thank you to know how to spell correct you are my best speller that I seen. Me to I do not know what is that I was mad for a second but once I have seen this I cooled down a bit. Thank you!
haha... the lines and dots never bothered me actually... i was scrolling throught this saw the thing about the lines and had to open the tab back up to see the lines... i never noticed they were there
I didn't have a problem understanding it, but then again, I've played these Alchemy games before. It was one of the first games I ever played on my first Android back in 2010.
I don't understand what you mean. Clicking does absolutely nothing for me. Clicking items in the right column does nothing; clicking items I've already placed does nothing. Clicking items consecutively does nothing, in either part of the screen.
I don't see how to use this at all without drag and drop.
I was very confused at first too, and didn't understand the difference. As the other comments in the thread allude to though, this instead an LLM to allow for a much much larger number of combinations, which is the "neal.fun" twist on it.
I do wish it was a bit better stated on the page itself.
Once I play I was confused to, but I was thinking was it like little alchemy. You should play for like 20 min so you can be more better just giving a tip for because it is the right thing to do
My team and I were ghost developers to many companies, developers, and book authors in the hay days of Macromedia/Adobe Flash.
We were approached to build a bunch of learning lessons for teachers to teach kids - primarily focusing on human anatomy. Instead of building separate lessons, we built a generator tool for the teachers to drag and drop various combinations and permutations that produce almost infinite lesson variations.
The end customer was Pearson Publishing, and I heard they won awards and stuff. Our client was a good person and even paid us extra for doing the better version of the product they had in mind.
That tool was like this and a few others, as mentioned in the comments. But all in ActionScript Flash, complete with sounds, laughter tracks, and ever-expanding sprites of body parts. It was one fun and fulfiling product.
I miss Flash and all the cool capabilities it had. At a previous company, we built a tool that would allow a teacher to record a video review of a student's animation work, while showing, scrubbing and annotating that work simultaneously. On playback, the annotations would be synced with the video. Good luck pulling that off with Javascript.
The state can be re-imported like this:
```
a = (insert JSON output here)
window.$nuxt.$root.$children[2].$children[0].$children[0]._data.elements = a.elements; window.$nuxt.$root.$children[2].$children[0].$children[0]._data.discoveries = a.discoveries;
```
I made a bookmarklet that loads the state from localstorage and also autosaves the state on each new craft
javascript:(function(){
const exportState = () => JSON.stringify({
discoveries: window.$nuxt.$root.$children[2].$children[0].$children[0]._data.discoveries,
elements: window.$nuxt.$root.$children[2].$children[0].$children[0]._data.elements
});
const importState = (state) => {
const { discoveries, elements } = JSON.parse(state);
const gameInstance = window.$nuxt.$root.$children[2].$children[0].$children[0]._data;
gameInstance.discoveries = discoveries;
gameInstance.elements = elements;
};
/* Set up a MutationObserver to listen for changes in the DOM and automatically export the current state. */
const observer = new MutationObserver((mutations) => {
const state = exportState();
localStorage.setItem('gameState', state);
});
/* Start observing DOM changes to auto-save the game state. */
const startObserving = () => {
const targetNode = document.querySelector('.sidebar');
observer.observe(targetNode, { childList: true, subtree: true });
};
/* Check for a saved state in localStorage and import it if available. */
const savedState = localStorage.getItem('gameState');
if (savedState) importState(savedState);
else localStorage.setItem('gameState', exportState() );
startObserving();
})();
This can be used to get a novel starting point (disregarding the original starting point).
It can also be used to start from unreachable elements, although it isn't clear to me exactly how the "First discovery" works, e.g. will your unreachable elements pollute the neal.fun datastore, or only the byproducts? Either way, it is interesting.
["Leviathan Shark","Burnzilla","Burnado","Chocolate Tree Shark","Cybersharktopus","Toadatorzilla","Bacon Sharktopusnado","Rainbow Hooktopus","T-48000050","T-48000050","T-19800050","T-19800050","T-64000050","T-83800050","T-83800050","T-121800050","T-121800051","T-185800001","T-185800002","T-185800004","T-185800008","T-82980058","T-121800051 + T-160000"]
Seems like I've stumbled across a self reproducing AI, although the emojis went from robot emoji to universe emoji and then to poop emoji. I wonder at which of those levels of AI we're at currently :p
I think you can reduce state. Rather than tracking maxElementReached per-element, maintain a single maxElementReached for the first n elements. March the first n elements forward in lockstep, and grow n by 1 whenever you exhaust all available combinations for that set
1. Combine the first element with every next element until exhausted.
2. Catch up the second element to where the first element got to.
3. Combine the first two elements with every next element, until exhausted.
4. Catch up the third element.
5. Combine the first three elements with every next element
6. etc.
In pseudocode...
n = 1
maxElementReached = -1
while(n < totalElements()) {
while(maxElementReached + 1 < totalElements()) {
maxElementReached = maxElementReached + 1
Combine each of the first n elements with element[maxElementReached]
}
// we've exhausted all possible combinations for the first n elements.
// increase n by 1 and catch up the new element to keep going
Combine element[n] with each element from n to maxElementReached
n = n + 1
}
minified version courtesy of GPT-4
(disclaimer I have no clue how this works)
let m={},t=0,f=0,s=0;setInterval(function(){document.getElementsByClassName('mobile-item')[f].getElementsByClassName('item')[0].click();document.getElementsByClassName('mobile-item')[s].getElementsByClassName('item')[0].click();t=document.getElementsByClassName('mobile-item').length;s=(s+1)%t;if(s==0){m[f]=t;if(Object.keys(m).some(i=>m[i]<t)){let p=Object.keys(m).find(i=>m[i]<t);f=p;s=m[p];}else{f=(f+1)%t;s=f;}}document.title=f+'+'+s+'|'+t;},500);
Like keep showing me a desired item to craft, that requires crafting 2 or 3 items to get to -- e.g. combine 2 existing things, then with a third existing thing. Or combine 2 existing things, another 2 existing things, and then combine those.
And obviously it keeps getting more complex the more items I acquire along the way.
And each time I play it's randomized.
(And let me play entirely with the keyboard by autocompleting each item as I type... dragging gets old real quick on a touchpad...)
The impressive thing about Scribblenauts was that of course, it didn't have anything like an LLM. They went through a dictionary and added everything they could, then they went through several rounds of playtesting and added everything the playtesters managed to think of that they didn't already have (minus copyrighted characters and other things that would get them into trouble)
I played a game like this once, it was called "cow evolution:idle merge game". It wasn't randomized, but skinnerboxxed. Perhaps that is not quite what you meant.
Oh well, I guess now I'm forced to sink in another half-hour this evening! ;)
Dead Comment
> Working on an endless crafting game with llama 2
along with a video of this game.
[0] https://nitter.cz/nealagarwal/status/1747284257582506102#m
https://farside.link/https://twitter.com/nealagarwal/status/...
[0]: https://twitter.com/nealagarwal/status/1747284257582506102
Campfire+sushi took about 10 seconds before it gave up and did not combine them.
Some of the surprising discoveries I made with word2vec embeddings:
human + robot ~= cyborg
silicon + electricity ~= solar cells
virtual reality + reality ~= augmented reality
As reported here: https://web.archive.org/web/20160806040004if_/http://blog.yh...
That simple demo took me way too long and all that time is wasted because word2vec simply sucks for this use-case.
Deleted Comment
this game is fun for a bit, but shallow once you realize the gimmick.
you can go completely random bullshit go and get "super cyberwolfman zombie phoenixman" that's nonsense, of course it's "first discovery!"
I'm sure it was fun for the creator, bit I'll stick with non - AI games for now.
Deleted Comment
EDIT: Ah, you drag items on top of each other for them to change. Instructions unclear, and I am dumb.
You're not dumb -- it's not only unclear, but the interface actively suggests the opposite of what you're supposed to do.
One of the best lessons I ever learned was from Don Norman's famous book, The Design of Everyday Things. Which basically teaches you that the user is almost never dumb, but rather human. And that the responsibility of understanding how to interact with an object, or program, always lies with the creator of that object or program. The designer. It's their job to design something so that it teaches you how to use it. (His most quoted example involves how a plate on a door invites you to push it, while a handle invites you to pull -- and this way you'll never try to pull a door that needs to be pushed open, or vice-versa.)
In this case, the interface invites you to drag things among the various pre-existing points, to continue the "constellation". It does nothing whatsoever to suggest that it would make any sense to drag the labels on top of each other. Indeed, previous experience suggests that this would simply lead to overlapping and obscured labels, so we actively avoid it. And the lines that get drawn between nearby points and labels goes even further to suggest that this is a game or experience about connecting things in a graph-like way -- which, once again, overlapping does not fit into conceptually.
I would never have thought to drag things on top of each other if I hadn't come here to the comments.
What's with all the lines to the little moving dots? Haven't figured out what those do yet.
I didn't realize it's just a basic drag drop combination thing until I saw the video, after coming here to see if anyone else was having trouble with Safari.
Water surrounded by 5 fire in a circle - ish - did absolutely nothing.
Only by checking the HN comments i figured out you have to combine items.
I don't see how to use this at all without drag and drop.
I do wish it was a bit better stated on the page itself.
We were approached to build a bunch of learning lessons for teachers to teach kids - primarily focusing on human anatomy. Instead of building separate lessons, we built a generator tool for the teachers to drag and drop various combinations and permutations that produce almost infinite lesson variations.
The end customer was Pearson Publishing, and I heard they won awards and stuff. Our client was a good person and even paid us extra for doing the better version of the product they had in mind.
That tool was like this and a few others, as mentioned in the comments. But all in ActionScript Flash, complete with sounds, laughter tracks, and ever-expanding sprites of body parts. It was one fun and fulfiling product.
And that pretty much says everything unfortunately - it's still an experimental API with limited availability.
You can do some parts of this using Canvas[0] but there's lots of caveats.
[0] https://github.com/bwasti/mebm/tree/main
Deleted Comment
This can be used to get a novel starting point (disregarding the original starting point).
It can also be used to start from unreachable elements, although it isn't clear to me exactly how the "First discovery" works, e.g. will your unreachable elements pollute the neal.fun datastore, or only the byproducts? Either way, it is interesting.
These were my discoveries:
["Leviathan Shark","Burnzilla","Burnado","Chocolate Tree Shark","Cybersharktopus","Toadatorzilla","Bacon Sharktopusnado","Rainbow Hooktopus","T-48000050","T-48000050","T-19800050","T-19800050","T-64000050","T-83800050","T-83800050","T-121800050","T-121800051","T-185800001","T-185800002","T-185800004","T-185800008","T-82980058","T-121800051 + T-160000"]
Seems like I've stumbled across a self reproducing AI, although the emojis went from robot emoji to universe emoji and then to poop emoji. I wonder at which of those levels of AI we're at currently :p
let maxElementReachedForElement = {}; let totalElements = 0; let firstElement = 0; let secondElement = 0;
setInterval(function() {
}, 500); // TODO : Find a way other than delaylet m={},t=0,f=0,s=0;setInterval(function(){document.getElementsByClassName('mobile-item')[f].getElementsByClassName('item')[0].click();document.getElementsByClassName('mobile-item')[s].getElementsByClassName('item')[0].click();t=document.getElementsByClassName('mobile-item').length;s=(s+1)%t;if(s==0){m[f]=t;if(Object.keys(m).some(i=>m[i]<t)){let p=Object.keys(m).find(i=>m[i]<t);f=p;s=m[p];}else{f=(f+1)%t;s=f;}}document.title=f+'+'+s+'|'+t;},500);
`One Does Not Simply Walk Into Mordor`
Like keep showing me a desired item to craft, that requires crafting 2 or 3 items to get to -- e.g. combine 2 existing things, then with a third existing thing. Or combine 2 existing things, another 2 existing things, and then combine those.
And obviously it keeps getting more complex the more items I acquire along the way.
And each time I play it's randomized.
(And let me play entirely with the keyboard by autocompleting each item as I type... dragging gets old real quick on a touchpad...)
Quick google search tells me the game is called Little Alchemy (there’s a sequel now too)
https://en.wikipedia.org/wiki/Scribblenauts