Page 1 of 1

can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 12:21 pm
by girng
i'm using hardcrawler spriter addon (https://bitbucket.org/hardcrawler/spriter) bless his heart.
Unfortunately i'm not able to get it to work. i loaded everything in,

Code: Select all

    spriterData = Spriter:loadSpriter("assets/spriter", "gbot")
    local animationNames = spriterData:getAnimationNames()
    spriterData:setCurrentAnimationName( "idle" )
i have

Code: Select all

spriterData:update( dt )
in my love.update

and i am drawing with:

Code: Select all

spriterData:draw( 0, 0 )
but nothing shows up on my screen.

These are my errors that I fixed, did i fix it wrong?
  • 1364 line: i changed canvas:clear() to love.graphics.clear()
  • then:
    addons/spriter/Spriter.lua:1415: Invalid blend mode 'premultiplied', expected one of: 'alpha', 'add', 'subtract', 'multiply', 'lighten', 'darken', 'screen', 'replace', 'none'.
    so i replaced:

    Code: Select all

    love.graphics.setBlendMode('premultiplied')
    with:

    Code: Select all

    love.graphics.setBlendMode("multiply", 'premultiplied')
got rid of the errors. but still nothing is showing up. man, i was so close too... i rigged my character with spriter..and everything :cry: :cry:

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 12:35 pm
by girng
ok actually it does show up!

however, it's inside a huge black canvas. it's HUGE and the character's offset is not correct:
Image

is there a way to just have it be drawn like if you were drawing an image? (rid of the black canvas, and remove weird offset)
position is supposed to be 0,0 lol

here is the Sprite:draw function if you need to take a look

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 2:05 pm
by pgimeno
girng wrote: Thu Sep 13, 2018 12:21 pm so i replaced:

Code: Select all

love.graphics.setBlendMode('premultiplied')
with:

Code: Select all

love.graphics.setBlendMode("multiply", 'premultiplied')
I think you want "alpha", "premultiplied".

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 2:08 pm
by girng
pgimeno wrote: Thu Sep 13, 2018 2:05 pm
girng wrote: Thu Sep 13, 2018 12:21 pm so i replaced:

Code: Select all

love.graphics.setBlendMode('premultiplied')
with:

Code: Select all

love.graphics.setBlendMode("multiply", 'premultiplied')
I think you want "alpha", "premultiplied".
Nice! Thank you! The black part is now gone. Yay! Now, just the character's x and y position is at a weird offset.
i'm doing

Code: Select all

spriterData:draw( 0, 0 )
but it is showing if it was at 400, 500 or something. Gonna take a look in the :draw method again

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 2:29 pm
by pgimeno
I think you can do spriterData:setCanvasOffset(-400, -500) or something like that. I don't use spriter, sorry. Doesn't Spriter offer a hook point? If so, that should be automatically used, but it doesn't appear like the library can handle that.

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 2:56 pm
by girng
@pgimeno i found a solution i think

Code: Select all

function Spriter:spriterToScreen( x, y )
	local centerx = Spriter.canvas:getWidth() / 2
	local centery = Spriter.canvas:getHeight() - 200
change -200 to / 2

then,

Code: Select all

--Using a shared canvas to avoid creating too many
--Not sure if the best idea, and certainly clunky to hard-code w/h
function Spriter:getCanvas()
	if not self.canvas then
		Spriter.canvas = love.graphics.newCanvas(300, 300)
	end
	return self.canvas
end
this was at a whopping 1000, 1000. change it to whatever the width/height of your char is. works perfectly so far! hope this helps anyone seeing this thread!

Image

btw, got my assets here: https://github.com/ndee85/gBot totally free MIT license. good for skeleton base!

edit: now i need to figure out how to change the animation speed :X

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Thu Sep 13, 2018 3:24 pm
by girng
BOOOOOOOOOM just figured out hoow to change the animation speed

Code: Select all

time = time + (dt * self.animation_speed)
under function Spriter:incrementTime( dt )

man, this is addon is FREAKING EPIC! i might actually buy spriter lolz. now can change it dynamically based upon a player's speed, etc. hell yeah :D :D

Re: can't get spriter to work (it does, but nothing shows up)

Posted: Fri Sep 14, 2018 1:30 am
by girng
Damn. Looks like there is one huge problem after doing all this to get it to work.

There is no animation transitioning. I have no clue on how to incorporate that :cry:

I checked out Spine's love runtime, works quite well (has animation transitioning too!). Except that puppy is $69.99 w/o even full IK support. And $300 with full IK. That's insane. FML

Could there be any possible workarounds?