Skip to main content

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

Character sheet workflow

A topic by mhigg created 69 days ago Views: 215 Replies: 3
Viewing posts 1 to 3
(+3)

I am starting a visual novel project, using Decker for the first time, and am seeking workflow advice.

I am trying to build a character sheet for use with Puppet (pt), and am using the following approach:

  1. Draw a "base" sprite for my character directly on a card, using drawing toolbars.
  2. Use "selection box" tool to select the drawing, and paste it as a new canvas, onto a new card named after the character. This canvas might be named "neutral".
  3. Make a copy of the "neutral" canvas, e.g "neutral_blink", "smile" etc.
  4. Attempt but fail to edit the new canvas using the card's drawing tools.
  5. Select/copy/past/modify a copy of the original card drawing somewhere else on the original card, but fail to create an identical bounding box when selecting the edited image for pasting into a new canvas on the character sheet (leading to janky blinks, etc.).

Is the intent to use a drawing tool other than decker to build the images to paste into the canvases? My instinct is that isn't "the way". Can anyone suggest an approach for creating variations of a canvas?

(+3)

There's a few ways to make sure your bounding box is identical when drawing different variations of characters for VN sprites. When you make a selection you can use the "Tight Selection" option before copying, this constrains the borders to only be the actual image. If the only differences are e.g. in facial expression then this can work well. Another method is using the "snap to grid" option, when this is enabled your selection box will be snapped to the grid, which means it's easier to make it the same size every time. I've used both these methods when working on my own VNs, so I hope this makes sense.

(+2)

This is helpful, thank you!

(2 edits) (+2)

Millie's suggestions are correct, but I'll throw in an adaption of a method that I used once because I was dealing with very large imported sprites.

I had each version of the sprite on it's own card in the same position (so flipping through the cards would look identical except for the expression change) and prepared a small script that copied out the same part of the Card image based on the position and pasted them into a new canvas.

If your stuff is set up in this strange way with many sprites in the same position on many cards, then this is a method that could be used:

You'll want to make a size/position reference widget (anything is fine, we just need it to be in the right size and position. A transparent canvas or field or button works) and line it up to where you want your sprite canvases to be cut out from the card.

Let's name that reference widget "frame" because that's what it's doing.

on click do
sprite:card.add.canvas
sprite.size:frame.size
sprite.paste[card.image.copy[frame.pos frame.size]]
sprite.locked:1
sprite.border:0
sprite.show:"transparent"
end

Stick this in a button, label it "spritemaker" or something similar and copy both your "spritemaker" button and "frame" reference widget around to each card and click the button on each one. Or leave "frame" on only one card and edit the script to refer to it where it is on that one other card (othercardname.widgets.frame instead of just frame in the script) it's up to you.

Rename "sprite" to the correct expression name and move it to your puppet's storage card. :)

It's kinda handy to be able to edit a sprite and then click the "spritemaker" button again to make a new copy of it.

But 99% of the time I'd recommend Millie's recommendations.