Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Millie Squilly

434
Posts
19
Topics
119
Followers
57
Following
A member registered Jun 13, 2015 · View creator page →

Creator of

Recent community posts

(3 edits)

They're .desktop files! Essentially like shortcuts in Windows. So I can set the name and icon to be whatever I want them to be, as well as passing in extra parameters to Decker when I open it (so I can have them always open fullscreen). The actual .deck files live elsewhere.


So for example for the links to my zine I might have a file named issue1.desktop that contains this

[Desktop Entry]
Name=zine of millie, issue 1
Exec=decker --fullscreen "/home/milliesquilly/kioskfiles/zine/s1/zine of millie issue 1.deck"
Comment=
Terminal=false
Icon=/home/milliesquilly/kioskfiles/icons/zine.png
Type=Application
Name[en_AU]=zine of millie, issue 1

Aha, that should work! Thank you!

Quick question - with grids, is there any way to have a hidden column, aside from the few built-in always hidden columns?

Basically I'm trying to build a file list where I show the user "friendly" names but when they select one I then have the actual path to the file hidden behind the scenes and I can load that. Is there a way I can have that as a column in the same table, hidden but accessible through scripting, or would I need a separate invisible grid elsewhere with the "real" values?

I've been working on something of a project of building a dedicated box for running Decker things. Basically, it's a raspberry pi with the UI of the default OS stripped down a bit and a bunch of Decker stuff on it, paired with a display I got off aliexpress and a retro looking keyboard and mouse. My plan is to build an enclosure for it that resembles a classic Apple Mac, and hopefully I'll have something of that to show off soon.

But in any case here's a video of it in operation running Gray Lo-Fi's In Dreams Of Strife: 

I also have long-term plans to write a Decker-based menu interface instead of using desktop shortcuts - there's a few danger zone features that'll make that possible.

I've been blogging about it a bit but realised I hadn't mentioned anything here yet so now I have haha.

You can also use the Widgets -> Order... menu option to select from a text list of widgets (including any that may be hiding offscreen) so you can edit its script and properties without needing to actually see it

I suspect the "hide offscreen" workaround may work for buttons inside contraptions too tbh, which keeps things a bit neater. If you set the position manually using the console you should be able to position it to be sure it's offscreen even if the contraption is up against a corner in the outside world.

I'm not sure yet whether the overall behaviour around widgets in the outside bits of contraptions is intended or not, but I do know that one of the design considerations on Decker is that decks should still be usable on touch-only devices, and not require keyboard input. So I think the intent is to not be able to have keypresses without a corresponding clickable button.

Hiding a button off screen might work as a workaround though if you really want to do it. But if you're targeting web decker and don't mind diving into the danger zone, there's also functionality in the forbidden library to read keypresses directly from javascript.

I guess a question is what do you mean by timelapse features?

You can, with a bit of simple scripting, set things up so that like things change after a certain amount of time has passed, is that what you're hoping to do?

Hi. It would help if you uploaded your own deck, that way I can have a look and find out where it isn't working.

And the reboot continues! https://zine.milliesquilly.com/ex/ex2.html

I had a lot of fun with the new dither brushes in this one, and as a result it's now the largest size deck I've ever made and I had to zip it to fit it on a floppy disk! Lemme know what you think!

Hi!

I'm sorry I'm not very good at making videos but hopefully this will still be helpful.

Where have you got so far with Path? As a starting point, you probably want to set something up like the "Follower animation demo" in the Path documentation. Essentially, copying what's there and changing the art to suit your purposes. There's an associated contraption that you'll need to import into your own deck to make this work.

The next part is making things trigger based on the movement. There's not really any set way to do this, but one way to do it is that when the follower has stopped walking, it calls a finish[] event, and you can put code in that event to check where the follower's current position is and make events happen accordingly.

I'm not sure if this makes much more sense than the tutorial, but if you can let me know which parts make sense and which parts don't we may be able to work it out.

Hi! I'll do my best to answer your questions, but please let me know if anything doesn't make sense to you, and I will try to explain more clearly.

1:

When you're doing the style settings in Dialogizer, there's two key attributes to get it to animate with sound. The first is "tsound" which specifies a sound to play for each word, and the second is "speed" which specifies how fast or slow the text will appear.

For example, if you have a script in a field and a sound:

o:()
o.tsound:"sound1"
o.speed:3
dd.open[deck o]
dd.say[field1.value]
dd.close[]


2:

When you play a sound using the "play" command you can specify that you want it to loop. When you do this then it will loop continuously including over other cards, until a command is used to stop it.

