Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411430 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 03:41:10 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsProject Rain World
Pages: 1 ... 120 121 [122] 123 124 ... 367
Print
Author Topic: Project Rain World  (Read 1443810 times)
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #2420 on: November 26, 2014, 09:55:39 AM »

Update 365
Not been many gifs lately, so here's a little bonus. After digging in the lizard AI all day I decided to do something more fun, and implemented this hanging animation for the lower end of vertical poles:



oh man i love this so much hahah

SOME NOTES FROM THE LEVEL GEOMETRY SLAVE-PITS:

doing this first batch / region of rooms has been a really interesting process! in the previous build, the game was pretty simple structure-wise: gameplay was limited to 1 room at a time. those rooms are either platforming rooms or swarm rooms where you hunt bats. lizards were placed in a room and would stay there, sort of like a hazard, or they would be in swarm rooms to chase you around.


(from lingo build)

but now the lizards (and everything else) can move freely between rooms, so choices have to be made in level design to either box them in to certain areas (to create "an encounter" scenario) or to just let them do their thing and run amok. there is definitely a discussion like  "whats the point of this open-world "terrarium" concept you've been working on if you just box them in?", but probably for the first region at least we want to have SOME semblance of a difficulty gradient! we have a bit of a halfway mark in this first region because the species of lizards you encounter there have somewhat limited movement compared to the ones encountered later on, some of which can climb on structures that arent even accessible to the slugcat, etc.

But still its pretty funny because if you change ONE tiny thing in a room geometry (extend a pole here, or switch the order of room exits, etc), suddenly lizards over-run a whole new territory that you hadn't predicted:


(new build 141125)

So you have to make a tiny little change, then play through the build a few times to get a sense of how they are reacting to that change, then repeat. over and over. lizard herding! they are stubborn and temperamental just like cats! if you build them some nice room to play in, instead they go climb your drapes, hahaha!
Logged

Caspar2000
Level 0
**


View Profile
« Reply #2421 on: November 26, 2014, 02:42:14 PM »

Could you just make lizars lazy? Or give them more natural reasons to stay in a place, maybe because there are enough flies, its close to home or they like the plants. In the real world lizards only become active, when it is real warm.
Logged
DarkWanderer
Level 3
***



View Profile
« Reply #2422 on: November 26, 2014, 06:47:51 PM »

I like it, but I think maybe the Slugcat's elbows should bow outward as opposed to inward.
Logged
The Translocator
Level 2
**


View Profile
« Reply #2423 on: November 26, 2014, 07:14:18 PM »

For the first area have the lizards guarding their eggs- they would never let the eggs out of their sight...
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #2424 on: November 26, 2014, 09:29:11 PM »

You must have and establish a serie of level design pattern into a sandbox to use before jumping on whole level design!

- If possible classify them as function of navigation and gameplay (for example max jumping distance, comfortable jump distance, slugcat only pathway, etc ...). Rate them by fun, difficulty and complexity.

- And then you have unit scenario made from combination of pattern (for example having a dangerous path full of lizard (pattern 1: crowd encounter) with escape root only accessible by slugcat (pattern 2) but that link back toward an earlier safe point (pattern 2) therefore don't help to progress, just to escape a too hectic situation, etc ...),

- notice that scenario can be implemented in various way that have similar function.


Plain trial and error is the best way to fail level design, informed trial and error is better!
Logged

Rat Casket
Level 10
*****


i can do what i want


View Profile WWW
« Reply #2425 on: November 26, 2014, 10:18:50 PM »



this is what i tell my gf every night
Logged

Slader16
Level 8
***



View Profile
« Reply #2426 on: November 26, 2014, 10:23:11 PM »



this is what i tell my gf every night
Facepalm
Logged

Seki
Level 0
**


Revolution.


View Profile
« Reply #2427 on: November 27, 2014, 02:19:55 AM »

The polish present in this game.  Screamy
Logged

JLJac
Level 10
*****



View Profile
« Reply #2428 on: November 27, 2014, 03:17:51 AM »

Update 365
Item placement in the world... Made it so that the level editor saves item placements, and the game then puts the items in the level. The system isn't entirely done yet, as it can't differentiate between rocks and spears. What I have been able to finish is some re-working of the entity ID stuff. The reason this was needed was that for items, I wanted to be able to delete the item entirely, and re-create it, having the game still be aware that it's the same item.

My solution for this was to assign items ID's based in their placement in the world. So the item ID is just an integer that's 10 000 times the room index, plus the item placement in the room. I calculated that the 32 bit integer range should be larger than 10 000^2, meaning that the system would allow for ten thousand rooms with ten thousand items in each without mixing them up. Am I correct?

Then the ID also has the old system running in separate, which just ticks up as new objects are instantiated, and for an ID comparison to return true both the "original spawn location number" and the "ticking upwards number" have to match, meaning that the game can't mistake some spear for some bat or something because of random chance.

Ok, so why create this elaborate system? The idea is that now I don't have to save the position of every rock and spear in the entire world, I can just save the fact that they're moved when they're moved. The system works like this~

As a room is realized, it goes by all the rocks and spears that are supposedly in that room. It creates an instance for each of them, giving that instance an ID based on the spawn position. Then it adds them all to a global Misplaced Items list.

When the room is again abstracted, it checks all the items in the room - from the item's ID it can calculate the item's supposed spawn position. If the item is on its spawn position, the item is removed from the Misplaced Items list, and then the instance is removed as well. But say one item has moved, a spear picked up by the player. As that one isn't on its correct spot, it will remain on the Misplaced Items list. The room is then unloaded.

Later the same room is loaded again. As it goes by the items that should spawn in the room, it checks the missing items list for each one of them. The spear is on there! So the spear is not placed in the room. Instead, the game is keeping track of the spear somewhere else.

There's one of each item, and only one, but always one! At least that's the idea, after all the bugs have been squashed. The cool thing is that as the random seed for the items' look is based on the ID, the same item will always look the same.

Other than that, I've done a little bit more of lizard behavior cleanup. It really gets to me not being able to save and load the state of a lizard. Whenever they do some buggy behavior, I have to guess what they're doing, and then guess the solution, and then hope that whatever I did actually solved it. In the lingo environment (which was worse in every other way, but this one thing was cool) I could save every variable in a lizard object to a text file, meaning that when I saw a lizard doing something stupid I could hit a button to save that stupidity, and then have that little moment captured. I could then load it and diagnose it, and mess with it until it worked again. Really nice!

I know that in theory I could do that here too, if I made the lizard class serializable. Problem is that last time I tried serialization, every object that was referenced by the serialized object also had to be serializable. And my game is super interconnected, so I see no way of accomplishing that without making exactly everything serializable, and just save the entire game state.

Maybe that's a good idea? Is that how quick save works? Is there some quick way of trying that out, that doesn't mean pasting [Serializable] in every single class?
Logged
oahda
Level 10
*****



View Profile
« Reply #2429 on: November 27, 2014, 03:27:51 AM »

The difficulty of distinction between rock and spear makes me interested in the underlying system, code-wise.
Logged

Donutttt
Level 0
**



View Profile
« Reply #2430 on: November 27, 2014, 04:02:32 AM »

Just found this, looks really interesting, especially the art style
Logged
shellbot
Guest
« Reply #2431 on: November 27, 2014, 11:47:11 AM »

... makes me interested in the underlying system, code-wise.

This is a constant battle I face. I always want to know how the system works underneath.
Logged
jgrams
Level 3
***



View Profile
« Reply #2432 on: November 27, 2014, 01:05:47 PM »

Am I correct?

Yup, sqrt(2^32) = 2^16 = 65,536 > 10,000...oh wait, was that rhetorical? Tongue

In the lingo environment I could save every variable in a lizard object to a text file

<snip>

Is there some quick way of trying that out, that doesn't mean pasting [Serializable] in every single class?

Your text editor doesn't do multi-file search/replace?

Also it looks like C# has a [NonSerializable] attribute, so you could mark only a couple of fields serializable, and expand it later...?
Logged
JLJac
Level 10
*****



View Profile
« Reply #2433 on: December 01, 2014, 12:48:49 AM »

The difficulty of distinction between rock and spear makes me interested in the underlying system, code-wise.
As they share basically all behavior, except from some getting stuck stuff with spears, I didn't bother with any inheritance or stuff like that, but just made them have a parameter deciding which one they are.

Your text editor doesn't do multi-file search/replace?

Also it looks like C# has a [NonSerializable] attribute, so you could mark only a couple of fields serializable, and expand it later...?
Hm... you mean I should search for "public class " and replace it with "[Serializable] public class " everywhere? Seems a bit risky, but if I do a backup of my project first it might be worth a try!

Update 366
Got rid of a weird bug where a lizard would get stuck on top of something, typically like a box, and never jump down. The code was meant to make it so that they shouldn't jump off ledges to places from where they wouldn't be able to get back to their den - but they should only be concerned about getting back to where they are if there's actually a den where they are, the barren top side of a box should be left behind without second though. It seems to have worked out, now they don't hesitate to jump down and continue hunting you.

Also did some work on their behavior in relationship to going into their dens as rain approaches. Basically what happened was that they have a simple AI for when they're abstracted, and a complex one for when they're realized in the room - these two would disagree some times. The "actual" AI would tell the lizard to go home to its hole, but once there the abstract AI would spit it out in the world again, and so it would continue. My solution was making it so that the abstract AI asks if there is a realized AI at play, and in that case outsources the decision to it. Only if the creature is fully abstract the abstract AI makes the decision itself. It seems to work, but I haven't done enough observation to know 100% just yet.

Oh, and the stunned face/dead face are back in:



Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #2434 on: December 01, 2014, 07:54:07 AM »

>-<
Logged

JLJac
Level 10
*****



View Profile
« Reply #2435 on: December 02, 2014, 05:10:50 AM »

Update 367
Remember the bat chains? They're working their way back.



A tad too elastic-looking, probably? Will need some tweaking.
Logged
coah
Level 1
*



View Profile
« Reply #2436 on: December 02, 2014, 06:21:02 AM »

That is adorable.
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #2437 on: December 02, 2014, 07:15:55 AM »

Is the scene entirely procedural, it's like they have a souls and like to play Shocked
Logged

Caspar2000
Level 0
**


View Profile
« Reply #2438 on: December 02, 2014, 07:56:04 AM »

What do the bats eat?
Logged
jamesprimate
Level 10
*****


wave emoji


View Profile WWW
« Reply #2439 on: December 02, 2014, 09:53:48 AM »

Update 367
Remember the bat chains? They're working their way back.



A tad too elastic-looking, probably? Will need some tweaking.

looks great! i dont mind the elastic quality at all. LOVE the ceiling to pole chain transfer though! WOW
Logged

Pages: 1 ... 120 121 [122] 123 124 ... 367
Print
Jump to:  

Theme orange-lt created by panic