Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411902 Posts in 69427 Topics- by 58475 Members - Latest Member: szálamireaktor

June 08, 2024, 02:56:46 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsProject Rain World
Pages: 1 ... 273 274 [275] 276 277 ... 367
Print
Author Topic: Project Rain World  (Read 1468763 times)
Christian
Level 10
*****



View Profile WWW
« Reply #5480 on: March 23, 2016, 04:00:44 PM »

Just came to mind, did you guys ever consider adding the idea of a poster had mentioned a while back, where you could knock off the head covering of a vulture and use it to scare/ward off lizards?
Logged

Visit Indie Game Enthusiast or follow me @IG_Enthusiast to learn about the best new and upcoming indie games!
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #5481 on: March 23, 2016, 04:15:49 PM »

 Wink  Wink  Wink
Logged

Ulumulu1510
Level 0
*


I could restructure this code once more...


View Profile WWW
« Reply #5482 on: March 24, 2016, 04:27:18 AM »

Wink  Wink  Wink
That winktm ^^ I am looking foreward to this.
Logged
presidenthobbes
Level 0
***



View Profile
« Reply #5483 on: March 24, 2016, 09:25:01 AM »

what if a vulture takes the mask of another vulture? Will there be vultures with just a stack of masks on?  Cheesy
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #5484 on: March 25, 2016, 06:48:25 AM »

LMAO you guys are going crazy over here. I'll file these in the bin for potential NG++ ideas Wink

but when will you sleep?
Logged

presidenthobbes
Level 0
***



View Profile
« Reply #5485 on: March 28, 2016, 05:18:23 AM »

LMAO you guys are going crazy over here. I'll file these in the bin for potential NG++ ideas Wink

but when will you sleep?
During the rain of course.
Logged
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #5486 on: March 28, 2016, 04:53:57 PM »

Im 1000% sure that my cryptic posts are nothing but frustrating, so my apologies, but WOWOW do I need someplace to gibber on excitedly:  Joars working on the most top secret of secret parts, something I've been looking forward to for literally years, and its turning out approximately 2000x better than I could have even imagined.  Tears of Joy
Logged

jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #5487 on: March 28, 2016, 06:16:00 PM »

On my end ive been implementing the music, finally. Only took 3 years! Its actually been much more difficult than anticipated. The music was written over such a long period of time and the game has changed so much over that course, the gameplay, mechanics, the look, the scope... so we had to do some killing of the darlings. Out of the 130 or so that had already been written, we selected 80ish that we felt best represented the current Rain World, and I started implementing from there.

Whats crazy is you might think that 80 tracks would make the world over-stuffed with music, and we did too. Joar even set up a super cool system so that over the course of a number of cycles the music events could change over time, expecting that we'd be layering scenes with different music moods when you return to them later in the game. And in some cases we did, for important narrative scenes, etc., that have some sort of cause/effect, but in general the size of the game is so large that 80 tracks actually feels spread thin! Certain regions totally need more music, so Im busting out the synthesizers and going back in!

We also have the framework in for a dynamic "threat level" music system (separate from the above, with is more event or location based), where a few layers of music fade in and out depending how how dire the situation is for lil slugcat, so Im going to be experimenting a bit more with that to see if it can be made into a more general audio presence without overwhelming the nice organic ambiance audio.

Fortunately I have some outside ears this time from my writing partner Lydia who has been doing some theme music for the individual creatures, and thats seriously been invaluable because i never in a million years would have thought I'd need to be writing MORE music at this point. So in roundabout answer to Gimmy's question, no sleep for me yet! Coffee Coffee Coffee
« Last Edit: March 28, 2016, 06:22:47 PM by jamesprimate » Logged

Dinomaniak
Level 2
**



View Profile WWW
« Reply #5488 on: March 29, 2016, 02:00:22 AM »

80 tracks... that's fantastic ! :D congratulations for that, must've taken you quite some time Smiley . Got to love the passion that you guys put into the project.
Logged

