Boss Stage

Today I’ve been planning out and creating parts for the final level of Hanami which is essentially an extended “Boss Stage”. There are no more items to collect, simply a path to unlock to the final boss.

This morning I sketched out some ideas on how the building in this level differs from the buildings throughout the rest of the game. I’d already planned the scale of the building, which was already larger than anything else I’ve made so far. The building in level 4 is the abandoned home of the Zashiki Warashi spirit, so my main focus was on making it look run down. I scribbled over the top of my building plans to work out interesting vine and weed formations, and work out where there would be cracks and blemishes on the building.


The result makes the overall picture look a lot less messy due to the distortion of all my straight lines! In this case however I’m happy for the image to look a little rough… I haven’t really worked on the background or decided on a background colour yet, I’ve been concentrating on the foreground for now!


Inside, the building looks a lot less derelict, but it is much more empty that most of the other buildings in the game. Because there are no items to collect in this level and exploration could be pretty boring, I’m planning on having a locked door which can only be opened when a key is acquired. The key is in an upstairs room, behind a door that will only open if a certain amount of blossoms are found (as a placeholder door I’ve decided that the player should have 80 blossoms, but I’ll probably reduce this if I come to code for this part of the game). Inside the building there are three upstairs rooms. The first can be entered under all circumstances, the middle door can only be opened if the specified amount of blossoms are found and the final door is sealed.


As a teaser and to prompt the player to collect more flowers if they haven’t already, all of the upstairs rooms are part of the same space, so by entering one door you can see into all of the rooms. By entering the first door you can see that you must enter the second door to acquire the key in the third room, accessible by a hole in the top of the wall.


The locked door leads to the last area in the game, where the boss battle will commence! I’ve designed this to have a small flat stage where Za-chan runs around, and two “safe areas” either side where the player can temporarily avoid attacks. I’ve drawn up a couple of new assets for this level, including a new version of the Sakura Tree which I might now use as a background element for earlier levels. This is simply a re-vamp of one of my previous designs, where I’ve made the branches a little more curvy and reduced the size of the blossoms growing on it. It looks a lot less cluttered than my previous designs, and will hopefully fit in better one the proper background is in place.


The other two new assets are stone statues which guard the “safe areas” by dissolving attacks on collision. The first Guardian is a Tanuki statue, which is commonly seen around Japan in restaurants, temples and homes. The Tanuki is seen as a sign of good luck similar to the Maneki Neko Lucky Cat, and is generally loved for being tubby and smiley! Statues are often colourful and remind me a little of garden gnomes, like this:


My statue is a carved stone statue, and looks more like this:


The second guardian of the safe zone is a Kitsune statue, a fox which is believed to have supernatural powers and immense intelligence. Both the Tanuki and Kitsune were once believed to have shape-shifting powers, and were almost worshipped for the powers they possessed. Kitsune statues vary in style, but are usually a similar shape of a fox sat upright:


And my carved stone Kitsune statue:


Like the other screenshots of this level, there are a lot of background elements missing! Here’s what it looks like so far:


The final change I have made is to Za-chan’s attack object, which was previously a piece of sushi. I’ve changed this to a small ball of light, however I’m not currently sure whether I’ll keep this or try to think of something more relevant later.

Good Luck…


The new timeplan is so far a success- I’ve managed to cross a week off the list, and a little bit of next week too!


This week however has started off a little slow, but I’ve managed to get a lot done. This morning I played through the game from level one to level three for the first time to check that everything worked well in succession, and for the most part it did! One random little bug started to emerge towards the end of the playthrough however, as the framerate started dropping rapidly whenever I passed by a doorway to a building or cave. I managed to solve the problem by tweaking the “teleport” code slightly (I literally moved one line and removed a pair of curly brackets and everything was fine!) In the panic I read through this article on the Game Maker Community forums, which talks about optimizing game performance through various settings and commands, so the rest of the morning was spent tweaking little bits for best optimisation. One of the most vital lines of code I’ve added is this:


These few lines deactivate EVERYTHING that is outside the current view, and activates it when in sight. I had to activate the top corner of each room in the last line of code, as this is where all my control objects are kept including light functions, menu functions, sound functions, HUD functions… By reducing the amount of active instances, the game runs at a very steady 60 FPS constantly, occasionally dropping to about 58. Hopefully this means that even on lower spec machines the game will be very playable.

