—    —  Home

   JLJac on October 05, 2012, 03:45:59 PM:

Update 97
Aaand I added the ability to define a random seed for an effect in the level editor, which means that if some plant or some wires or whatever feature turned out good you can actually keep them, while changing something else that you didn't like. Made a quick test where I kept an entire level the same but changed only one plant, and layered the outputs over each other to check - it seems to work! This is a good time saver when it comes to making levels.

That's it for today!





   JLJac on October 06, 2012, 12:30:27 PM:

Update 98
More art and level design.

Added a little spark that travels through the short cuts, so that some of the more hidden ones are made a little more visible.





   JLJac on October 09, 2012, 11:51:09 AM:

Update 99
Making levels making levels making levels.
I've more or less created the entire world in dull grey placeholder graphics, and now realize that the world needs to be extended a little bit. This is a great victory, as it means I for the first time ever planned something a little too small rather than vastly too big! My plan is to finish what I have so that it's more or less ready for release, and then carefully add the stuff that I want without letting feature creep get a hold of me.

More excitingly I've started to experiment with James' stuff, music and ambient sounds. It's awesome!

James and I are now contemplating on how the music will be implemented - the setup makes it hard to go with a conventional "one song per area" solution, and it's also hard to tie songs to events as there's not really any fixed narrative in the game. The jukebox needs to be somewhat aware of what's going on, and at the same time be able to surprise the player and not just be playing all the songs on shuffle. It's a challenge!





   JLJac on October 10, 2012, 12:10:52 PM:

Thank you!  Grin I'm most honored!
The irony of this is that your first interaction with this thread led to - the postponing of update 100 hahaha! I had planned to do a regular "Did some level design" post, but if there's expectations to meet I'll have to be able to give you at least something, and thus, we wait.
Don't be discouraged though, keep interacting!

Update 99.5
James sent me some rain sounds, and boy, did the scare the crap out of me! There are a few versions to pick from, and they all sound like different circles in rain hell. Suddenly I feel unsure whether my graphics can do justice to this when it comes to metal and stone being melted, pounded and disintegrated to nothingness. I'll have to look over my filters...





   JLJac on October 11, 2012, 11:43:40 PM:

But we're always staring, watching, judging, expecting of you.
You can never escape it nor should you want to.
Haha this is particularly scary as I have no idea how many people are actually reading this.... o.0

Looking forward to update 99.9!
Hehehe more expectations!

Oops! I didn't intend for you to do anything out of the ordinary for my sake! Smiley

Just keep on keepin' on knowing that there are Interweb folk out here who really like the look of what you're doing and appreciate your dedication, even when it gets a bit quiet.
Thanks! I'll try too keep those quiet times as short as possible - I know that I myself prefer reading devlogs that update with small and unimportant stuff to devlogs that have long periods of quiet between fewer, more important updates. It's always fun to see that something's happening, even if it isn't very significant!

Update 99.8
Added screen shaking, for when the rain approaches.





   JLJac on October 12, 2012, 12:27:08 PM:

Good to have you here!

Update 99.8.5
Introduced some effects for when the rain is approachning. At first the music fades out. Then a rain sound slowly starts to fade in. Then the light dissapears, as if the sun is covered by clouds. Then, in the final step, the screen starts to shake. By now the rain sound is a loud roar. One effective way I found to make the rain sound louder without bursting any speakers was to fade out the other sounds as the rain is faded in, so that everything else is muted when the rain is at its loudest.

Lizards and flies take shelter in their respective holes and hives as the rain is approaching.

Other things I've been doing include enabling effect colors for levels to be either reflective or superflourescent. This means that they have a little aura of blurred light either by themselves or if light is falling on them.





   jamesprimate on October 12, 2012, 01:13:01 PM:

oh man, i cant wait to check out the next build :O This sounds incredible!





   jamesprimate on October 12, 2012, 02:21:20 PM (Last Edit: October 12, 2012, 05:43:38 PM):

JLJac explains it more thoroughly earlier, but long story short, YES; rain = bad. On rain world, the environment is BRUTAL. Deadly rains pound the surface constantly, only letting up for a brief period of time during which the animals on the surface all emerge from hiding to hunt. Most of the game takes place during these hunting periods, where you have to catch enough food to survive the next rainy period, while avoiding being eaten by the vicious flora and fauna of course, then return to the shelter of your den. And if you are out too long... the rains will tear you apart  Evil





   JLJac on October 14, 2012, 01:53:29 PM:

Oh, the AI, my favourite subject! Actually I think that (in my case) it works the opposite way as what you describe. I haven't really found any obvious exploits, but rather have a problem where things aren't working out very well in the beginning of the game.

It's hard to sound humble when saying this, but I think that a player that's just introduced to the game will not really understand how complex the AI is, and because of that the game will work less satisfactory. Just a thing such as understanding that a lizard isn't always aware of where you are and pathing towards you takes some time to pick up, and the more complex stuff, such as "the last thing the lizard saw before I dissapeared behind those blocks was me falling downwards, and because of that it'll assume that I fell to the bottom of this shaft, which I can use to anticipate its behaviour" is hard to use even for me, even though I know that it's there and how it works.

I'm sure that many people will put the game down quickly thinking "it's just random and quirky and too hard", but my hope is that if you don't do this the game will grow on you.

So to answer this:
advanced character AI in a platformer is something i've been interested in trying myself, so i'm curious to see how it turns out here. it seems like a double edged sword, making the game feel deeper and more believable at first, but having the potential to reduce the gameplay to exploitation of its intricacies in the end. looks like you're well aware of this danger though!

Wizard
I think that the case with my game would be the opposite, that at first it could seem glitchy and weird, but later it will become more deep and and believable. This might vary widely between games though! I encourage you to give platforming AI a try, it's a real challange Smiley

What happens when it starts raining? Do you just lose, or does the rain actually come down and kill you? Can you get knocked around a bit by the first drops of rain and just barely make it into your hole?
The rain is kind of abstracted in a slightly more game-ey way, there's a little game over scene where everything suddenly turns black and silent and then the rain hits very suddenly. Of course it would be even cooler to have the rain build up slowly, but it's hard to display rain in the actual world as objects that would move according to common sense are actually static. The current solution is one of my favourite parts of making games, having to make art and technicalities meet. I'll make it look cool, promise!

Update 99.8.6.1
James and I are doing a little contract talk, which we should've gotten to way earlier. We're both aware that the game most likely won't make any money, but in the case it does we want to make sure that everything is as fair as possible. This is of course boring, but it's best to get it done as soon as possible.

In other news I've been wrestling a sudden drop in frame rate, which I have not fully identified but which could possibly have more to do with the latest vista update and my computer being old than with the actual game. Old versions lag too, which indicates that some of it might be in the computer, but new versions lag slightly more, which indicates that it's in the game. The frame rate flails wildly up and down, which makes it hard to get a good understanding of whether it's high or low.

Other than thgis I've started to contemplate on how to implement the music, and has started to set up a fairly complicated system of triggers for how songs could be activated and deactivated. We'll see where it ends up.

James sent me a new batch of ambient sounds, named "the weird batch", and they are awesome! Those are more abstract than the previous ones, and will help create a mood rather than add realism. Soon I'll get to implementing ambient sounds, it's very low hanging fruit at this point.

Added the ability to spear flies. Working a little with the blur effects, there's too much of them in some palettes which is a problem, and I might need to kill my darlings and get rid of them.





   JLJac on October 15, 2012, 11:56:21 AM:

[...] it's very low hanging fruit at this point.
I see what you did there, Mr apple picker Corny Laugh
Hehehe!

interesting! in my thinking the ideal AI system allows the player to think of the enemies as real thinking entities ...
Yeah, this is basically what I was going for as well - having a video game enemy that feels like it has a "mind". In my game some of this works pretty well for an experienced player, you can for example do cartoony stuff such as dissapearing behind a corner and then quickly into a side corridor, wait for the lizard to pass by said side corridor, and then exit the same way as the lizard was chasing you. The problem is that you need to be aware that stuff like this is doable in order to do them. For that awareness to occur you'd need to perform it at least 5 times, the first few times you wouldn't be able to tell it apart from random chance.

As the game is right now the shaft scenario could very well occur, you could drop down a shaft while visible to a lizard but then grab hold of a metal beam halfway down and dissapear somewhere else, while watching the lizard search the bottom of the shaft. I don't think of this as an exploit, as this is the way the game is supposed to work.

The problem in a situation such as this is that in 9 cases out of 10 the quickest way for the lizard to get down into that shaft would be to get to the edge and make the same jump you did. This means that in the majority of the cases the smart action is the same as the dumb action of an AI that just tries to get to the position where it last saw a player. In explaination, in the most cases you won't be able to see that the lizard is smart, even though it is. There are however cases when you notice the intelligence.

The funny part is that most of those cases are bad for the lizard. An example:



You are stranded on the little island, and a stupid AI would just end up waiting below you, as it would move towards you and then end up waiting once it got to a ledge that was too high for it to climb. This is stupid thinking, but the resulting action is smart, as you'd have no-where to go with a lizard waiting below you.

A rain world lizard, on the other hand, realizes that it can get to you through a detour. The problem is that when it's inside the tunnel it can't see the player, and once it reaches the balcony the player has long since dissapeared.

In this case the more stupid AI would be more successful, because if it just waited below the player wouldn't have anywhere to go. My point though is that the setup I have now is more fun. A deadlock would just be a deadlock, but a lizard making a somewhat stupid decision is entertaining, because you can see that it makes a decision. Instead of having a stupid AI that ends up catching you because of luck you have a creature that's thinking, but which you're outsmarting. Outsmarting things is satisfactory.

So, the exploits you're talking about are certainly there, but I've kind of built my game around them - they are the main game mechanic. To not make it too easy the lizards are compensated with physical treats - they are fast, has excellent vision and can hear you if you're not moving carefully.

When it comes to hyping the AI, I don't know... Hehe looking at what I wrote above I realize I'm already far down that road, but I don't want to over do it as raised expectations might make people dissapointed. I'm just a single guy building this on evenings and weekends, and people are used to games devloped by 50 people with a university degree each. That said, I can always emphasize that a high percentage of my hours with this has been put into AI, whatever that is worth.

Ah, whatever, here we go:
Update 100
Let's celebrate the 100'th update with that the framework for implementing James' music has taken its first solid step. I can now create a list of triggers for hunts that activate, change or deactivate songs on defined events. Today I had one song start, and continue playing until I had caught 4 flies, after which it stopped. Then another song started when I spotted my first lizard, and ended when I entered a specific level.

It seems to work well enough already! There will be changes though, but I'll try to stick to my policy and implement new technical solutions as an answer to a need on the art side, rather than just doing stuff that I think I maybe might use.





   JLJac on October 16, 2012, 05:33:23 AM:

Would it be possible for the AI to wait a bit on the "stupid" AI, before attempting to move in for the kill?
I imagine the croc would be thinking something like:
"C'mon... Get down here."
"C'MON!"
"Augh, fuck it I'm just climbing up to get him."
"Wait, where'd he go?"
Hahaha! Actually, the longer the detour is the longer it will take for it to find a path, meaning that you'll get a little bit of it moving back and forth contemplating on its next move.

Isn't this just an issue of player feedback, though? Lots of games (and especially stealth games!) suffer from this same problem of the player not being aware of the AI state.
The problem here is that psychological phenomena which I don't know the name for in english, animism perhaps, that you want to play with rather than against. The thing I'm thinking of is the tendecy for humans to read more intelligence into the behaviour of dead objects than there actually is.

For example, a human dropping a marble that rolls in under some furniture might think that it "hid" in there, even though it most certainly didn't because it's a dead object and it only followed simple mechanics. The psychology behind this is obviously the magic behind computer game characters seeming to come alive.

My theory (as an amateur) is that the more you are aware of the mechanics behind a behaviour, the less you'll submit to the feeling that the object is alive. A while back I posted a video where some lizards were moving around, and got this response:

...and the way he stood above you with his mouth open was a great little characteristic. Amazing job...

I remember this because Franklins Ghost had obviously thought that the lizard opened its mouth as a way to display frustration over the player being out of reach. I knew why the lizard opened its mouth (boring technical reason) but kept quiet, as the other interpretation was more awesome and fun. In this case not knowing what was going on behind the scenes created a more awesome experience.

So, I think that if I create a window into the lizards' heads I would also compromize them feeling like creatures, and make them feel more like mechanics. Their inner lives can never be half as complex as what we fill in the blanks with when we don't know what's going on, which is why I keep the not knowing what's going on as high as possible.

I have been thinking about symbols such as (!) and (?) though, and actually have implemented something along those lines. As a lizard is surprised its head vibrates a little and it emits some particles, which is usable as a cue that the lizard has seen you or heard you. Then again I don't know how well this actually works, as when I myself am playing I'm also aware of all the nuts and bolts behind the scenes.

Update 101
Caught a cold, and has mostly been horizontal on different surfaces today. The only thing keeping me from complete uselessness has been a sketch for how the main menu could be laid out.





   jamesprimate on October 16, 2012, 06:19:58 AM:

speaking as "the other person who has played rain world pretty extensively", I'd like to throw my 2 cents into the AI chat. I certainly don't know what's going on under the hood, but the lizard behavior is quite unpredictable in a very cool way. It's hard to describe, but sometimes during a chase they will seem to anticipate your movements based on the level structure, then get distracted by snapping at flies, then mope around, then "hear" you and start stalking again. it's quite believable for neon death lizards. also, different favors of lizard (red green blue white, etc) all have their own fairly distinct personalities and behaviors, so when you get a couple of flavors in a level chasing you around you have NO idea what's going to happen and it's quite scary and chaotic, which I think is exactly the right vibe for the game.

fwiw, I had no idea that the jiggling particle head meant that it had heard you (I was assuming rage or aggravation or something? They often do that when I spear them in the face, heh heh), but I LIKE that element of unreadability where you can't tell if they are laying in wait for you or don't have a clue.. Having a more standard "!!" "??" sort of thing might be take away a bit of that in my most humble of opinions.





   JLJac on October 16, 2012, 06:42:35 AM:

Hahaha that review was down to each word exactly what I wanted to hear >_< Even the "different personalities" thing was in there! Hopefully it's because the game is becoming what it's supposed to, and not because James knows too much about the project haha!

A sneak peak under the hood: They emit particles either because they hear a sound, because the've spotted you (a lot if they weren't aware of you, a small burst if they were already chasing you but didn't know exactly where you were) or because they're taking sticks and stones to the face. Maybe they do it when fighting over prey as well, don't remember.

There are other subtle ways of reading a lizard's mind as well - a slowly pulsating head means it's calm and idle, a quick change in color means it's hunting and somewhere inbetween means it's cautious or searching. Black eyes means it doesn't see you, sparkling eyes mean it's currently seeing a player.





   JLJac on October 18, 2012, 08:11:24 AM:

There's one kind of lizard that co-operates, but I haven't really found a good place for it in the game and it might end up being banished to custom mode. They work together by trying to surround the player, which sometimes ends up pretty dangerous.

I think the main problem here is the very simple environment. In the end they can't really do much more than... go places, their possibilities of interaction are very limited. When I enabled them to pick up objects occasionally that was pretty cool though.

On the AI, I think I've reached a "good enough" point, from now on everything I'd add wouldn't really ever be visible to the casual player. I have a few fun things in there for those who play a little more as well, but I think I'll keep it at this.

Current progress isn't very fast, as that damned cough won't leave me alone. Working and being sick is quite enough for each day, and it's hard to find time for rain world. Hopefully it'll be over soon, please just be patient for a couple of days! I try to get at least something done every day even though I'm a bit tired.





   jamesprimate on October 19, 2012, 01:13:10 PM:

hey, you were cranking out multiple updates per day for a while there! I think you've earned some relaxation  Beer!





   JLJac on October 20, 2012, 07:55:23 AM:

Haha yeah maybe! Best would of course be to keep an even tempo in here...

Update 102
Got a sound editor in, in which you can pick and choose from James' awesome creations!



An ambient sound consists of a file, a volume and a pan alignment, that's pretty much all that's needed. I think this will be really helpful in setting a mood for the game!





   JLJac on October 21, 2012, 12:33:13 PM:

Update 103
Raaaaaargh!
Been wrestling an extremely annoying bug for a while now.

I have known for a long time that some levels, for some reason, lag horribly. It's not the things that are going on in the level, but drawing the actual picture. Now when I got one of those levels I decided to try to nail it down.

It seems like the problem was in the image that display the light on the backround layer. I have pinned it down to this:

If I color any vertical row of pixels further away from the left edge than 118 pixels (117 doesn't work) any other color than white, the lag dissapears. It's not a specific pixel that's causing trouble - when I go into this vertical pillar of colored pixels and remove sections the lag comes and goes completely randomly. There seems to be a pattern that if more colored pixels are removed, the lag is more likely to come back. However, removing the top half makes the lag come back just as much as removing the bottom half.

In addition to this, there seems to be different reactions depending on whether I do stuff from the code or from the console, and on top of that there seems to be different reactions depending on whether I re-color the pixels one at a time or with one single command.

It's possible to locate a loosely defined area in the image that causes the trouble. If these pixels are put in a sprite they can make any level lag, so it's obviously their fault. If you start to cut this area down though, all the lag will suddenly dissapear - it's not connected to specific pixels, but rather to a combination of pixels. I badly wanted it to be about some specific pixel, maybe one color that I could just remove or so, but it's not.

I think of it as a curse - certain orders of pixels are cursed.

Even if I re-draw a level on another random seed the curse persists, which could possibly mean that whatever pattern causes it is on a bigger scale, a similar general layout will always create a cursed image. This means that some levels I create can never work.

This stuff is obviously far beyond my level, and probably has something to do with how graphics are rendered. Sadly I've seen the same problem on other computers as well ...

I have no idea what to do about this.





   JLJac on October 21, 2012, 12:53:12 PM:

The only thing of significance to the curse seems to be if pixels are (255, 255, 255) white, treated as transparent by Director, or not. A black sillhoutte creates the same effect as the original image.

If flipped vertically or horizontally the effect presists. Same for 90 degree rotation. If the image is inverted (black->white/white->black) the effect goes away.

Removing all rows of pixels that are entirely white from left to right doesn't help. It's not about all-white columns top-down either.

Ladies and gents, I present to you a real cursed image:



Displaying this specific combination of black and white screws Macromedia Director up terribly. Quite interesting, if it wasn't so irritating.

Tomorrow I move the image to one of my old game projects to see if it slows that one down as well.





   JLJac on October 22, 2012, 12:04:16 AM:

Today the problems don't occur on all the levels where they did yesterday. If I can't reproduce the problem I can't fix it. I officially give up...





   JLJac on October 23, 2012, 12:57:59 PM:

Probably something like that...

Update 104
Been trying to supress the strangest bug ever from my mind and instead concentrate on creating some levels and art assets.