JLJac
Level 10
*****



View Profile
« Reply #5489 on: March 29, 2016, 06:16:52 AM »

Hi guys! Sorry about not devlogging and then busting in here asking your help haha, but I'm doing SUPER SPOILER stuff - once this is done devlogging will be back on, promise!

So, as I said I'm deep in spoiler territory, so I'll have to ask this question in the most abstract manner I can. Very technical question, as usual  Who, Me?

Imagine that you have an awful lot of objects in a 3D scene, say trees on a field, say 900 of them. You want to place them at random so it looks nice.

What I tried was an even distribution along the z-axis, so for each tree I give it a z-distance of, say, lerp(4, 400, treeNumber/totTrees).

Now because size decreases with distance according to a 1/x kind of curve, the visual end result is something like 1 or 2 trees up close, and a dense forest at the horizon. The tree that has distance 4 will get 1/4 scale, then 1/5 which is quite a bit smaller - but the difference between 1/294 and 1/295 is hardly noticeable - so it ends up looking like almost all the trees are at the same place way over by the horizon.



How do I assign z-distances so that the size decreases linearly?

I've already tried a lerp(4, 400, Pow(treeNumber/totTrees, 0.2)) kind of solution, but then I end up with a forest up in the camera and another one at the horizon, and a barren field in-between. I want an even distribution (and yeah I know I technically have an even distribution and that this is how fields of view works, but I want a visually even distribution).

