You need a way to make the actual discovery process fun. So you could build a factorio-style pipeline that makes discovery more efficient over time. So that way the mind stays engaged for longer. I wonder what minimal set of game mechanics would fall out if you kept working on it.
I also made one back then in Flash (called "Alxemy"), it got quite popular.
I kept seeing Ice in the random hints, and I'm like HOW DO I MAKE ICE??
So I typed Ice into the guide and it gave me Cold + Water. Duh, but how do I make Cold? Human + Rain. WTF?
So how do I make Human? I can't even make Plant! And this spiral started(I chose a combo that I had at least one of):
Human = Earth + Life
Life = Energy + Swamp
Swamp = Grass + Mud
Grass = Earth + Plant
Plant = Earth + RAIN..... Facepalm.
The combinations are also an interesting look into the developers minds and can be pretty funny. For example, Bird + Ocean = Seagull. Of course! Bird + Earth? Ostrich. Haha
Tangential: does anyone know a good (preferably open) dataset of crafting recipes to use for game mechanics?
- resources: https://littlealchemy.com/resources/base.560.json
- names: https://littlealchemy.com/resources/en/names.560.json
Then you can run this Python code to extract/merge into one single file:
import json
with open('res.json', 'r') as f, open('names.json', 'r') as ff:
res = json.load(f)
names = json.load(ff)
for res_id, res_name in names.iteritems():
print("%s:" % res_name)
for id1, id2 in res[str(res_id)].get('parents', []):
print("\t %s + %s" % (names[str(id1)], names[str(id2)]))
Expected output: glacier:
ice + mountain
cart:
wheel + wood
nerd:
human + glasses
doctor:
human + hospital
wagon:
cart + horse
newspaper:
paper + paper
paper:
wood + pressure import json
with open('base.560.json') as f:
base = json.load(f)
with open('names.560.json') as f:
names = json.load(f)
print('digraph {')
for elnum, name in names.items():
print(f'e{elnum} [label="{name}"];')
for elnum, body in base.items():
for el1, el2 in body.get('parents', ()):
print(f'e{el1} -> e{elnum};')
print(f'e{el2} -> e{elnum};')
print('}')
# python3.6 code.py | dot -Tpng dot.pngDoodle God™ by JoyBits Ltd. https://appsto.re/au/HwWBw.i
Doodle God™ Free by JoyBits Ltd. https://appsto.re/au/tNEDz.i
Has IAPs and isn't the most fun game on the app store, but decent enough.
The Reviews suggest that it has gotten worse…
After seeing this happen, I tried typing out the whole word "earth" and hitting enter. Nothing. I tried typing "?" for help. Still nothing... "/" opens a find search box. By opening that and typing "fire", and then hitting escape, I've got fire hilighted. So I hit enter... nothing. I hit space... now the useless text field is there.
Not a fan of this game's onboarding!
Also it's possible the searching with "/" is part of your browser. I'm pretty sure Firefox does that, less sure about others.
There's no way for a fresh visitor to know that! The game should have some sort of basic instructions and at least consider the onboarding experience... and I say this as some who has created web games that fail on this front.
Is any way to select things with the keyboard? I've got an somewhat injured wrist and can't be doing hundreds of repeated click and drag motions via the mouse or touchpad.
(Yes, the slash behavior defaulting to search is part of FF, but it's also used to bring up keyboard shortcuts on Slack and many, many other sites)
Update: I see how the game works now. If it hadn't been on the front page of HN, I definitely would have just gone through the steps in my comment above, clicked on a couple of icons and bounced. Hope the feedback helps (assuming the creator reads this and wants people not to bounce)
function combRep(arr, l) {
if (l === void 0) l = arr.length; // Length of the combinations
var data = Array(l), // Used to store state
results = [
]; // Array of results
(function f(pos, start) { // Recursive function
if (pos === l) { // End reached
results.push(data.slice()); // Add a copy of data to results
return;
}
for (var i = start; i < arr.length; ++i) {
data[pos] = arr[i]; // Update data
f(pos + 1, i); // Call f recursively
}
}) (0, 0); // Start at index 0
return results; // Return results
}
var parents = [];
for(b in bases.base) {
if (bases.base[b].parents != undefined) {
for (p of bases.base[b].parents) {
parents[p.sort().join('-')] = b;
}
}
}
function gethints() {
combinations = combRep([1, 2, 3, 4].concat(game.progress), 2);
for (c of combinations) {
let idx = c.sort().join('-');
if (parents[idx] != undefined && game.progress.find((e, i, a) => parents[idx] == e) == undefined) {
console.log(bases.names[c[0]], bases.names[c[1]]);
}
}
}clearing the canvas had no effect.
For me recognizing that the count on the left is simply new items I discover out of possible 560 was part of the fun aspect of this surprisingly simple but engaging game
That's life.
Playing this game has given me more insights into the intersection between human problem solving and algorithmic problem solving than any puzzle I've worked on since Sudoku.
I'm at 284 elements discovered and I don't think I'll only go through this once. I may end up downloading the tree, and writing programs to traverse it.
If I want links to all those little games, I would have a FB account.
In what way is it a news ?