After this was over, I spent a little time tidying up little bits that I’ve previously started. I’ve replaced my old pink room transition object with an open door sprite, which is drawn onto the screen when the player reaches the right amount of flowers. The door only opens slightly, which is great if you’re nearby when you collect that final flower because it actually looks a bit like the door is opening.


I’ve fixed my save point Furin so that it looks like it is attached by a nail, not just floating next to a rock! I’ve made sure that all my save points are actually within reach of the player, which seems like an obvious task but this really is something I had previously overlooked.


As for the actual saving problems I was having, I’m not sure there’s such a big problem there after all. The problems may be related to the fact that the saves are made in the middle of making a lot of changes to the levels. I’ve also changed the save file to a .ini instead of a .sav, which for some reason saves more of the game information and is the only file extension which will reload sound effects. So until I’ve finished everything in the game, I’m not going to change the way the game saves or loads.

I’ve started to work on the final level of the game, firstly by changing the colours in the tileset and secondly by getting creative with my old tiles again. Up until now, my buildings have been very samey, so I’ve been experimenting with new ways that I can use my existing tiles (again!) I also managed to make a mini bridge from a section of my old bridge tiles.




There are now blossoms to collect in this level, so the HUD displays a total of all the flowers the player has collected throughout the game out of a possible 90. This was simply a case of adding the values of global.itemList1, global.itemList2 and global.itemList3.

Now that I know roughly what I’m going for with the design, I’ll do most of the rest on paper. This building will branch off into rooms, as opposed to having a large open outdoor space to explore. In one of the rooms there will be a door which only opens with an accumulative total of blossoms, so although the player may have made it this far they may still have to backtrack and do some more collecting! The end of the game is through this door, although I’m going to have to go back to the GDD and have a think because I don’t actually know how the game ends yet…

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!)

Thinking With Platforms

I’ve changed my tactics slightly while designing this level, so that I can essentially design and test simultaneously. I’m trying to keep level layouts varied and involve new challenges for the player with each level, but it’s been difficult to judge the success of drastic changes on paper. So my new process is: draw, test, redraw, test, create!

The kanji for “blue” which I’ve based the level 3 layout on is: 青, which gives the opportunity for a lot of long horizontal platforms. Unfortunately, I ended up with a lot of these after creating the level based on the kanji for “orange”: 橙 (it doesn’t look like it has many horizontal lines but I ended up putting a lot of emphasis on the small lower section on the right hand side!) The long, straight parts of the previous level are pretty much the most boring game sections I’ve made so far, so I really wanted to avoid them this time round.


I started off with this level mock-up, which like all of my other level designs has ended up looking nothing like the original kanji! The blue patches are “onsen” hot springs, which are the unique little features in this level. In Japan, accommodation and bathing facilities are often placed near onsen, so I’ve placed the buildings near the hot springs. I’ve also tried to avoid placing buildings in the level’s four corners, which seems to have inevitably happened in levels 1 and 2. This level is unique however beacause I’ve only placed one cave, which is larger than all previous cave levels and connects more parts of the level. It’s difficult to see in the mock-up, but I’ve placed grey squares where the entrances and exits are located. My main concern with the mock-up is that there are still a lot of long, straight platforms, but at this point I printed the design to work out the rest on paper.


When I printed the layout this time I didn’t join the two pieces of A4 paper together, so I’ve ended up with two halves which were really easy to scan! You can see the detail in this design much better than in my previous photos. The level starts in the bottom left-hand corner, where the warp door object is. I’ve got a few more tiles to create for this level, mainly where the onsen are. The structures around the onsen are based on this image from Onsen No Tengoku (Onsen of Heaven) in Hakone. The travel guide describes the site as “slightly run-down but remains atmospheric”, which I though fit in perfectly with my rural setting.



In this design, I’ve added a section to one of the long horizontal platforms to break up some of the length and add more rises and falls. The idea was to place obstacles where there are large gaps between the platforms, however I had to change this idea again when it came to testing because some of the scaling didn’t work well- this is main disadvantage to designing on paper with no grid! After drawing up the design, I roughed out the platforms in Game Maker to test the changes and jump distances between platforms etc. I’ve spaced out a lot of level more than usual to make the path less decipherable, and it seems to have worked pretty well. I’ve since added a lot more detail to this first half of the level, using my new blue-coloured tileset! You can see the platforms in the room editor in this screenshot:


