La-Quien Tales

Iteration 3. I'm actually happy enough with this one to draw the outer clothing for it and try moving on to unarmed stance and a walk cycle. Valis's open stance is just hard to do in low res. The movement is a lot more exaggerated than I envision, and I couldn't really do the finger twitching like I wanted, but I knew that would be the case going in.

Valis glanced down and scraped a foot gently along the floor. Apparently satisfied, he unsheathed his sword and spun it around his wrist for three revolutions, then settled into his opening stance. Facing left shoulder forward, Valis held the weapon in his right hand loosely behind. His left hand lay in a slight horizontal guard, fingers twitching and flexing unconsciously.

Just for kicks I looked at Capcom's D&D games as a possible example, but all they did was animate the upper body only, and I always found that too robotic. I prefer a little too much motion over looking disjointed. I think the personality still comes through OK ("I'm calm and collected, but I'm itching to f*** you up.").

valis-sprite-idle-ex-4.gifvalis-sprite-idle-ex-4-lg.gif

DC
 
Fine tune the hair and cape just a little more, add his tunic, and apply an in game palette to see what we get.

valis_idle_ex_tunic_0.gifvalis_idle_ex_tunic_lg_0.gif

Assuming no more major changes, that just leaves his default closing (Surcoat). should be easier than the tunic since it will be less bouncy.
 
Little bit of geometry work here. Figuring out something I've yet to see fully implemented in OpenBOR... or really any sprite engine for that matter, and for good reason. It's a massive PITA, and most engines/consoles can't do it all. OpenBOR can, but it won't be easy. I'll let ya'll guess what effect it is...

1699649417929.png

On a related note, I'm inching closer to making this an official game project to accompany the book. If I do, I might pare down the clothing choice idea just so I can get through things faster. The full coat and cape was intended to be his default, but the tunic and cape alt has really grown on me. That and turns out it's a lot easier to animate. I've yet to get an idle animation with the coat that looks right to me. Thoughts?


1699649533939.png valis_idle_ex_tunic_lg_0.gif
 
Last edited:
Not sure about the cape but I love the coat!!! Looks better than the tunic imo

About the geometry… I think you mean like the first fatal fury doing different planes sizes? Close to the screen bigger size. I remember there was an arcade beat’em up like that.
 
I think you mean like the first fatal fury doing different planes sizes? Close to the screen bigger size. I remember there was an arcade beat’em up like that.

No. That's old hat. I had Z based auto scaling going back in 2006. Pretty easy to do really.


The geometry stuff is for night vision - where everything is blotted out except around the player to simulate the darkness. Technically games usually do it by using a screen sized overlay that covers all on screen elements with a hole in it centered around the player. It's braindead easy to implement in a single player game or multiplayer games where everyone has their own screen... but an absolute nightmare in single screen multiplayer games because the overlays interfere with each other.

I've never actually seen it done at all. I'm sure there's a couple of games that have it, but I've just never heard of one. I have seen some approximations where areas are highlighted around the players to get a similar effect, and you can find plenty where there are static areas of vision/darkness that don't center around any one player, but those aren't the same thing. I've also seen some various compromises and hacks... One trick you see a lot is just not showing enemies or darkening them until they get close to the player. Some go the other way and let you see enemies, but not terrain (Golden Axe 2 Arcade). The problem is these are all or nothing compromises. I'm not interested in compromises. The effect will be exactly as I want it, or not at all. :)

To compound everything, I want different characters to have unique ranges to reflect their abilities. Valis for example, is a half-elf, so he has a bigger dark vision bubble than the human characters. Another character is a dwarf with a huge bubble that covers most of the screen.

I wasn't sure how to make it work because most engines (OpenBOR included) think in squares, not spheres. Couple of days ago though, I came up with a solution in the shower. What I'll do is create a set of split overlays (upper and lower) for each character, shaped with an appropriate vision bubble. Then, I will run radius checks to see if areas of the vision bubbles overlap. If they do, then it comes down to finding the overlapping square area, and setting up clipping accordingly so the overlays don't double up, and any overlapping bubbles combine seamlessly into each other.

There's a bit more to it, but that's the basic gist.

DC
 
Last edited:
Note for self, Synergy mechanic concept: To emphasize their twin camaraderie, if Valis and Ronnel are on screen together, they will automatically share a single HP pool.

This pool is considerably larger than their individual pools combined, but once empty both brothers are defeated.

DC
 
The geometry stuff is for night vision - where everything is blotted out except around the player to simulate the darkness.
Ah cool idea. I always wanted to include it on my avengers game and I ever discovered how - there is a trick with alpha blending that makes the bright area to combine if two are overlapped instead of multiplying then but I never implemented it fully.
 
The geometry stuff is for night vision - where everything is blotted out except around the player to simulate the darkness
Ah cool idea. I always wanted to include it on my avengers game and I ever discovered how - there is a trick with alpha blending that makes the bright area to combine if two are overlapped instead of multiplying then but I never implemented it fully.
This is not finished yet but some years ago I made an experiment as a draft for another project I have. I can share the code in case you think it's useful.
The light has two bright levels plus with the additional effect of making the monsters avoid you. Look at the first seconds of the video how the enemy pursues the player and starts to avoid as soon as the light is activated.
I make this system to work with torches that are temporarily activated.

 
Dunno about DC, but I want it for sure :)
@Kratus,

That looks really nice. I don’t know if it will work for me, but I'd love to have a look.

DC
After some tests I discovered that a white image with alpha 6 can nullify a dark image with alpha 3. So, I put a dark image that covers the entire screen and the white image below can "open" a space showing what is behind.

In addition, you can control the bright level by mixing two or more white images with lower channel values, like I made in the entity below. Then I can attach the light entity to any other entity like a torch or a lantern. I had to reduce the brightness a bit in all other level elements to guarantee that the dark image with alpha 3 will cover everything.

The only thing I haven't finished yet is a code to limit how much white images can be placed in similar coordinates, preventing from covering the space with excessive white color.

C:
##MAIN
name            Light
type            pshot

##MISC
nolife            1
shadow            0
setlayer        8000

##SCRIPTS
onspawnscript    data/scripts/onspawn/light.c
ondrawscript    data/scripts/ondraw/suicideP.c

##ANIMATIONS#############################################################################

anim idle #LIGHT OFF
    loop    0
    delay    128
    offset    100 100
    frame    data/chars/itens/light00.gif
    
anim follow1 #LIGHT ON
    loop    0
    delay    128
    offset    100 100
    drawmethod alpha 6
    drawmethod channel 0.3
    frame    data/chars/itens/light01.gif

1700270434967.gif

C:
##MAIN
name            Dark
type            panel

##MISC
speed            5
scroll            0.2
shadow            0
setlayer        9000

##SCRIPTS
onspawnscript    data/scripts/onspawn/dark.c

##ANIMATIONS#############################################################################

anim idle #DARK OFF
    loop    0
    delay    128
    offset    500 500
    frame    data/chars/misc/dark/empty.gif
    
anim follow1 #DARK ON
    loop    0
    delay    128
    offset    500 500
    drawmethod alpha 3
    frame    data/chars/misc/dark/dark00.gif

1700270479573.gif
 
After some tests I discovered that a white image with alpha 6 can nullify a dark image with alpha 3. So, I put a dark image that covers the entire screen and the white image below can "open" a space showing what is behind.

In addition, you can control the bright level by mixing two or more white images with lower channel values, like I made in the entity below. Then I can attach the light entity to any other entity like a torch or a lantern. I had to reduce the brightness a bit in all other level elements to guarantee that the dark image with alpha 3 will cover everything.

The only thing I haven't finished yet is a code to limit how much white images can be placed in similar coordinates, preventing from covering the space with excessive white color.

C:
##MAIN
name            Light
type            pshot

##MISC
nolife            1
shadow            0
setlayer        8000

##SCRIPTS
onspawnscript    data/scripts/onspawn/light.c
ondrawscript    data/scripts/ondraw/suicideP.c

##ANIMATIONS#############################################################################

anim idle #LIGHT OFF
    loop    0
    delay    128
    offset    100 100
    frame    data/chars/itens/light00.gif
  
anim follow1 #LIGHT ON
    loop    0
    delay    128
    offset    100 100
    drawmethod alpha 6
    drawmethod channel 0.3
    frame    data/chars/itens/light01.gif

View attachment 5734

C:
##MAIN
name            Dark
type            panel

##MISC
speed            5
scroll            0.2
shadow            0
setlayer        9000

##SCRIPTS
onspawnscript    data/scripts/onspawn/dark.c

##ANIMATIONS#############################################################################

anim idle #DARK OFF
    loop    0
    delay    128
    offset    500 500
    frame    data/chars/misc/dark/empty.gif
  
anim follow1 #DARK ON
    loop    0
    delay    128
    offset    500 500
    drawmethod alpha 3
    frame    data/chars/misc/dark/dark00.gif

View attachment 5735

Very nice. I'll do some experiments and see if it works for my concept. Thank you sir!

DC
 
Yet another "quick" touch up on the sprites while I decide if I want to make the project official. Made the fallowing adjustments:
  • Font arm moves on each frame (previously just one).
  • Rear arm fixed to look more natural and less "telescopic" in motion.
  • Arms retouched to look less skinny. Valis never leaves home without the guns! :cool:
  • Armor has one more color to separate outline from links.
  • Eye has its own color (previously it shared color with armor).
  • Couple of retouches on coat sleeves to try and add a little depth.
  • Tip of ear has lighter color to emphasize the Half-elf point a bit more.
These examples represent all three possible in game clothing choices. Long coat is the default. As Mentioned before, the tunic and coat would be handled with bound entities.


valis_idle_ex_none_0.gifvalis_idle_ex_tunic_0.gifvalis_idle_ex_coat_0.gif

valis_idle_ex_none_lg_0.gifvalis_idle_ex_tunic_lg_0.gifvalis_idle_ex_coat_lg_0.gif

Not much more I can add for a while due to engine work, but pretty sure at this point I'm going to go ahead and jump all in. Don't want to jinx myself though!

DC
 
Last edited:
Back
Top Bottom