Indexing
One thing I found that I overlooked in my originally programming of the engine was the fact that, since the player is movable, the player may at some points be in front of an object while at other points might be behind an object. The problem came in when I realized I was not re-ordering the array of on screen objects, so when a player walked behind an object, the entire player sprite was still drawn on top of the sprite for the object which they were supposed to be behind.
On the surface this isn't a major problem and I was able to write up a sorting function to pass to Array.sort which ... sorted things out. Writing up the function however brought a larger issue to light. In order to get objects which were literally on top of other objects (ie, a coffee cup on top of a table), I had to introduce a gameHeight property to each game object. This property I used to indicate how far off the ground something was assumed to be and my sorting function could take this into account when calculating an objects relative position.
This may end up being sufficient for this game, but I feel like the engine in the end needs to more robustly handle the fact that I'm essentially working in a 3d environment but drawing in a 2d context. For instance, I may end up reworking the object positioning mechanisms so that their position is defined in 3d space and the engine does the work of calculating where to map those objects to in 2d space for presentation purposes.
Graphic Work
I've been putting off drawing more sprites, largely, because I got so sick of it after making all the sprites for the room itself. This weekend however I decided to hunker down and start work on the panda walk cycles again. It was as much of a pain as I expected it to be, but I got the forward walk cycle done and am now moving onto the left walk cycle (which will be repeated as the right walk cycle).
All of this graphic work has led me to the conclusion that, for my next game, I need to just pay someone to do this for me.
I still have some cleaning to do, but here's the general idea of what the final walk cycle will look like |
So, what is left to be done? I'll try to get a list together for a future post, if for no other reason than to provide myself with a checklist of sorts.
DnL8Tar