Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411507 Posts in 69374 Topics- by 58429 Members - Latest Member: Alternalo

April 26, 2024, 01:33:40 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsProject Rain World
Pages: 1 ... 92 93 [94] 95 96 ... 367
Print
Author Topic: Project Rain World  (Read 1447075 times)
JLJac
Level 10
*****



View Profile
« Reply #1860 on: July 24, 2014, 01:43:17 AM »

Yup, thanks! I hope we get some more material to flesh out the page with later~

Do you feel like sharing any of the ideas you had buzzing around your head?

uh guys, i think he meant "ideas about how to implement abstracted creature behaviour" hahah
http://gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php

edit:
Rewinding the thread I'm not so sure it's the answer to that question Who, Me? however still worth looking at Who, Me?
Not the current problem, but a super interesting read. As always, thank you so much for your input! I'll let this one brew for a bit and see how I can utilize it, I'm sure it will we very usable.

Update 276
These last days I've basically spent in angst about how to implement the creature abstraction. The problem is that this is such a fundamental part of the infrastructure - I can't really throw something together and then get back to it.

Yesterday I had a talk with James, and I think I've been able to take a step back from the problem. This morning I had an idea. In the end, it seems unnecessary to do a full-scale AI for creatures that are offloaded. It kind of beats the purpose of offloading them, right? With that in consideration, what is the only thing an offloaded creature can actually do that will be able to affect you in any way? There is only one action a creature in another room is able to perform that's going to influence you. That's exiting the room - an action that has the potential to take it to your room.

So the idea would be this: Separate all the actions that include room traversal into their own category. Only these will be able to occur in abstract mode.

At this point, the list is pretty short:
  * Random scavenging/idle milling about
  * Returning to den as rain is approaching

To this comes a few events that could possibly be added in the future.
  * Returning to den because of injury
  * Returning to den to store food
  * Going into adjacent room to investigate input from inter-room senses, such as inter-room hearing (to what extent this will be implemented is a game balance question)

So, the solution would be to strip off-screen creatures of any behaviors except these few.

But wait, doesn't this mean that the whole "living world" "terrarium" "creature autonomy" thing is thrown out the window? Doesn't this make the entire world become an illusion that's created in a radius around the player?

Not exactly. The idea is that in the same way as position etc is abstracted out there in the big world you're not looking at, AI is too. Creature interactions can still happen, but they (including the AI part)are abstracted to simple statistics. So say that a pup and a lizard is occupying the same node in abstracted space. Instead of a huge process of interaction between two AI's with path finders, tiles, physics, etc etc etc, the whole thing is reduced to "4% risk of eating per tick while they occupy the same node". By simulating stuff in statistics like this, stuff will still be able to happen off-screen, but not simulated in the same granularity.

Going to try an implementation this afternoon, and hopefully things will get moving again!
Logged
Fuzzy
Level 0
**



View Profile
« Reply #1861 on: July 24, 2014, 05:52:12 AM »

This is a great idea! I feel like you will sell a ton of these games! Hand Money Right Hand Money Left
Logged
Fuzzy
Level 0
**



View Profile
« Reply #1862 on: July 24, 2014, 06:09:57 AM »

Hey JLJac, just a suggestion but can you put in things you can find to change the look of you slugcat (e.g. hats, etc)? Thanks for posting so much and listening (reading) our suggestions/comments!

Could you do this JLJac? It could be something to customize your slugcat. You could find them randomly after a certain amount of time (or something like that), that would be cool. Maybe an old baseball cap or a big viking helmet (after all, even though their on an alien planet there are still lots of pipes). It could be good for achievement hunters. Or something like that. I know you have work to do on the AI but if you find time, it would be nice of you to implement it (of course you're still nice if you don't/can't implement it). Thanks sooooo much!
Logged
JLJac
Level 10
*****



View Profile
« Reply #1863 on: July 24, 2014, 07:36:12 AM »

Similarly to how you wouldn't have a baseball cap in a fantasy game because it's not fitting the setting, neither caps nor viking helmets are really true to the RW setting. That said, we do plan on having a variety of playable characters available, but we don't yet know if that's going to be a question of custom combinations of features or if it's just going to be a selection of characters to choose from. It's all much later stuff though, for now the general frame work needs to get done!
Logged
kruxus
Level 0
***


View Profile
« Reply #1864 on: July 24, 2014, 08:17:59 AM »

But wait, doesn't this mean that the whole "living world" "terrarium" "creature autonomy" thing is thrown out the window? Doesn't this make the entire world become an illusion that's created in a radius around the player?

It's all smoke and mirrors. And that's the beauty of it.
Logged
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #1865 on: July 24, 2014, 09:12:46 AM »

well also this is sort of long-term thinking, since we should be able to have plenty of non-abstracted creatures hanging around off-screen in the general area too (possibly even for entire regions.) its more about finding some scalable solution for when the world starts to get big and complicated.

figuring out at what point/distance/etc they become abstracted will depend on a bunch of factors down the line, but for now we need a structure that will work either way.
« Last Edit: July 24, 2014, 09:22:38 AM by jamesprimate » Logged

Whiteclaws
Level 10
*****


#include <funny.h>


View Profile
« Reply #1866 on: July 24, 2014, 09:37:00 AM »

Well, I think it sounds pretty good, What about making an AI on a smaller and bigger scale, one when you are in the room, and one that globally interacts with other rooms, for example

Let's say we had 16 rooms

.......
.....|.
.......
.......

And a lizard, one of these rooms would be his home den (|), now, he would wake up in the morning to chase in the rooms around, so, then, he would roam around his area, his state would be hunting, then, you'd calculate how much time it would take for the pathfinding to go from this entrance to a exit, leading to another room, that would be the time he would spend to get to another room (Current time in this room), so he would spent this amount of time in this room, and then move on to another room, till he finds some food or if the time he's been travelling, current time, is near the end of the day, then his state would change to coming back home, and you could use those states as hints to the smaller scale room based AI (activates when you enter the room), and time he's been in the room, to find where he could currently be and what he could be doing (Found food, spent 10 minutes in this room, he found a pray and he's eating a bit of it) (You could even add a random offset to the time he takes to travel between room, to signify that he has business in that room like he found a pray or is stuck in a pit or so), kinda divide it into two separate AI, global and room-based

