devolution

Author Topic: General Discussion  (Read 3788574 times)

0 Members and 8 Guests are viewing this topic.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9300 on: January 10, 2017, 02:31:11 PM »
I've updated the light transform, it's good. Air transform is outright amazing :)
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9301 on: January 10, 2017, 02:46:33 PM »
The whole text in ReviveSpell class is broken, it seems, not just numbers color.
Code: [Select]
                s.append("%s brings %s back!" % (char.nickname, t.name))

                s = s + self.effects_to_string(t, default_color="green")
In the log it should be green too judging by this line, but it's white.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9302 on: January 10, 2017, 02:52:10 PM »
Ok, I'll see if I can trace it to the source of the problem.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9303 on: January 10, 2017, 02:54:02 PM »
Two types of walls, both with a background, a door and three barrel formations, all in two different light settings (L on the keyboard) all in all now 354 files, 52Mb. This is somewhat comparable to the content for a single character. Is this going to be a problem? Could compress images to reduce their size.
That's a not very popular character, popular ones have 200-300 MB  :)

The dungeon looks awesome. I don't see a problem with 50 MB per dungeon unless you want to render more than 10 completely different dungeons, in which case it's more than 500.

Offline picobyte

  • Jr. Member
  • **
  • Posts: 75
Re: General Discussion
« Reply #9304 on: January 10, 2017, 04:00:56 PM »
Thanks for the responses. I agree the raytracing would be ideal, but we really would need more than a few programmers in spare time to write that. It's going to be a lot of difficult code. There is a simple pygame and a doom clone both written in python to prove that it can be done. Not sure whether c libraries would have to be compiled in ren'py though. I expect it to be more doable in c++/opengl. Personally I favor playing the 90 degrees angles in rpg games and not not the 360 degrees, which are more apt for first person shooters. But the rotations would be nice anyway to animate rotation and walking.

It is still a minimal environment, I think it would be nice, to render more objects, than the barrel formations, I have some ideas. but there is an issue. Currently objects always show the same face to the player. In effect objects rotate if the char does. To change this, objects with polarity could be rendered in all four orientations. This would multiply the nr of object images (i.e. in both lightings) by 4, and require some code changes. For most objects, this would be very nice visually. Maybe we can provide the current, only one face version as a minimum, and later provide the other orientations as a 'Mega' extension set.
The floor and ceiling are currently a rendered background. To be able to walk from one environment to another (instead one background per 'level'), the ground and ceiling could also be rendered as parts, like the walls. This gives some flexibility per level, but the image size would increase, also the render screen a bit more work.

Some more options to reduce size/images beside compressing images: Initially I had only the left images, I cheated on the right ones by mirroring. The difference was notable for near walls. We could reinstate the mirrored images for distant walls - in dark or misty environments. Or create the mirrored right ones during load if only left ones are on disk. Also, probably some walls could be created instead by image scaling and composition in ren'py. This will make the code more complex and the lighting of objects may not be as nice. Some objects we could only display when near in absence of light.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9305 on: January 10, 2017, 05:56:16 PM »
Thanks for the responses. I agree the raytracing would be ideal, but we really would need more than a few programmers in spare time to write that. It's going to be a lot of difficult code. There is a simple pygame and a doom clone both written in python to prove that it can be done. Not sure whether c libraries would have to be compiled in ren'py though. I expect it to be more doable in c++/opengl. Personally I favor playing the 90 degrees angles in rpg games and not not the 360 degrees, which are more apt for first person shooters. But the rotations would be nice anyway to animate rotation and walking.

As I've said before, there is a raycaster code to renpy (ported from pygame). It's a bit slow for high resolutions but only for 360 degree view, we can prolly rig it to work 90 and fix the steps to tiles.

