This is fantastic! All the art! And somehow I picked every single wrong choice but that's fine because then I got to enjoy all of the text.
It's no joke to try to put together something like this on a short schedule and I think you did amazingly.
The technical side of the panels opening was entirely down to the ease module, which handles the math side of things for certain kinds of animation. So I have to admit I was mostly picking the effect I wanted from the already prepared options within the module.
But I am very flattered and happy that you liked it!I think about that throughline a lot too. And thank you very much for playing!
This is not a complete answer, this is kind of just a gesture towards one. The actual complete answer will kind of depend on what's going on in your game, y'know? But I can point to a couple of things.
Here's some recent discussion of the sokoban example specifically: https://itch.io/post/16368974
And for the path module here's the card that has an example that gives a visual example of the forbidden color thing: https://beyondloom.com/decker/path.html#followeranim (click the checkbox at the bottom)
Some of the code for this is inside the module, not the deck's scripts but I believe it uses .hist to check parts of the movement grid for a specific color, and forbids movement onto that square of the grid if it finds any.
It should be possible to do something similar with a different kind of movement system too, if the path module itself doesn't have the kind of movement you had in mind.
I've been thinking a lot about Myst and Riven in the last few months so I'm aiming for a simple point and click type game with a puzzle or two. It'll all have to be very simple... I don't have much of a story in mind. But I really enjoy making interactive scenes and there's a new flourish or two I'd like to try.
We're halfway through Decker Fantasy Camp and since there wasn't a social thread open for it specifically I thought it might be nice to get one started (even if it's late)!
I know a lot of folks have already submitted projects or have been working on them a while but nonetheless feel free to talk about what you're working on or about what you've already done! Sneak peeks, mini postmortems and vague future ideas are all welcome.
Haven't started anything yet? There's still time to open up Decker and play around.
Hey Salty!
I've been poking at the contraption and only managed to break it in the way you mentioned once. I think something may have happened to the 'on click pos do' event handler inside the contraption? This is the final event handler in the contraption's script, as it (probably) should be:
on click pos do v:get_options[] w:(.7*c.size[0])/count v set_value[v[floor(first pos)/w]] end
If this event handler isn't there to do something with clicks, then clicking the tabs doesn't do anything.
So that would be the first thing I'd check. 🤔 But also, since your actual writing is safe in their own fields you could also remove the contraption and bring in a fresh copy. (Or take a working copy and give it a higher version number so it automatically replaces the old ones when you paste it in...? I think that's how that works. Save your deck first for safety!)
To start with, you probably need the "Show" attribute. Specifically to set things to .show:"none"
Invisible buttons are more useful for things you want to be able to click that don't look like buttons (for example, navigating around a scene in a point-and-click game). And a "None" button is truly hidden and unclickable until you change their setting, so that seems like what you might be after.
To set a widget to "none" visibility you can do it in code or with the menu while you're editing.
While Editing you deck: Select a widget and use the menu [ Widgets > Show None ]
And in code, this sets the visibility of a widget:
widgetname.show:"none"
To make it visible again you would need to set it's show attribute to one of the other visibilities, so this...
widgetname.show:"solid"
...would set it back to the default visibility it had when you made it. (Other options: "transparent" and "invert")
Just a thought, but if you only need to track the progress on one card for now and you don't need to check back on it later you could just make things appear one by one in the button scripts.
For example, here's a simple example script for a button that sets some text in a field then makes the next button visible:
on click do myname.text:"Pyrefly Studio" favefoodbutton.show:"solid" end
and then script in the next button (favefoodbutton, which just became visible) could be something like
on click do favefood.text:"Blueberry Ice Cream" coolfactbutton.show:"solid" end
etc, etc. These widget names (fields: myname, favefood / buttons: favefoodbutton, coolfactbutton) are made up, of course, so you'll want to make any names match the widgets that actually exist.
But I hope this helps you get started changing widget visibility and setting the text of a field using scripts.
I had something far less refined in mind to try to do with Patternshop but could never find the time to dig in, so this is really a delight. You're making such cool and useful tools, Missooni! It's really inspiring!
I'm looking forward to spending more time with this thing you made during the upcoming decker jam.
People who post their own versions of Wigglypaint without lying and stealing art are fine. Change logs for various versions of Wigglypaint actively encourage people to try tinkering with the program. Legit, free and honest modifications of Wigglypaint have always existed, and Internet-Janitor has answered questions helping people make their own modifications in the past
But when we're talking about scams we're talking about people lying about being "The Official Wigglypaint", sometimes pretending to be Internet-Janitor personally and stealing hundreds of people's artworks for their community galleries to look like a legit official website. These scammers are doing shady things to deceive new artists into giving them money, often tricking them into thinking that they're supporting the creator. That's why there's a scam warning here.
Internet-Janitor has written about how to modify the lineart brushes over on the Decker forums!
A simple option (with one moderate drawback) is that you can put all of your game script inside of a while loop inside of the on view do event. Basically like this:
on view do while 1 # your game stuff goes here end end
That should start it over from the beginning forever. The drawback is that we haven't given you an exit from the loop. If the game is totally done and you don't need to edit or test anything anymore then that might just work for you as it is.
If you're still editing and tweaking things you may need to stop the script (with the menu [Script > Stop]) though it will stop everything exactly where it is. That includes any dialogizer or puppeteer elements left hanging out on screen.
If you do need to do a stop like that you can force those two modules to clean themselves up on the current card by using the Listener [ Decker > Listener ] by using dd.close[] and pt.clear[]. In the Listener you'll need to hit Shift+Enter to run your code. Just mentioning that in case you haven't used the Listener before.
If the narrative doesn't specifically need to loop you could alternatively just send people back out to the title card (if one exists) and have them click play again, or have a "start" button which hides itself while the game is playing and then appears again after the story is done.
But this is definitely the simple answer to get it to loop (best applied cautiously when your game is otherwise finished).
If you want to take a slightly different approach that allows you to set up the auto-loop while still being able to test a single playthrough yourself you could put your dialogizer script inside a different event handler: a new one we're making up. We'll call it "cutscene".
on view do while 1 cutscene[] end end on cutscene do # your game stuff goes here end
Doing it this allows you to have it autoplay on the main card whenever it experiences a view event, but you can also set up a button on a another behind-the-scenes (or temporarily) card which will let you run through your game inside the cutscene event one time, and then automatically return to the other card with the tester button on it. This might be more useful if you're not finished tweaking things yet.
This is what that button script could look like:
on click do go[yourmaincard] deck.card.event["cutscene"] go["Back"] end
Though, of course, change the card name to whatever it's actually called.
But I hope one of these options makes sense and works for what you're doing!