To start a sound:

play["sound1" "loop"]

and to stop it:

play[0 "loop"]

3:

One way to make it easier to keep animation frames consistent and lined up is to use the grid functionality. When you're in drawing mode, in the View menu there is an option to "Show Grid Overlay" which will add a grid to the screen that you can use to line everything up. And if you click "Grid and Scale..." then you can change the size of the grid if you need to.

4:

Yes! As part of the setup for Puppeteer, you will have added an "on animate do" function - this is what Dialogizer uses to work at the same time as Puppeteer and other scripts. So if you add the zazz commands here then they will run as well.

For example, in a current project I have this in a card-level script to make the zazz animations work.

on view do
 zazzanimations[]
 go[card]
end
on zazzanimations do
 zazz.flipbook[coffee coffeeframes 0.0015]
end
on animate do
 zazzanimations[]
 pt.animate[deck]
end

I've put the zazz command in its own function so that I only have to change it in one place.


5:

So basically you will need to create a separate card with checkboxes on it, to store the values. E.g. make a card called "flags". Then you add a checkbox on this card named "gotkey"

You can in your code refer to the value of this card like so:

#to get the value
flags.widgets.gotkey.value
#or to set the value
flags.widgets.gotkey.value:1

You can reset it by having some code that runs at the start to reset the value to 0, or if you set the checkbox as "volatile" then it will automatically reset when the deck opens.


I hope this all makes sense. If you have more questions I'm sure people here would be happy to help out.

And I think it is absolutely OK to share projects that aren't in English. I know there have been a few Decker projects that are in languages other than English. People may not be able to understand it but you shouldn't let that stop you!

yay you put it out! thanks for the shoutout :3

Your decks are so good!

(1 edit)

So, when you quit Decker it pops up the thing about saving your changes, had you been clicking "save" on that? My understanding is Autosave runs periodically (like every however many minutes) so it may be missing the final changes if you make them right before finishing


Edit: I've been told that when autosave is on it will just save automatically so I'm guessing you're not seeing the prompt haha

Yeah, if you can send me the broken build that would absolutely help!

Hi,

So in theory Decker shouldn't crash, even if you write something that doesn't work. And the things not saving sounds like an issue. In the interests of figuring this out so it can be fixed for others, can you let me know what you'd put into Dialogizer that crashed things, so I can try and see if I can recreate it? And also, what sort of things weren't saving?

Also, just want to mention this was a really lovely project that turned out really well, great work!!!

I'm glad you felt able to release this! It's really good and also I'm really glad that things have gotten better for you <3

And from that season finale, a reboot! Which took less time than I expected, I think because I felt inspired by the less weight! https://zine.milliesquilly.com/ex/ex1.html

The effects with the coloured text are so good!

Hey, I'm writing a bit more about this one in a zine I am doing but I wanna say that your art style is absolutely charming and adorable and I really like it! This is super good!

Another heads up, I was just installing on my freshly reimaged Raspberry Pi and I found in addition to the SDL libraries I had to run

apt install xxd

in order to get the build to work. I guess xxd isn't part of the standard OS image? Either way hopefully this saves someone else some hassle.

Made a little update to the blackdip function, added an optional parameter to fade to colours other than black, so you can do this now!


It could be worth having a look at the Dialogizer module that comes with Decker - although it's designed around visual novel style dialogue and choices it basically is a module that'll pop up a box on screen and the style and position can be customised, including custom borders and rich text.

and the season finale is out https://zine.milliesquilly.com/issue30.html

As a heads up since I've seen a few people ask about it, if you're getting a  continuous clicking noise from Decker, that seems to be a bug in certain versions of SDL2. https://itch.io/t/5229926/decker-makes-constant-clicking-sound-on-one-of-my-comp...

Fixing it is likely up to your Linux distro in terms of updating to a newer version of SDL2 that fixes the bug, but in the meantime starting Decker from the command line with 'decker --no-audio' should disable audio and stop it bothering you at least.

This probably isn't the best place to ask me this, since that guide does have its own comments section, but it looks like it's due to this issue. https://itch.io/t/5229926/decker-makes-constant-clicking-sound-on-one-of-my-comp...

Short version: it is a bug in certain versions of SDL2. Fixing it may be up to your distro upgrading to a version that fixes the bug.

It looks like the freezing issue is fixed with the latest Decker version - so finally I can check this out! The demo songs sound really cool!!! This is great!

Decker community · Posted in font

So, Decker doesn't use standard Windows format fonts, it uses its own font format. So if you're hoping to add like times new roman into Decker for example, you may be out of luck. But there are extra fonts you can add into your deck, or you can make your own if you want!