This is up to you completely... it's your project, there is not likely to be any significant advantage to use raycaster instead of nyaa's engine other than smaller size of gfx resources.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9306 on: January 11, 2017, 03:48:50 AM »
By the way: in order to use battle engine inside your dungeon we could use a suitable background. While we could just use any random dungeon-like background, if you can render it using the same style you use for the dungeon, it will look better.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9307 on: January 11, 2017, 05:29:19 AM »
Just had an idea to make BE a bit more interesting, we could make skills more powerful depending on what week it is and cycle. Like one week ranged attacks are l33t, next fire based attacks and etc.

It might be a nice touch...
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9308 on: January 11, 2017, 06:13:48 AM »
Does the calendar at the main screen work somehow, or it's just for show? I mean that piece of art right above day of week.

It looks like a decent place to show such things.
« Last Edit: January 11, 2017, 07:09:08 AM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9309 on: January 11, 2017, 01:16:04 PM »
Does the calendar at the main screen work somehow, or it's just for show? I mean that piece of art right above day of week.

It looks like a decent place to show such things.

That is a bit different, it is showing the moonphase.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9310 on: January 11, 2017, 01:34:36 PM »
It's still a great place to show stuff related to week/month. Maybe adding a small button somewhere near the calendar, or in the tooltip.
It's almost pure BE coding though. I could come up with weeks/bonuses names and values, but logic itself is yours to implement.

Is there a way to access special traits fields like evasion_bonus? It's not a big deal, but "evasion +" for positive evasion_bonus would look neat at the trait info screen.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9311 on: January 11, 2017, 01:57:53 PM »
Is there a way to access special traits fields like evasion_bonus? It's not a big deal, but "evasion +" for positive evasion_bonus would look neat at the trait info screen.

It should be a field like any other, why can't you access it like everything else?
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9312 on: January 11, 2017, 02:12:16 PM »
That's how I access traits fields:
Code: [Select]
                if trait_info.min:
                    label (u"Min:") text_size 20 text_color goldenrod text_bold True xalign .45
                    for i in trait_info.min:
                        frame:
                            xsize 150
                            button:
                                background Null()
                                xsize 150
                                action NullAction()
                                if trait_info.min < 0:
                                    text (str(i).title() + ": " + str(trait_info.min)) size 15 color red align .5, .5 text_align .5
                                else:
                                    text (str(i).title() + ": +" + str(trait_info.min)) size 15 color green align .5, .5 text_align .5
It works for everyone.

But if I try:
Code: [Select]
                if trait_info.evasion_bonus:
                    label (u"Evasion:") text_size 20 text_color goldenrod text_bold True xalign .45
                    frame:
                        xsize 150
                        button:
                            background Null()
                            xsize 150
                            action NullAction()
                            if trait_info.evasion_bonus[1] < 0:
                                text ("minus") size 15 color red align .5, .5 text_align .5
                            elif trait_info.evasion_bonus[1] > 0:
                                text ("plus") size 15 color green align .5, .5 text_align .5
and then select a trait which doesn't have evasion_bonus, I'll get
Quote
  File "game/library/screens/character_profile.rpy", line 801, in execute
    if trait_info.evasion_bonus:
AttributeError: 'Trait' object has no attribute 'evasion_bonus'
Meanwhile trait class has evasion_bonus among other BE-only attributes, but they all are commented out. And if I uncomment evasion_bonus attribute, the game begins to CTD during evasion calculations.
« Last Edit: January 11, 2017, 02:28:39 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #9313 on: January 12, 2017, 06:34:10 AM »
I recon that you just need to change:

Code: [Select]
if trait_info.evasion_bonus:to
Code: [Select]
if hasattr(trait_info, "evasion_bonus"):
and it'll be fine.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #9314 on: January 12, 2017, 08:59:28 AM »
Hm. Attack and defence formulas are fine. The issue is damage formula.
Damage = attack/defence, you need super high attack to deal noticeable damage, while equal opponents will deal 1-2 damage to each other, making fights very long. I need to think about it, we need more aggressive formula, but with diminished returns.