Edit: You could even make so that different lizards interact with each others, for example, if a mother meets another mother, they will fight, one of them will die, then the pups in their den will not be protected, so either they will die, or a lizard that traveled in that room will eat them
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #1867 on: July 24, 2014, 10:10:49 AM »

Why not make AI outside the current screen in a quantum superposition that grew with times Who, Me? aka statistics that propagate through node according to time.  Huh? Ok I stop  Facepalm
Logged

Whiteclaws
Level 10
*****


#include <funny.h>


View Profile
« Reply #1868 on: July 24, 2014, 11:03:36 AM »

Why not make AI outside the current screen in a quantum superposition that grew with times Who, Me? aka statistics that propagate through node according to time.  Huh? Ok I stop  Facepalm

That sounds interesting,

A state machine that changes depending on randomized events, interactions with other beings (Player, pups and other lizards) and time passing, affecting it's behavior and movement thru the rain world, and those simplified states would be developped by a more intelligent AI, (Gotta Hunt becoming, I'm going to the nearest room where I scent food | Coming back home -> I gotta get some food and go back these rooms to feed my kids and go to sleep)
Logged
JLJac
Level 10
*****



View Profile
« Reply #1869 on: July 24, 2014, 11:31:25 AM »

@whiteclaws, that first post is a pretty flawless description of what's going on, actually Smiley

@JIMBERT, yeah, there's a bit of that too. For example I intend to make it so that abstracted rooms can receive update calls at uneven intervals (perhaps depending on how far away they are) - in either case they might very well not update every frame. The longer ago it was a creature was updated, the more "quantum" it gets in a way - when it receives its update it will have correspondingly higher chances of doing things, and its "time since my last update" counter will be reset, pinning it down to a "less quantum" state again.

The pretty good news is that I seem to have escaped the stuck place I've been hanging out all week. I threw together a little visualizer for the abstracted world so I could actually see the creatures moving about, and it naturally helped a lot. Now I think I've got an angle of approach, and this ride is moving again!  Hand Shake Left  Grin Hand Shake Right
Logged
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #1870 on: July 24, 2014, 11:53:10 AM »

YAAAAAAAAAAY  Hand Clap
Logged

Whiteclaws
Level 10
*****


#include <funny.h>


View Profile
« Reply #1871 on: July 24, 2014, 12:02:00 PM »

Yay for figuring out!
Logged
Fuzzy
Level 0
**



View Profile
« Reply #1872 on: July 24, 2014, 03:31:08 PM »

Similarly to how you wouldn't have a baseball cap in a fantasy game because it's not fitting the setting, neither caps nor viking helmets are really true to the RW setting. That said, we do plan on having a variety of playable characters available, but we don't yet know if that's going to be a question of custom combinations of features or if it's just going to be a selection of characters to choose from. It's all much later stuff though, for now the general frame work needs to get done!
Yeah, I totally get what you just said there. I didn't want those actual things but just an idea like it. Thanks for reading it and congrats on your brake through with lizard/rooms! Smiley
Logged
JLJac
Level 10
*****



View Profile
« Reply #1873 on: July 25, 2014, 07:47:18 AM »

Update 277
Moving forward at a steady pace again! Today I managed to implement quite a few things, albeit small. Rooms can for the first time be unloaded to abstract space again. I have managed to get the object permanence of creatures pretty much down - I'm unsure of how it happens when a room is offloaded as the creature is currently in a a shortcut, but I have the following scenarios covered:

* The creature comes from abstracted space, entering realized space - and becomes realized
* The creature exists in abstracted space, which is then realized - and so is the creature
* The creature leaves realized space, entering abstracted space - and becomes abstracted
* The creature is in realized space and is abstracted along with it

This is pretty cool. I can have a lizard move about at random (random movement in abstracted space is halfway done, not very fine-tuned yet) and at times it will enter a room I'm in, at other times I might enter a room where it is. Cool stuff!

Another cool thing I've managed is to summon a lizard that's out in abstract space to the current room - it actually does show up in the doorway!

A loooot of things still need polishing. The abstract path finding stuff isn't at all hooked up with the in-level pathing yet, making it so that as soon as the creature switches between the two modes it forgets where it was going. Sometimes there are errors and weird glitching around. Creatures are not spawned in the middle of rooms as if they were actually doing something when entering previously abstract space, but rather at exits with a confused look on their faces. The list goes on. But so do I! It feels wonderful to have solid progress again.

Happy weekend everyone!
Logged
Fuzzy
Level 0
**



View Profile
« Reply #1874 on: July 25, 2014, 02:38:27 PM »

Yay! I'm so happy you made it work, keep it up!  Hand Thumbs Up Left
Logged
saluk
Level 2
**


View Profile
« Reply #1875 on: July 25, 2014, 02:40:30 PM »

I love how fast you get unstuck every time you get stuck. It's really inspiring to see the methodical way you tackle each problem that comes up!
Logged

JLJac
Level 10
*****



View Profile
« Reply #1876 on: July 28, 2014, 05:57:58 AM »

Update 278
My little test creature has picked up the good habit of continuous existence throughout rooms and abstracted node space. It is getting closer and closer to achieving an AI capable of handling these strange situations as well.

When realized, the creature has this big cool path finder that can do all sorts of stuff. When abstracted, the creature just has a path, which is nothing more than an array of coordinates in node space, which it will mindlessly follow if it can. Today I made it so that on abstraction, the real cool path finder will try to create a super simple path and feed that to the super simple abstract AI if it can. If it's unable to, the abstract AI can fall back on the abstract space path finder, but I think that's not preferable as I don't see the reason why a path should be calculated twice.

This seems to work just fine. I've had the realized creature find a path in realized space where it needs to pass through abstracted space in order to get there. Upon abstraction, the path is passed down just as intended. This means that now creatures can become abstracted without losing their focus; if a lizard sees you, it will be able to calculate a huge detour through abstract space in order to get to you, and follow it all the way. On arrival, it will even be able to remember what it was doing, as a creature's proper AI is saved in a hibernation mode if the creature has a destination within realized space.

Next up - if an abstract room is realized as a creature is halfway between two cells, the path should be calculated, and the creature should appear in the middle of it.
Logged
Fuzzy
Level 0
**



View Profile
« Reply #1877 on: July 28, 2014, 06:49:44 PM »

Woah, that is awesome!  Smiley The A.I. looks so advanced! I can't wait till this game comes out!  Hand Shake Left Grin Hand Shake Right
Logged
Whiteclaws
Level 10
*****


#include <funny.h>


View Profile
« Reply #1878 on: July 29, 2014, 08:22:59 AM »

I want to see the results, give us da pics boye

Abstracted creatures, will they be able to interact with other abstracted creatures?
Example: Lizard sees another pray, he'll stop and feed over the other?
What about lizard meeting others and fighting each others?
That would be unneeded but pretty cool
Logged
JLJac
Level 10
*****



View Profile
« Reply #1879 on: July 29, 2014, 08:52:39 AM »

Abstract interactions would definitely be way easier to implement than actual realized interactions, so I'm probably going to implement quite a lot of them just for the hell of it. I'd post pictures, but you change the abstraction by measuring it. Actually you don't, here's my visualization of it:



That's the map of the world, each column is a room. Each square is a node in that room. The rooms that have a little pink minus above them are realized. The one with the grey rectangle behind it is the one currently viewed. You see how the nodes have different colors? That's how I've visualized the connections between rooms - the nodes in different rooms with the same colors are connected. Little orange dots are creatures, the slugcat and a lizard prototype hanging out in the other room.

Slugcat is in node 2, because that's the door it came in through when entering the room. Checking which door a creature is actually the closest to in a realized room is a pretty expensive connectivity check, so I'd rather not do that every frame, and for now I haven't really come up with any scenario where assuming a creature is still hanging out in its entrance node isn't working. If such a scenario would arise though, it would be easy to just have a method call that tells every creature in a room to check against the exits and update the node map accordingly.

As you can see there would have to be hundreds of rooms before the node graph became bigger than the grid of one single room, so I feel pretty confident that the abstraction is going to be a cool feature. It will allow a vast world to exist, and to gain granularity as you get closer, making it feel like the entire thing is alive simultaneously.
Logged
Pages: 1 ... 92 93 [94] 95 96 ... 367
Print
Jump to:  

Theme orange-lt created by panic