In the examples folder in Decker, there's a deck called fonts.deck that has a lot of explanation about how fonts work, as well as having a bunch of extra fonts you can add. In order to add the included fonts to your own deck, you can drag the fonts.deck onto Decker while you have your own deck open, and it'll pop open the Font/DA Mover that lets you copy fonts from the deck into your own. If you open fonts.deck itself, you'll also find a Font Editor button, which you can use to create your own custom fonts.

If you're looking for more premade fonts than are included with fonts.deck and aren't keen on making your own, then you might want to check out Coral Nulla's port of the Not Jam Font Pack into Decker.

There's also a few extra fonts in the decker-fonts github as well as a while back IJ ported a bunch of old Windows 95 fonts into Decker.

Hopefully this makes sense.

It's not too hard to set up. If you drag the "brushes.deck" onto an open Decker window, it'll pop the Font/Deck Accessory Mover up. If you then add the "screenPrints" module to your deck, then that'll add some extra brushes to the toolbar that paint like half-tone patterns that you can use for dithering.

So this might help a bit, but basically there's two ways of setting the colour/pattern of text in a field. It sounds like what you're doing is using the "select a bunch of text and change it with the text menu" option, which yeah does seem to not affect newly added text. But you can also select the field in widget mode, go into the properties (double-click or widget -> properties) and then there's a "pattern" button. If you set the pattern or colour there, that becomes the default for that field, so when you're writing into it in interact mode it'll come up as the colour you want. Hopefully this helps / makes sense.

So for what it's worth it looks like the new version 1.58 adds some features to the custom brushes, and includes some extra brushes in the "brushes.deck" file that basically do this but make it work - so you can use a brush that paints a halftone pattern.

Worth noting this is pretty much obsoleted now since the new version supports coloured text fields natively. Although I guess the drop shadow one could still come in handy

(or you could just put one field behind the other offset up and to the left, and make the top field transparent)

waaaah thank you for the shoutout :3

I mean you could do that but you might have a better time compiling from source to get a native version. I've even made a helpful guide! https://micpp.itch.io/how-to-install-decker-on-linux

I whipped up a guide, if that helps. https://micpp.itch.io/how-to-install-decker-on-linux

I've seen this question come up every so often, so I thought I'd make a deck explaining how to install Decker from source on Linux. https://micpp.itch.io/how-to-install-decker-on-linux

I've had a thought about whether this could be achieved with custom brushes - like a brush that just draws a halftone pattern. I tried making a brush that just has a halftone pattern, and while you can kinda use it to stamp areas of dither, dragging with it makes the effect fall apart, and lining it up can be tricky. So it's not exactly a solution but let's call it an experiment.

You can try it yourself, by putting 

brush["ditherBrush" image["%%IMG0AAoACqqAVUCqgFVAqoBVQKqAVUCqgFVA"]]

into the listener.

Other thoughts I've had are whether an extra fill function would work - i.e. instead of filling every single pixel in the area it just fills half of them in the halftone pattern. This could probably be written as a function in a module maybe (i.e. pass it in an image and coordinates) but that's not as convenient as having it in the UI. But this might be easier to implement than reworking the way the patterns function? (Since the 1-bit nature of them may be difficult to change)

Hi! This is really impressive! I've dabbled a bit with audio myself but this feels a level above in terms of complexity.

Although for me it's crashing to desktop after a few seconds of playback - so it would be good to find out why that is, because if that's fixed it's potentially really useful.

Ahh I'm shy about my voice though haha but thank you!!!

(1 edit)

Hi,

So I think the issue is having the pf commands in the root of the script instead of inside an event. I think what's happening is that when palettefade runs, it likely refreshes all the stuff in the root level script, which then gets itself into a loop where it's calling itself over and over. I'm not fully sure myself of the logic of when these are called, generally except for like setting constants (like palettes and such) I put all my logic inside events.

If you put the commands inside the "timepass" event, so that they're only called when this event is called, does that help?


Edit: so I did an experiment with the unlocked version of your deck and this seems to fix things. Remove the setpalette and palettefade commands from the root of the script and put them inside "timepass" like this

on timepass do
 t.value:t.value+1
 if t.value=1           
  pf.setpalette[deck morningpalette]
 elseif t.value=2
  pf.palettefade[deck morningpalette noonpalette 60]
 elseif t.value=3
  pf.palettefade[deck noonpalette sunsetpalette 60]
 else
  pf.palettefade[deck sunsetpalette nightpalette 60]
 end
end