"Dynamic" shadows in 2d
So I've been thinking. One of the (visual) elements of Still Life I enjoyed very much was the dynamic shadowings on the characters.
Of course, Still Life was done in VirTools with 3d character models, and short of writing my own engine in C++, which I don't intend to do, I have got AGS and 2d to work with. I like 2d anyway.
So how to dynamically light something that has no Z-axis dimention? Obviously I need to have a seperate sprite for the shadow oriented with respect to predefined light sources in the different environments. It's simple enough on the surface.
Time to get my cartesian geometry on:
Let lightsource be (a,b) and let character be (x,y)
Angle = Tan((x -/+ a) % (y -/+ b))
Rotate ShadowSprite = 360 - Angle.
Done.
Except the problem then arises that dynamically rotating sprites in AGS slows the *shit* out of the engine and not provide fun at all. Functionality more important than pretty. That's what I'm always telling people.
So. What to do. Well, the solution if this was to be a commercial project is to write my own engine like I should anyway - however as stated, not gonna happen because we loves the RAD approach don't we precious?
Well I figure that a nice little work around would be to have all my dynamic light sources to be reasonably far away, thus making things look a little more realistic due to not needing to change as rapidly (ever seen a bug fly around a lamp?). Then once that is managed, I will split the screen up into 8 segments. The eye will *probably* interpolate the shadow differences if there are as many as 8 regions for the character to walk through, each with a different shadow length and angle specification.
That's what I reckon.
Anyway, I've also been sketching around tonight and I have come up with a nice little interface design that I think is fairly innovative. It incorporates a mood display, a thought display, inventory, active object, icon bar, and text entry panel. It's a bit heavy on screen real estate but it is fold away so that might just let me away with it. I have to test it out on the backgrounds I have already done. If it works, I think I'll go with it and make all new backgrounds accomodate the new gui.
Gotta think more about the way people interact, what they want, and what is good to keep. I know one of the things that gets me screaming in adventure games is the way (at least in the point and click era) that the player gets a list of selections or icons and that is all they can talk about until they unlock new ones. Essentially reducing conversation to an inventory puzzle. For me, I'm always thinking "Oh you bastard, just say *blah*" whilst feeling annoyed I have to let the character discover *blah* for him/herself.
My idea is to incorporate the text parser into conversations whilst retaining the point and click archetecture, as well as the list based stuff and maybe some sort of "notepad" hint interface to let the player know the "critical path" of conversation.
Plus other stuff.
Anyway, it's just a paper idea at the moment, but I'm gonna see what some implementation looks like over the next few days.
Cheers.
I haven't thought out the scripting yet, but it shouldn't be too hard.
Of course, Still Life was done in VirTools with 3d character models, and short of writing my own engine in C++, which I don't intend to do, I have got AGS and 2d to work with. I like 2d anyway.
So how to dynamically light something that has no Z-axis dimention? Obviously I need to have a seperate sprite for the shadow oriented with respect to predefined light sources in the different environments. It's simple enough on the surface.
Time to get my cartesian geometry on:
Let lightsource be (a,b) and let character be (x,y)
Angle = Tan((x -/+ a) % (y -/+ b))
Rotate ShadowSprite = 360 - Angle.
Done.
Except the problem then arises that dynamically rotating sprites in AGS slows the *shit* out of the engine and not provide fun at all. Functionality more important than pretty. That's what I'm always telling people.
So. What to do. Well, the solution if this was to be a commercial project is to write my own engine like I should anyway - however as stated, not gonna happen because we loves the RAD approach don't we precious?
Well I figure that a nice little work around would be to have all my dynamic light sources to be reasonably far away, thus making things look a little more realistic due to not needing to change as rapidly (ever seen a bug fly around a lamp?). Then once that is managed, I will split the screen up into 8 segments. The eye will *probably* interpolate the shadow differences if there are as many as 8 regions for the character to walk through, each with a different shadow length and angle specification.
That's what I reckon.
Anyway, I've also been sketching around tonight and I have come up with a nice little interface design that I think is fairly innovative. It incorporates a mood display, a thought display, inventory, active object, icon bar, and text entry panel. It's a bit heavy on screen real estate but it is fold away so that might just let me away with it. I have to test it out on the backgrounds I have already done. If it works, I think I'll go with it and make all new backgrounds accomodate the new gui.
Gotta think more about the way people interact, what they want, and what is good to keep. I know one of the things that gets me screaming in adventure games is the way (at least in the point and click era) that the player gets a list of selections or icons and that is all they can talk about until they unlock new ones. Essentially reducing conversation to an inventory puzzle. For me, I'm always thinking "Oh you bastard, just say *blah*" whilst feeling annoyed I have to let the character discover *blah* for him/herself.
My idea is to incorporate the text parser into conversations whilst retaining the point and click archetecture, as well as the list based stuff and maybe some sort of "notepad" hint interface to let the player know the "critical path" of conversation.
Plus other stuff.
Anyway, it's just a paper idea at the moment, but I'm gonna see what some implementation looks like over the next few days.
Cheers.
I haven't thought out the scripting yet, but it shouldn't be too hard.


0 Comments:
Post a Comment
<< Home