The solution to the problems with lots of straight horizontal sections seems to be the obvious answer. I’ve made the lengthy run seem less “lengthy” by adding jumps that create thinking points for tactical evasion, as you can see here in a section which original consisted of one long horizontal platform. When making a platformer, think with platforms.


The second half of the level is still incomplete, I’ve simply added in the basics of the platforms for testing. I drew up the rest of the level today, so this should be filled in soon. There are still some platform changes to be made.


Steep Difficulty Curves

If the difficulty is poorly tuned, the game can become either impossible or boring.

~Pascal Luban

Today I’ve been designing and building the cave sections of level two, which I’m planning on having two of in each stage. In level one, the caves were the level’s “mini dungeons” and contained many more strategically placed obstacles than the rest of the level, which in turn made the caves more difficult than other areas. I made sure that the level could be finished without actually having to enter a cave, although if a player wishes to collect all thirty blossoms in the level then they would have to! In level two I’ve made sure that the caves must be entered, by placing the end of the level at the exit of one of the caves.

The player finds the first cave fairly close to the beginning of the level, if they choose to move downwards where the path forks. You enter the cave here:


And exit the cave to here, which is a dead end unless the player has collected the 15 necessary blossoms:


The aim of the design is to be more difficult than the rest of level two, but also more difficult than the caves in level one. This creates a difficulty “curve” which the player must adapt to, although more game developers seem to agree that there is no actual curve in game difficulty most of the time! In the blog I’ve pulled the quote from above, one example of a difficulty curve is described like a staircase, rising at intervals but lying flat for a while afterwards. Mine consists more of peaks and troughs, as difficulty is increased by a higher level of obstacles in cave areas but is lowered again when outside. Because Hanami is likely to only have three main playable levels (and a fourth ender level), I’ve aimed to increase the difficulty fairly rapidly, so that the maximum level of difficulty is reached by the end of the game.


In this design, I’ve tried to include platforms specially designed to challenge the player. At the top of the cave, I’ve added sections where the player must time jumps between platform heights between the swings of the spike plant above them. This is based on a part of a level one cave which allowed much more room. This time, I’ve gradually decreased the available space each time the player encounters a swinging spike plant. Another little challenge I’ve included is placing blossoms between two mushrooms, so that the player must accurately land jumps in order to not get hurt by the obstacles on either side of them. Unlike my some of my previous cave designs, I found myself re-scaling and moving parts of this design around quite a lot when it came to place it into the level! This is its finished form in the level editor (the red blocks represent solid platforms)


In this next screenshot, you can see the increased difficulty in acquiring blossoms throughout the first part of the cave:


Throughout this cave the player must be constantly more aware of their surroundings and the timing of their moves. I’ve tried to keep a similar level of difficulty in the second cave of the level, which is an optional cave which doesn’t lead to anywhere else in the level. It is accessed by hopping across a few platforms before reaching the Koinobori Cafe in the levels south-east corner. As you can see, this part of the level still needs a fair amount of work doing to it!

I enjoyed designing this cave as it occupies a wider space than my previous caves which tend to travel vertically. Part of the challenge of this design is that the layout is almost symmetrical, apart from a few blockages caused by mushroom enemies which halt the play from progressing on one side or the other (unless they choose to take damage).


I’ve included some of the same sorts of challenges throughout this design, although I’ve increased the difficulty of this part slightly by creating a cave-bed that cannot be touched if the player falls/misjudges a jump etc. I considered creating a lake of poisonous liquid or some other such over-used game cliche, but for now at least I’ve ended up using my Hello Mushroom enemy to fill the bottom of the cave (as a result I’ve nicknamed this the mushroom cave. I think it’s pretty.) I haven’t placed any blossoms in this cave yet, but I’ve planned for one to go at the bottom of the cave on the left hand side. On the other side, the player is simply met with yet more mushrooms!


That's a lot of mushrooms.


This is definitely the hardest part of the game so far, possibly even the hardest I will make. The difficulty is due to a mix of difficult jumps, awkwardly placed obstacles and the inability to fall safely!

Where has my Sharpie gone?

