devolution

Author Topic: General Discussion  (Read 3817096 times)

0 Members and 9 Guests are viewing this topic.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9435 on: February 13, 2017, 11:32:53 AM »
- Arena is questionable in both logic and gui. Gui aside, it still uses mostly alpha logic which is highly incompatible with most beta mechanics.
Besides, I'm almost completely sure that creating dozens rchars only to be used as fighters at arena is like to shoot sparrows with a cannon.

Over a hundred... actually. And I cannot update rchar creation without normalization routines (tiers again...).

- Finance and Friends tabs at the hero screen are afk. Both are small, independent systems.

Both worked perfectly fine last I checked them. If something was edited in the meanwhile, it was not done so by me. You do actually need data for them, like at least some fin stuff to build reports and at least one friend/lover.

- SE and simpy-based jobs are not operational, making any characters activity problematic.

They are fully and completely operational. To balance and make them meaningful, we need tiers (yet again), but from the stand point of logic, we're good. Clients are well managed, they wait for girls to free up, they are redirected to bar/club and wait for their turn if brothel within the same building does not have rooms/chars and etc. All reports are generated and sent to ND screen. Cleaning broke down for reasons unclear to me, but that is one of the easier setups. Workers can now now not only be given very specific duties but are "smart", in a way that when, for example, building gets too dirty to provide service and there are no cleaners or not enough of them to coop with that, other workers that don't consider themselves beneath doing a bit of cleaning, do just that. SE writes to ND reports, it writes to FG reports and a lot of logical functionality is basically operational.

Skeleton code is sound and doesn't ctd under normal operations. I've ran into the same wall as with everything else, it's close to impossible to judge workers relative productivity vs client demands/expectations vs character generation and progression during the game play.

But to say that they are not operational... is plainly wrong. You even get adaptive job options depending on what businesses are present in the buildings, same when you sort chars in chars list screen. They are not balanced or provide sound rewards, so they are not very interesting. Code setup is confusing due to usage of old Job classes and complexity of SimPy, but they are working in a way that they do provide random bonuses, redirect clients and workers, build reports and etc.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9436 on: February 13, 2017, 12:25:34 PM »
Both worked perfectly fine last I checked them. If something was edited in the meanwhile, it was not done so by me. You do actually need data for them, like at least some fin stuff to build reports and at least one friend/lover.
Indeed. I was under impression they are not working because they don't show a thing at turn 1, while in theory they should show zero.

Then one problem remains, gui used for finance screens, both MC and buildings, are undoubtedly the worst gui in the whole game atm.

They are fully and completely operational.
I don't see a single mention of simpy in classes-jobs. And it's the main file for jobs skills checks.


As I feared, it's plainly impossible to use webms as mobs sprites, the game does not expect such format. And I'm not really sure how to make mob.battle_sprite = manually animated image, such as
Code: [Select]
    image test_test:
        "content/gfx/animations/mob_test 0.13 1/25734.png"
        "content/gfx/animations/mob_test 0.13 1/25735.png"
        "content/gfx/animations/mob_test 0.13 1/25736.png"
        "content/gfx/animations/mob_test 0.13 1/25737.png"
        "content/gfx/animations/mob_test 0.13 1/25738.png"
        "content/gfx/animations/mob_test 0.13 1/25739.png"
        "content/gfx/animations/mob_test 0.13 1/25740.png"
        repeat

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9437 on: February 13, 2017, 12:56:16 PM »
Then one problem remains, gui used for finance screens, both MC and buildings, are undoubtedly the worst gui in the whole game atm.

I am not sure how to improve upon that without a complex adaptive spreadsheet setup of some kind.

I don't see a single mention of simpy in classes-jobs. And it's the main file for jobs skills checks.

We talked about that in chat, skill checks should now be in business methods, they generate data that is sent to Jobs to generate reports and award bonuses. It's a horrific setup code-wise due to clumsiness and complexity, but it does work reasonably well. Trouble is that without tiers/jobs restructure, if we continue with "working reasonably well" setup, we'll bury ourselves in that complexity.


As I feared, it's plainly impossible to use webms as mobs sprites, the game does not expect such format. And I'm not really sure how to make mob.battle_sprite = manually animated image, such as
Code: [Select]
    image test_test:
        "content/gfx/animations/mob_test 0.13 1/25734.png"
        "content/gfx/animations/mob_test 0.13 1/25735.png"
        "content/gfx/animations/mob_test 0.13 1/25736.png"
        "content/gfx/animations/mob_test 0.13 1/25737.png"
        "content/gfx/animations/mob_test 0.13 1/25738.png"
        "content/gfx/animations/mob_test 0.13 1/25739.png"
        "content/gfx/animations/mob_test 0.13 1/25740.png"
        repeat

I know, it's mostly this code:

Code: [Select]
            sprite = char.show("battle_sprite", resize=char.get_sprite_size("battle_sprite"))
            char.besprite_size = sprite.true_size()

that prevents that. I've recoded that for a more universal setup in BR just few minutes ago, gonna adapt it to our setup when diving into BE code again.

We'll still need adaptation of color gradient overlays, BR setup is much simpler and doesn't do that or does that with sprites from photoshop instead of code... so it's a bit more complicated for our needs.
« Last Edit: February 13, 2017, 12:59:40 PM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9438 on: February 13, 2017, 01:28:52 PM »
We also have masks damage effects, when mob sprite is used as a mask for static or animated picture.
Is it possible to use a webm as a mask for something else? Because a monophonic texture of desired color and low alpha which uses webm as a mask can replace plain recolors. Although I doubt it can be achieved easily.

In the worst case unsupported damage effects will be disabled, since only special mobs will have animated sprites.

Anyway, I need any kind of support for animated mobs sprites, be it webms or sprite sheets. Webms are better due to custom alignment, but if sprite sheets can natively support more damage effects, they are probably better.
« Last Edit: February 13, 2017, 01:34:21 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9439 on: February 13, 2017, 01:33:14 PM »
We also have masks damage effects, when mob sprite is used as a mask for static or animated picture.
Is it possible to use a webm as a mask for something else? Because a monophonic texture of desired color and low alpha which uses webm as a mask can replace plain recolors. Although I doubt it can be achieved easily.

In the worst case unsupported damage effects will be disabled, since only special mobs will have animated sprites.

Yes, it should be possible to mask over animated sprite to look just as good as recoloring thing we do now.

Anyway, I need any kind of support for animated mobs sprites, be it webms or sprite sheets.

Both will prolly work equally well.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9440 on: February 13, 2017, 01:34:45 PM »
Also, since bestiary requires a static sprite to show a mob, they probably need both animated and static sprites.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9441 on: February 13, 2017, 01:48:50 PM »
static sprite to show a mob

We have no mechanics to store animation reference for any kind of a sprite. Mobs are fairly simple... I've already thought of a way to support animations globally if lamoli wraps up a pack before beta.

One of the main problems is that animated sprite will look really silly with most of our effects... like it's be animated at it's idle state while shaking and stuff like that :(
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9442 on: February 13, 2017, 02:05:22 PM »
They won't be humanoids. Any humanoid would require advanced animation system to look naturally anyway.

But there is nothing wrong with a boiling plasma ball if it keeps boiling while being shaken.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9443 on: February 13, 2017, 05:43:30 PM »
They won't be humanoids. Any humanoid would require advanced animation system to look naturally anyway.

But there is nothing wrong with a boiling plasma ball if it keeps boiling while being shaken.

K... default animated state is surprisingly easy to setup, I'll port code from BR to PyTFall for that tomorrow.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9444 on: February 13, 2017, 06:54:28 PM »
We also have masks damage effects, when mob sprite is used as a mask for static or animated picture.
Is it possible to use a webm as a mask for something else? Because a monophonic texture of desired color and low alpha which uses webm as a mask can replace plain recolors. Although I doubt it can be achieved easily.

Code: [Select]
image movie = Movie(channel="main_gfx_attacks", loops=3, play="movie.webm", mask="mask.webm", to_image=Image("gallery2.jpg"))

init python:
    def ColorBlend(d, color="#000", alpha=.5):
        return AlphaBlend(Transform(d, alpha=alpha), d, damage_color, alpha=True)
       
init -1:
    transform damage_color:
        Solid("#732626", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#7A1F1F", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#821717", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#8A0F0F", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#821717", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#910808", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#990000", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#910808", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#8A0F0F", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#821717", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#7A1F1F", xysize=(config.screen_width, config.screen_height))
        0.05
        Solid("#732626", xysize=(config.screen_width, config.screen_height))
        0.05
        repeat

image darkend_sprite = ColorBlend("movie")

label start:
    while 1:
        show darkend_sprite
        pause
        hide darkend_sprite
        pause

Kind of a proof of concept... just randomly copypasted color hexes from here: http://www.december.com/html/spec/colorhslhex.html

I tried finding some form of interpolation formula but no luck so far... It'd be cool if we could overlay to any color like we do with still image sprites already.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9445 on: February 14, 2017, 04:03:43 AM »
It's possible to get rid of recolors using mask based effects instead. I found some promising animations.

Surprisingly, even though poison damage animation is the easiest to imagine (some kind of poisonous looking bubbles moving around), it's also the hardest to find.
There are very cool animated poison textures, but they are not free.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9446 on: February 14, 2017, 05:11:17 AM »
We prolly can't use webms for this, they all have to run on separate channels to avoid timing collisions. Than can add badly.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9447 on: February 14, 2017, 09:37:09 AM »
FUCK!

Found serious issue in BE timing manager, we run the functions before waiting for pause... I am 30 - 60 mins away from wrapping up base port, gonna move some of the new code to PyTFall afterwards and see what happens...

Edit: Phew... maybe nothing got broken somehow? Everything seems to be timed even better now :D
« Last Edit: February 14, 2017, 10:18:45 AM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9448 on: February 14, 2017, 10:40:57 AM »
We prolly can't use webms for this, they all have to run on separate channels to avoid timing collisions. Than can add badly.
Too late for that, there are at least two damage effects based on webm.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9449 on: February 14, 2017, 11:20:37 AM »
Too late for that, there are at least two damage effects based on webm.

They are likely to work but they should be on unique channels.


Just pushed BE update.

- Huge fix for timing management, we were running all queued funcs one turn too early. That caused a number of issues which I believed to be due to imperfections in Ren'Py animations mechanics. Now BE timings should run perfectly on queue. All Skills I've tested are the same or are acting better (without abrupt endings), why nothing broke down is a bit of a mystery.

- Mobs can now take animated sprites. It works like this: We do a search for a renpy image tag and see if there is something bound to it, tag pattern is:

Code: [Select]
mod.id + "_besprite_idle"
For example, to test, I renamed old miku auto-animation from Alpha to "mikudance_besprite_idle 0.2 1". Using auto-animations is not needed, one can simply:

Code: [Select]
image mikudance_besprite_idle = Movie(channel="miku", .....webm, ...)and etc.

If not found, normal sprite will be used. Obviously everything that is targeted at animated sprite that expects it to be a still image will throw "Got displayable instead of expected image Exception".

Miku is in the BE testing scenario.
Like what we're doing?