Oh you, Ladder Cave…

All programming/development has literally been on hold this week while I fill in graphics, so it feels like I don’t have much to say recently. Level 3 is now looking pretty finished, so I’ll include some video footage in my next Devlog Video of me running around it! I didn’t have to make too much more for my latest blue level, except for a new water tile for the onsen (which may be temporary for now), and a new structure to mark where the onsen are.


The tile in the middle of the structure can be repeated to increase the width of the structure, as most of the onsen are different shapes and sizes. I originally wanted the middle to be peaked, but this raised serious difficulties when trying to extend the structure width-ways! I’ve placed the new tiles into the level, including the finished second hald of the level, which was looking very bare before.


The last part of the level to design was the level’s only cave, which stands alone with four entrance ways as opposed to having two cave sections with fewer entrances. You can see how each of these entrances align in the centre of the map in the image below, obviously in the room editor the pink squares represent warp points between rooms.


As with all cave sections, I’ve based the shape of the inside of the caves on the outer landscape. This cave has ended up with a long vertical spine with a horizontal part that crosses over it near the top. Because of the cave’s long shape, I decided to see what I could accomplish here using ladders, which can only be used for moving up and down. I worked out that the Hanging Adversary can be used as a very effective obstacle while the player is moving vertically, by placing it to one side of the ladder like this:

The player can only wait until a timed move past the plant, because a left or right movement would result in the player falling. So, with this in mind I designed (most of!) the cave to revolve around climbing as many ladders as possible.


I got a little stuck in the bottom left-hand corner, so I waited until I could test the effectiveness of the rest of the area to place something in here. In the end, this area ended up being a little maze section with no real obstacles to overcome. Because this is the last cave of the game, I’ve placed as many Hanging Adversary obstacles as possible without the stages becoming impossible/ridiculous. This cave scares me a little, but I’m glad I have the upper hand of knowing where everything is :S I recorded this video to show the evasion of each obstacle in the cave, and I somehow managed to not take any damage until right at the end! The hardest placement of obstacles here is where there is a sharp left or right turn at the top of a ladder, or where there are many obstacles together (which is where I failed!)

Getting Ahead of Myself?

It turns out I jumped the gun a little last week as I was advised to “finish the first level to move on…” I checked back to my time plan this morning and my goal for this week was to add UI elements like the HUD and inventory menus. These are now well under way, so I feel like I’m doing well for time, although I know in my head that this can only mean I’ve omitted to do something a long the way. Obviously, graphics are still a working progress. The reason I wanted to start placing UI elements now is because I felt the natural graphical style would be evident enough to start expanding from background assets to the other areas, like the UI, title menus etc which will start to take form over the next couple of weeks. Right now, I’m still filling out my days with level refinement and perfecting areas which have been left overlooked for a while. So that I can’t miss A SINGLE THING, I’ve started at the beginning of the level and worked my way, changing and improving on specific things as I’ve gone along.


In a lot of places, parts of the level simply needed filling out slightly. You can see some improvements to the graphics here where I’ve added little plants and bushes and filled out large plain areas with small rock details etc, so that every part of the level has a unique combination of my existing tiles and assets. What may of may not be noticeable from this image is some adjustments to the lighting which I’ve made. I’ve expanded the sprite I use for these lights so that it covers a larger area and isn’t so concentrated on a small space, which brightens up the level significantly and adds more light variation across the level.


One major addition to the tileset has been these grassy edge tiles, which droop over the edges of platforms and just round them off nicely. They make everything seem a lot more finished, and eliminate a lot of the very hard, straight edges that were causing problems before.


Another significant change has been to the lighting system inside caves. I’ve made the ambient light nearly black, which almost makes the background invisible, except where there are lights. I’ve made these lights much brighter than the outside lights as they are significantly more essential more gameplay. I think this change make the level more interesting visually as well as in terms of how the player plays the game. Instead of looking at an entire surrounding area, the player is constrained to one small space. In this image, you can also see some improvements I’ve made to the Hanging Adversary sprite, which is now finished and working very nicely.


When it came to animating the Hello Mushroom sprite, I admittedly got a little stuck. My original design didn’t give me much space to work with, and I felt like I could only accomplish very minimal movement. This would have been fine, except my other obstacles are now much more active in comparison! So, I redesigned the shape of the mushroom to be more flexible. This new mushroom still releases spores in exactly the same way as the old design, but this one now dances about a bit. The smaller mushrooms are harmless and (I think) create a nice little piece of scenery, but warn when there is a nasty mushroom around!

Evil Botanicals

As a slight side-track to my main objectives today, I spent a little time refining and reworking some of my quickly made “enemies”.


This is the new animation I’ve come up with for the deceitful blossom. I felt that the best way to animation the flower was to give it a stalk and plant it into the ground, as this gave the blossom a base to pivot on. It looks infinitely more menacing than before, potentially raising awareness of its presences.


After seeing the flower in the game, my immediate reaction was that I wanted to jump on it to destroy it- in a Super Mario fashion. I’ve always said that I wanted obstacles to be “evade only”, but this so far has led to boring sections of gameplay and not a huge amount of variation in play strategies. So I though I would give it a go, except that by jumping on the flower the player can only temporarily squash and disable the flower- it will eventually pop back up. During the time it is “squashed”, the player can walk over it and not receive damage- otherwise damage will be taken if the player approaches the flower from the side rather than from the air.


Coding for this has been quite a challenge for me, as there are a lot of parameters to set up in regards to when the player takes damage and when the player is fine to pass by, but I’ve come up with a unique system which unfortunately cannot adhere to me previous obstacle parent object.

When the flower is in its normal state, I’ve created a variable that states that “damage” is true (damage = 1;). When the player makes contact with the flower, damage is taken. If the flower is approached from a greater y value or the flower has been jumped on, the value of “damage” changes to 0.

if damage = 1 && y>obj_player.y {
damage=0;
obj_player.vspd = S_JUMP_SPEED;
sprite_index=spr_flower_squash;

if damage = 0 {
alarm[0]=90;
}
}

The alarm sets an amount of time that damage remains at 0, before it is reset and changes back to 1. The flower will always reset after 90 steps, giving the player just enough time to occupy the same space as the obstacle. This is handy for jumps like the image above, where jumping over the flower would be impossible.


As promised, I’ve also changed the suspicious-looking sprite for the swinging spike plant object. This is not a finished version, but represents what I’m hoping to do with the new sprite. Before, I was using Game Maker’s draw function to draw a line from a connection point to the spike plant and used some maths to give the object velocity. This looked fine in my opinion, but the problem was that the collision mask remained static, no matter position of the drawn sprite. I had the option to create a custom collision mask, like I have done for the Hello Mushroom object, but id I was going to do that then I figured I might as well make my own swinging sprite. This sprite covers a similar distance to the previous sprite, but I think it may move slightly slower. Unfortunately, unless I do a whole load more tweening, the animation will never look as smooth as before, but it may fit in better with its surroundings. All issues with the collision mask are naturally fixed.

Natural Hazards…


This week I’m thinking about all the features I want to have in the game before handing it to others for feedback! I think in my original time-plan I wanted to base the product of this week on feedback from participants, but I’ve gone into some of the graphics in a lot more detail than I was expecting to and as a result have a few other things that need rounding off/actually making… So my goal for this week is to create a working prototype ready for testing either at the end of this week or the beginning of the next.

One of the major things which I have omitted until now is, to summarise, how to loose whilst playing Hanami. I’ve implemented a really basic health system so far, which can currently only go down, and instigate an immediate game-over is it reaches 0 (which it can’t, because I haven’t put enough hazards in yet!) This is one of the things that needs a lot of improvement this week- it especially needs something to build it back up.

I’ve mentioned possible “hazards” or “enemies” before, and I’ve sketched out a few ideas in some of my level designs. The main feature of all enemies/hazards is that they cannot be “defeated” because there is no combat in the game. They are a part of the environment, and will not actively attack but will stand as a hindrance to players. As the collectable items are based on flowers, I’ve also based my enemies on plants, creating a good/evil balance throughout the natural world! Each enemy is also based on a unique movement type, to keep them varied and keep the player actively working out how to evade them.


The first enemy type is one that I’ve been using as a health system test, and is based on the Sakura blossom object. The idea is that it lurks in shadows and looks similar enough to the real Sakura object to lure players towards it, only to hurt them if they make contact. I’ve called this one the deceitful blossom, which is currently a working title name but may stick! Its movement type is nothing, it’s the easiest enemy to avoid as it simply sits in once place.

This enemy type has a few influences from existing games, not so much in terms of visual qualities but in attack style! I’ve looked at items and enemies that disguise themselves and attack at the last second. I thought of Vileplume from Pokemon which disguises itself as a flower, and the mimic from Braid which hides under the soil with a flower under its back. In a way it reminded me of the Mario “know you mushrooms” design seen on bags & T-shirts etc. Many Mario mushrooms look similar, but have very different effects, good and bad if acquired…

The second enemy happens to be a mushroom, but nothing like a Mario mushroom unfortunately. Unlike the other enemy types, a name didn’t pop into my head straight away with this one, so it is currently called Hello Mushroom…for a number of irrelevant reasons… This enemy doesn’t move itself, but it sprays a vertical line of deadly fumes into the air at random times through one of its many sphincters, which will deduct health points if touched. Most of my house mates have a serious aversion to mushrooms and try hard to stop themselves from vomiting when I cook them, so I’ve made this one super gross to fit their opinion of them. I think mushrooms are really yummy personally.

To get the motion of spore-release, I’ve been playing around with the particle functions in Game Maker today. I found a great guideline to all the available functions in a downloadable PDF here, which literally misses nothing! But so far I really have only been messing, so I’ll write up about my proper particle experiments later!
This guy’s kind of inspired by the many monster mushrooms in video games, like Funguar from Final Fantasy VIII, the Fume Shroom from Plants vs Zombies, and of course the deadly mist emitting Black Fungus from Kingdom Hearts.

The final enemy is one that moves horizontally by swinging from ledges and cave roofs etc. I’ve called this the Hanging Adversary, mainly because it was the first enemy I came up with and I wanted to differentiate it from any other potential creations! The hazard here is really sharp leaf-type structures- I said I didn’t want to feature any cliched spike-pits, so this is my original equivalent. I’ve fashioned it after a venus fly-trap to some extent, simply because the venus fly-trap has those naturally evil-looking teeth which make for a great game enemy. I’m sure they’ve inspired many monster creators to make plants that bite.


I had to be careful that this guy didn’t end up looking too much like anything else from the gaming world, although influences can natural be seen to the Mario Piranha Plant, and similarly the Venus Flytrap from Braid which was probably based on the Mario enemy! My favourite of the carnivorous plant monsters from games has to be the Deku Baba from the Legend of Zelda series, which looks so spiky and evil even with the lowest of poly-counts!


I’ll hopefully get all of this into the game tomorrow, and adapt the health system accordingly!