(oh and yeah, I'm not adding a forest to Rain World, the question was ~cleverly obscured~)

(..or was it?)
Logged
maxl
Level 2
**



View Profile WWW
« Reply #5490 on: March 29, 2016, 06:47:30 AM »

Hi guys! Sorry about not devlogging and then busting in here asking your help haha, but I'm doing SUPER SPOILER stuff - once this is done devlogging will be back on, promise!

So, as I said I'm deep in spoiler territory, so I'll have to ask this question in the most abstract manner I can. Very technical question, as usual  Who, Me?

Imagine that you have an awful lot of objects in a 3D scene, say trees on a field, say 900 of them. You want to place them at random so it looks nice.

What I tried was an even distribution along the z-axis, so for each tree I give it a z-distance of, say, lerp(4, 400, treeNumber/totTrees).

Now because size decreases with distance according to a 1/x kind of curve, the visual end result is something like 1 or 2 trees up close, and a dense forest at the horizon. The tree that has distance 4 will get 1/4 scale, then 1/5 which is quite a bit smaller - but the difference between 1/294 and 1/295 is hardly noticeable - so it ends up looking like almost all the trees are at the same place way over by the horizon.



How do I assign z-distances so that the size decreases linearly?

I've already tried a lerp(4, 400, Pow(treeNumber/totTrees, 0.2)) kind of solution, but then I end up with a forest up in the camera and another one at the horizon, and a barren field in-between. I want an even distribution (and yeah I know I technically have an even distribution and that this is how fields of view works, but I want a visually even distribution).

(oh and yeah, I'm not adding a forest to Rain World, the question was ~cleverly obscured~)

(..or was it?)
The size of an object is inverse linear proportional to its distance, but that does not paint a complete picture. Even more so when a "visually even" distribution is wanted. Did you have a look at different easing functions? Like here: http://easings.net and mapping the distance to a distribution via one of these functions?
In the end, I think you'll have to experiment a bit with some functions and see what looks good. Maybe something involving a logarithmic/exponential function?  Smiley
Logged

Currently:


Released games: Nubs' Adventure | Rico
JLJac
Level 10
*****



View Profile
« Reply #5491 on: March 29, 2016, 07:49:37 AM »

Ah yeah of course, I'm being silly - in my setup I used a scale for distance that is basically "the distance value is what I divide the size by" (so a logarithmic scale, maybe?)  because I thought that would be easier, haha ~ And of course I run into trouble because of it.

Thanks for the curves, will try! Can't seem to find the hard maths behind them though - are they just different bezier curves?
Logged
JLJac
Level 10
*****



View Profile
« Reply #5492 on: March 29, 2016, 08:07:40 AM »

I solved it! Solution: Make the problem happen backwards instead (forest of trees close to the camera, nothing in the back) and then do an average between the forwards problematic curve and the backwards problematic curve. Programming isn't always pretty  Who, Me?
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #5493 on: March 29, 2016, 08:16:57 AM »

Well you might need a log fonction -> NINJAED

This problem was met with z buffer, so I'll google that:
http://outerra.blogspot.com/2012/11/maximizing-depth-buffer-range-and.html
http://www.ozone3d.net/blogs/lab/20090206/how-to-linearize-the-depth-value/

You might need to look along those line
Logged

JLJac
Level 10
*****



View Profile
« Reply #5494 on: April 03, 2016, 02:07:47 AM »

Hi! Remember me?

The big secrets are pretty much done, so let's try taking a few steps back towards devlogging again. Can't promise the super regular daily updates of times past as secret stuff will still pop up, but I think this month will be a good spot to at least break the solid silence. So here goes!

Update 523

The scavenger social memory, where they would track relationships to the player and remember them across cycles, has now been extended to the lizards.

This was in part approached as a difficulty tuning tool - by making the lizard default aggressiveness lower we can reel back the difficulty a bit (much needed) while still having the hardcore experience in there for those who seek it out. Basically it works like this:

Lizards have a unique social memory, where they can track memories of your behavior towards them. So if I throw a spear at a lizard or generally harass it, that will go into the lizard's social memory. The social memory consists of 5 parameters, "like", "fear", "temp like", "temp fear" and "know". At the moment lizards don't use the "fear" parameters (only scavengers do) so let's simplify by leaving those out for now.

So suppose you throw a spear at a lizard and miss - that's considered a negative "social event" where you are the subject and the lizard is the object of the action. All critters in the room that are aware of the subject and object and have the social event module in their AI are notified of this event and allowed to react to it. Most notably in this case the lizard itself, which is also the object of the action. In simpler terms, the lizard is allowed to understand that "the player did a bad thing to me".

This affects the social memory of that lizard. The "like" value is decreased, and the "temp like" value is increased even more (at a factor of 150% atm). So we get, say a "like" of -20% and a "temp like" of -30%. When deciding its actions, the lizard AI asks for the "temp like" parameter. The "temp like" parameter slowly moves towards the "like" parameter over the course of several seconds. In effect - the lizard will start disliking you quite a lot momentarily, but that will go away after a little while. However there is also a lasting memory which will persist for as long as that lizard is alive.

The "know" parameter is a modifier to changes in the relationship. It goes up every time the relationship changes, and the higher it is, the less effect the relationship change has (though it always has some small effect). This basically means that your first impressions are most important - if you start out by throwing 4 spears at a creature, it will be way more hesitant to befriend you at a later point, and if you're good friends with a creature it's more prone to give you the benefit of the doubt if a stray spear brushes close by it.

Not complicated enough? Don't worry!

Apart from the individual creature relationships, there is a system keeping track of your general reputation among different communities of creatures.



So in our "player throws spear at lizard" scenario, apart from affecting the social memory of that lizard there is also a small negative effect on the lizard communal opinion of you.

The reputation matrix is 2D - in the screenshot you can see the regions horizontally and the different communities vertically (there are probably more to come).

Throwing a spear at a lizard will have a pretty big effect on the lizard community in that specific region (the -5.3 in the image). But it will also "bleed", with a lower effect, into the global lizard community, and into the general community of creatures. Top left you can see the global/general reputation (yellow), which basically reflects how well perceived you are by the wildlife in Rain World in general. This one moves very slowly, but if you are a notoriously bad egg towards every living thing you come across, you'll be able to slowly wear it down, or vice versa!

Simplified, a creature encountering you will decide on its opinion of you according to the following priority:
Personal opinion
The opinion of its specific community in this specific region
The global opinion of its specific community
The regional opinion of the global community
The global general opinion

This means that if a critter has its own opinion of you, that will trump over any communal reputations. If it doesn't however (encountering you the first time) it will look to its regional community, and then go upwards towards the more general opinions.

Theoretically this should mean that you'll be able to develop specific relationships with any specific sub-group of creatures, but also your general opinion among creatures is kept track of sort of like a general good/evil parameter.

An interesting part of this is that being good to one creature basically always mean being bad to another - saving a scavenger's life by throwing a spear at a vulture, or killing a lantern mice to give to a lizard in order to make friends. How actions like those will affect the global opinion I don't quite know yet, we'll have to see!

At the moment most of the interactions you can take part in are negative - violence of different kinds. There is however the action of saving one creature from being eaten by attacking its predator, which is sort of a negative and positive. Really can't wait to see how this all plays out! Later we'll add the social interaction of gifting a creature and item or food, which will also be a positive interaction.

As positive interactions are generally also negative but there exist plenty of wholly negative actions, I have it set up so that negative reputations are slowly move back towards zero over the cycles, whereas positive reputations remain, to compensate. How this works and exactly how it will be tuned will have to be concluded through testing though.

All of this came about as a solution to a difficulty tuning problem - the game was just too tough on a new player. The idea here is that there'll be some adaptive difficulty because of this, the game being soft on the softies and hard on the tough ones. So if you're a fighter brawling your way through Rain World, Rain World will respond in kind, whereas if you're a pacifist the game will also chill accordingly.

Now to testing, testing, testing!
« Last Edit: April 03, 2016, 03:41:21 AM by JLJac » Logged
Dinomaniak
Level 2
**



View Profile WWW
« Reply #5495 on: April 03, 2016, 08:35:03 AM »

The entire social connection towards the world is interesting - I presume you plan on adding more ways to add methods of making peace, there could be a lot more factors that you could take into consideration, like
"madness" - perhaps it was previously injured and now it's not entirely sane. It might do unexpected actions at times.
"individuality" - do global rules apply to this particular individual ? is he an isolated specimen ?
"hesitation" - It thinks it would like to attack you, but it isn't sure. Just like two cats sitting on a fence about to fight.
"hunger" - after all those are predators and you are food. Even if you saved a lizard, you could save it again from death by starvation Smiley . You look chewy after all.
etc.

Also, let's say you have befriended scavengers but a lizard is hunting you. Will they try to help ?
If the lizards know the rain is coming, and they are your friends - will they help you into guiding you towards a shelter ?
Logged

oyog
Level 7
**



View Profile WWW
« Reply #5496 on: April 03, 2016, 11:32:05 AM »

Out of curiosity, if there is a lone lizard on a screen and you kill it will that still effect the global lizard opinion or would the death have to be observed by another lizard?
Logged
eigenbom
Level 10
*****


@eigenbom


View Profile WWW
« Reply #5497 on: April 03, 2016, 03:28:23 PM »

Saw this at GDC and it looks ultrarad. <3
Logged

Thirteen
Level 0
**


@i_am_thirteen


View Profile WWW
« Reply #5498 on: April 03, 2016, 04:35:09 PM »

I'm 276 pages late, but I power-read through the log, and I must say that your determination is very inspiring, and the game is awesome. You came this far by your own talent, and I really wanted to congratulate you, even this late, haha Smiley
Logged

lakithunder
Level 0
**


The Coolest of Turtles


View Profile
« Reply #5499 on: April 03, 2016, 07:07:20 PM »

Maybe another positive interaction could be just hanging out with another creature, or having some kind of shared experience, regardless of whether you exactly helped them with anything.
Logged
Pages: 1 ... 273 274 [275] 276 277 ... 367
Print
Jump to:  

Theme orange-lt created by panic