It’s taken me eleven weeks (honestly, longer than expected…) and I’ve finally misplaced my Sharpie :(. The closest thing I could find was my beginner’s fude pen, so I’ve written this week’s target in Kanji with Hiragana subtitles! Its amateurism is probably offensive to the Japanese, so for that I apologise. I’m working on it!

I’ve already started to create Hanami level 2, and actually the main structure is very much in place and I’m filling out the details. I started off by making the platforms all one block colour, which I did in the previous level several times! This time took considerably less because I wasn’t making tiles as I went a long and I knew the sorts of detail I would be adding.


For the outdoor detail, I’ve also changed things like grass and plant colour to orange, as well as all man-made structures. I’ve only used my previous tileset around the door to the previous level, to show which level the door goes to! I’ve also added some orange flowers around the door to this level.


There’s currently no lighting or background in the level, which is why it looks very plain! Although in a way, I kind of like how bright everything looks. It reminds me that I sill need to sort out the ambient colour overlay in the first level, as everything still looks really dim (I actually made it darker to see how that worked out!)


I’ve made a few additions to the tileset to give this level some unique features, but they have been minimal. My old set seems really flexible, especially when it comes to creating new platform shapes. In the screenshot below, you can see a couple of new features like the bamboo fence and square plant pots. This building is supposed to be a roof garden belonging to an ikebana specialist, hence all the plants! I makes the similarly styled buildings more interesting.

As well as continuing the development for this level, this week I’m hoping to wrap up my Game Design Document so that I can produce a nicely designed copy to go into a development folder. The graphic design style used for this will be similar to the one I use in any other physical designs, such as box art and game manual design, which are really the second dimension to the retro re-enactment project! It will probably be fairly minimalist, similar to the style I’ve used so far in my Pecha Kucha presentation and rough idea for album art for my soundtrack (hah!)

Palette Swap Tactics

Palette Swapping is a cheeky little technique used by game developers in order to recycle assets. It involves taking an asset previously made and changing its colour scheme, sometimes (but not often) giving that asset a completely different look. Using a little Photoshop magic, I’ve quickly and easily turned my pink/red tileset into an orange/yellow one!



Obviously, not everything here is usable like this! I’ve kept a lot of wood and neutral colours from my original set and combined it with some of the elements from this colourised set like roof tiles and furniture. Testing is really easy in game maker because you can swap tilesets out for new ones. To see how this looked in the game, I simply swapped out my old tileset temporarily for this one and all the tiles were already in place! Here’s how it looked at a quick glance:



The level design for “Daidai Iro” is now complete, so I’ll be constructing this in Game Maker over the next week, whilst working on some of the things that still need a little sorting out from before, including the implementation of NPC characters and with that the new petal system which I still need to make!


Quick Fixes

Today I’ve been fixing up little bits here and there, rather than concentrating on something bigger…my intention is to clean up some of the game’s little blips before moving onto anything excitingly new. This is following on from my previous to-do list, which as the days go on gets increasingly longer…

  • Apply more accurate collision masks to objects
  • This I have done today, although most of the problems with collisions were solved by reducing the collision mask around the player object.
    Previous mask:

    Based on head dimensions

    New mask:

    Based on lower body dimensions (much thinner!)

    This stopped the player from gradually sliding down corners and standing on thin air! This also means that collisions with obstacles are more accurate, as it is often the body that contacts that obstacle sprite rather than the head. I’ve increased the masks for the mushroom and swinging enemies to accommodate for this reduction, but only slightly.

  • Improve environmental tiles
  • I haven’t done much to improve the tileset, but I’ve cleaned up some of the edges by adding corner details and rotating some of my existing tiles to fit in more instances.

  • Make new sprites
  • There were just a couple of things from the end of the level that I’ve omitted to draw so far, so I figured it was probably time to put these in. Among the sprites still to create was the “end object”- the door to the next level. This stays closed until all the flowers are collected (although I haven’t coded for it opening yet as there is nowhere to go!) The idea for the new sprite came from this lonely little place, that sparked my imagination.



    The orange doormat represents the colours of the next level…

    As well as these items from my previous list, I started to work on some more minor details that I wanted to be ready in time to demonstrate to others. I’ve spent a lot of time working out a parallax scrolling system which affects the rate that the background imagery moves at, although this isn’t quite finished yet as it produced quite a jittery result. I’ve also added in a code to randomly generate the cloud sprites I previously drew. This works by producing a small amount of cloud sprites just outside of the player’s view, scrolling each cloud along at a set pace and deleting them once they are off the screen at the other side. The code then regenerates each sprite at the same coordinates back on the first side of the screen, resulting in an endless amount of clouds.


    This seems to work fine, until you enter a cave or building and exit back into the main level. Instead of randomly generating cloud sprites at this point, they seems to align along the Y axis and scroll across together. This is probably a fault with my coding, however I haven’t figured out how to solve the issue yet…


    So I’m kinda just creating more problems for myself right now! As a de-stress technique, I’ve been sketching details into my new level design, which looks a little like this right now:


    Personally, I think this level looks a lot more like its original kanji than the previous design, but it’s still pretty tenuous!

    Weekend Catch Up!

    Tying up some loose ends…

    New Characters
    Here are rough designs for three more characters, all with specific roles (should they make it into the game!) I’ve tried to create one unique character for each of the game’s levels, as well as recurring characters who will appear throughout restoring health and saving the game.

    The idea for the purpose of Most of the characters is that they will give Hana a flower petal, which can be combined with other petals to create one flower. Five characters in each level will give Hana a petal each, which will then make a whole. I really hope I can get this to work, otherwise they will simple have to give her a whole flower that they have found (to make it easier on my lack of coding knowledge).


    Left: a guy who wears a face mask to protect himself from germs, or possibly to protect others from himself. Apparently, the lovely Japanese people wear a mask when they are ill to protect others from catching the bug.

    Middle: a resident of the “pink” village- the game’s first level. He is based on Tsukimi from 51 Japanese Characters, and prefers watching the moon (“tsuki”) to the flowers. He sits high up in the mountains at the end of the level.

    Right: I think this guy will appear in the next level. He is found in a hot spring, hence the lack of clothing!

    Old Characters
    While I’ve been working mainly on level design, I’ve also been doing character pixel-art for the characters I created a while ago.

    Priesty


    Monky


    Panda


    Sleepy


    I’ll give each of these characters walking and fidgety animations so that they can move. They’re all a very similar size and shape so that I can apply similar animations to all of them.

    Level Developments
    I’ve started jotting down ideas for the next level I’m going to create, which revolves around Japanese forest rather than the current emphasis on mountains. The colours scheme is orange, so I have a new Kanji to work with! There isn’t so much a structure as individual features at the moment.

    Level Testing

    Building Buildings
    Today’s level testing began with constructing the Ryokan in Game Maker using the tiles I already have. For the first time, I connected a room with the inside and a room with the outside of the building through a “warp point” at the door. Using the “warp” function in the Grandma Engine transports the character to a another room at the same XY coordinates, so the door is at the same point in both rooms.

    Lighting
    Today I tried out the EasyLighting extension with my level for the first time. The system requires two colours- one ambient colour which masks the entire screen, and one light colour which is the colour generated by the light source.

    The colours I used in my original text were the colours used in this tutorial, which resulted in a murky/swampy ambience!

    Too murky


    According to advice given in the tutorial, the ambient colour should be a darker colour and the light colour a contrasting bright colour, unless of course you want to create a light which is darker than your background for whatever reason… For this opening level of Hanami, I felt that a pink scheme would be appropriate. I started off by using hex code reference websites to look for bright shades of pink for the light colour, however weirdly when applied it came up with some weird results. My first attempt turned out these very blue lights:

    Too blue


    To get the right colours, all I could do was test hex codes until I found a good match.

    Good light colour match


    Ambient light colour too dark (and purple)


    Subtle indoor lighting!

    Placeholder Tiles
    I made these quick tiles to act as placeholder for the rest of the level. They probably won’t make the final design, but they add a little variety to the design while it’s in its early stages! Unlike my “black-block” test level, this tileset contains sloping tiles and add gradients to the level.


    Combining this with the building set makes the level design seem much clearer, especially where buildings and caves are concerned. The pink line down the middle is made of my flag tile and represents the waterfall!


    This level is now completely playable as it is. For now I’m carrying on the visual design on paper by tracing the mock-up, while I’m working on creating some of the gameplay functions digitally! My first objective is to create a points system when flowers are collected. Here’s where my tracing is up to so far: