Intelligent Thoughts


To begin designs for user interface, I’ve started up the style I want for graphical elements with these speech bubble text boxes. These simple square boxes are designed to float above the character speaking or thinking, and display mainly images depending on what it is that they need to communicate. The idea is to keep dialogue to a minimum- due to the communication problems associated with foreign languages. I was mainly inspired to use speech bubbles in this way by the anime short Cat Soup, which uses a lot of visual techniques to represent dialogue.


This isn’t the first time a similar technique has been used in a game. The hand-drawn Indie game Machinarium doesn’t have a single line of dialogue, and uses images and animations in speech and though bubbles to provide the player with gameplay hints and set the story.



I was initially thinking of using a very simple square design, but at the last minute came up with the swirly square design based on the “auspicious cloud” design. The design sort of evolved as I worked out what worked best in a small space with the swirl in the corner.


In Game Maker, I can use one image as a parent object for all “dialogue”, and simply change the content of the box using a sequence of sprites which appear to be inside the box. I tested this on the pacing cat I created yesterday, making sure the box followed the cat. This was simply done with one piece of code with makes the x value of the box the same as the x value of the cat:

x=obj_maneki_neko.x;

I then incorporated a timing system to time the image in and out based on a set time, so that the cat periodically thinks about fish- as long as he pacing and not following the player.

I’ve also created another example of a very small dialogue sequence for the newly placed character-the Shinto Priest. This polite character stands outside the Ryokan and bows as the player passes by. When the player gets within a certain distance, the speech bubble appears displaying the objective and the amount of blossoms needed for progression, although I’m not sure how effective this is as a method of instructing the player in the initial level.


Artificial Intelligence?


What happened to week eight?? It was definitely there, but I must be getting lazy at making progress flowers.

This week my focus is on the little interactive bits that make videogames what they are, which includes working on menus and non-playable characters (NPCs). As part of my feedback from last week I was told to not move on to create a new level without finishing this one, and while most of the graphical elements are in place, its lacking occupants and and a real start to the game. The little photo above shows the little progress I’ve made with the new level over the weekend, although it’s much easier to draw on tracing paper in good light so I’m going to have to start putting some day-time into drawing it.


Today I began work on the first character that the player can interact with, the Maneki Neko. Ultimately, I’d like the game to begin with a short cutscene and the cat awakening Hana in a foggy dream-like state, and this may even be possible now that I have some extra animations. My plan is to look at the Spelunky source code to work out how the opening cutscene has been programmed, as I’ve had some problems working Game Maker around cutscenes in the past.

My first task was to create a walk-cycle animation for the cat, which somehow proved much easier than animating only two legs! I kept the leg length to a constant 2 pixels and tried to use as few frames as possible, as this animation won’t actually be seen much in the game at all. I used this video for reference, although only picked out the more “essential” frames.


The human walk cycle I developed uses eight frames, four for each leg forward. I ended up only using four for the cat, as it easily gives the illusion of having either foot in front of the other!


The tricky part was getting the cat to walk on his own, without player input. The game’s main character relies on the intelligence of the player to not walk into walls and avoid obstacles, but the cat would have to rely on a set of calculations in order to move around. There are several ways you can achieve this in game maker, but several that became unavailable to me because of the nature of the movement.

I wanted the cat to constantly pace from left to right, turning back on contact with a wall. I also wanted its behaviour to change when in close proximity to the player, so that it follows the player briefly. Luckily, I found an example that someone had already made that has a similar thing- except that the pacing objects are enemies which move to attack when in proximity with the player! You can have a quick look at that here. Based on the code from this example combined with the movement mechanics which came with the grandma engine, I came up with this little bit which makes the cat pace while the player is far away:


This basically sets up a timer which which turns the cat around after a certain period of time. The “counter” moves up in intervals of .25 until it has reached 60- in this time the cat will move left. After from 60 until 120 the cat will move to the right, and at 120 the counter restarts from 0. This is only while !can_see, which is while the cat “cannot see” the player.

While the cat can see the player, I’ve simply set a constant speed in the direction of the player. This speed is faster than its previous pacing speed, but not as fast as the speed of the player. As long as the player is moving, the cat will never catch up!


There are a few more lines to prevent the cat from walking through walls and an image_xscale code which turns the image around when walking left. Otherwise, this code is the cat’s brain. It’s not perfect- for example, if the player stops then the cat will just continue to walk past until it begins pacing again. I don’t think this is much of an issue for an object that only appears in the first room of the game!

Weekend Fix!

My quick play-test session on Thursday left me with quite a few things to think about. It’s been a couple of days since I last posted any progress, this is mainly due to time spent looking into new ideas and ripping the internet apart looking for decent sound effects.

Feedback and Solutions

1. “There are too many collectible items. Lower then amount of flowers needed to proceed to the next level, or players may get stuck and frustrated!”


I always intended for the levels of Hanami to be an explorable open world, meaning players must play extra attention to avoid being lost or confused. But this is a very good point. At the moment, you must collect 30 blossoms in order to progress, which is quite a lot. If a player cannot locate just one of these flowers, then they are stuck in that level forever. My solution is to keep all 30 blossoms in the level, but allow the player to progress after locating just 10 of these. In the next level it will be 15, and the third level will be 20 to increase difficulty. There will be a specified bonus for locating all 30 flowers, but this may just be something minor like a high score or alternate game ending.

2. “It’s a bit quiet…”


Yes it is, and it’s about time that it was a little louder. As I’ve mentioned, I’ve spent about four days looking through various downloadable sound effects trying to find suitable sounds. I’m pretty sure I’ve settled on a footstep sound, jump sound and running water sound so far. More info on this to follow. My issues with incorporating these sounds have been with the Supersound.dll I’m using to play .ogg format sounds, but as I’m new to using the system I think it’s just going to take some getting used to. As for background music, everyone present at the play test agreed that it should be something “gamey” but calm- and obviously something that sounds naturally Japanese.

3. “Dying is annoying”


Upon “dying”, the game is currently completely reset. This includes my datastructure list which holds information about collected flowers, so when the player runs out of health all the flowers reappear and that player must start again from the beginning. Firstly, I will create a “death animation” which gives the player time to come to terms with a limited amount of lost progress, and secondly a will create a memory system which takes the player back to a point in the game without loosing progress. One suggestion was to use a certain amount of “lives”, which are reduced when all hit-points are lost. Loosing all hit points in one life will result in loosing a small amount of progress, but loosing all lives will result in a game restart (or perhaps a level restart!) I will probably work on this when I improve my current HUD system.

4. “Where’s the end of the level? Does it ever end??”

Yes, it does. In fact, the end is of the level is reached if you walk in a straight horizontal line from the beginning of the level. Perhaps I will signpost it better, or make objectives MUCH clearer when I add NPC help and input.

5. “The graphics are really good, but they need finishing.”

Well, obviously. I’ve actually spent a chunk of this weekend filling in the level grid with rock edges, which has resulted in this:


I still need to fill in vertical walls…

6. “The lights look great and even make the retro style seem more contemporary, but the level still feels really dark.”


There are a couple of solutions to this problem. Either I can make the ambient overlay a lighter colour, or make my lights larger so that they affect the overall brightness of everything around it. The ambient overlay is probably the key to the success of the lights, so I will probably try to extend the reach of the outdoor lights.

My own personal feedback: character animations don’t overlap well…
This hit hard when I found this video demonstrating some of the character animations for a game called Trixie Treasure, which is currently in development. The animations here are so seamless and natural- I’m not even sure you could accomplish this level in Game Maker.

I especially commend the ladder climbing animation, which unlike mine, takes into account step size and arranges the character’s limbs accordingly :S

I tried to use this as a basis for a new ladder climbing animation, although My ladder steps are MUCH further apart, and making them closer together doesn’t work so well aesthetically. I could make it work better if I reduced the width as well as the step size of the ladder, but I’m not sure this is a process worth going through at this point in time. Still, I updated my animation to seem more life-like. I also want to incorporate some sort of ladder hang frame, instead of allowing the player to move left and right while climbing ladders.

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!

    Devlog Video 2

    This video pretty much sums up what I’ve been doing for the past few days, mainly with the background graphics and building interiors, and a few other graphical elements. From creating and playing back this video, I came up with an extensive to-do list based on bugs, flaws and things that don’t fit well or look right! My aim for this week is to fix everything that needs fixing, while away from the computer I’ve started to design the next level which now needs tracing.

    Things To Do:

    • Sort out problems with the lighting (solved)
    • Sort out problems with particles (solved)
    • Delete accidental “invisible platforms” (solved)
    • Reduce the amount of lights inside small buildings (solved)
    • Sort out collision with cave walls problem (solved)
    • Animate some existing assets, like flags and the Maneki Neko
    • Make health restoration item
    • Apply more accurate collision masks to objects
    • Improve environmental tiles
    • Make new sprites for rope bridges, statues, outdoor tables & chairs and Ikebana

    The biggest task here was the problem with the lighting system, which occurred when re-entering an already visited room. The code which draws the lights is called every time the room is entered, but because my rooms are persistent (changes to the room remain even if the room is left), the code was only being called when the room was entered for the first time. The result was that lights weren’t being drawn in revisited rooms, but would stay on from the previous room ie. the last place the code was called. I realised this by a long process of trial and error…

    The rooms had to be persistent (or so I thought!) to stop the player from being able to collect the same flower twice. In a non-persistent room, the flowers would respawn if the player left and re-entered. There are however a couple of ways to prevent collected items from respawning, without having to create a room which is persistent. I found this post from the Game Maker Community forum to be really helpful. One of the solutions suggested on this thread is to use a datastructure, in this case a list of all items in the level with their own unique ID.


    This is a script called gameInit, which is called once when the game starts. Gabriel Verdon uses a similar script for The Archer, to set global variables and position control objects etc. You can see that this script determines the keys used which correlate to the user controls, and generates the player object, HUD objects and the effects control object- all of which are persistent and remain throughout the game once called. At the top of the script, I added a generate list command, which will hold the information of flowers collected throughout the level.


    This code is from the create event of the Sakura blossom object. The item is placed onto the list when it is deleted recorded by a unique ID, and this code commands a respawned item to be deleted again if it is on the list.

    So now my lights stay on in the rooms they’re supposed to be on in! Most of the other fixes on the list were relatively little, some involved reducing collision masks and the rest involved clearing up some of my human errors. What I really want to see now is finished visuals.

    Hazard Evasion

    Hazard progress is well underway, and has led me to discovery a whole range of previously untouched Game Maker functions. Here’s a run down of what’s gone on in the process…

    The Deceitful Blossom

    Not quite so evil-looking at 16 pixels high… This has been the easiest obstacle to create. I’ve created an obstacle parent mask that means that I only need one collision command when the player runs into any obstacle. When this mask object is contacted, the global.health setting (which controls player HP) is reduced by one, as this is a constant for all obstacles! I’ve added a character flash-to-alpha effect when an obstacle is touched, which temporarily disables health from being reduced for a set amount of time while the player has a chance to get away. Those familiar with 2D platformers will be familiar with this, and would definitely expect something similar. I’ve compiled this video montage so you can see what I mean…

    In the case of the Deceitful Blossom, the obstacle is destroyed on contact. This prevents the player from frustratingly walking into the same blossom more than once.

    Hello Mushroom

    yummy!


    With the Hello Mushroom, I’ve looked into particle functions in order for the object to release periodic spore clouds which cause damage to the player. I’ve used particles before in motion graphics, and Game Maker’s handling of particles is very similar. You can completely customise particle aesthetics and behaviour without having to create a sprite first. For my small spore cloud, I’ve gone for a short release of small particles which shoot straight up into the air. They have a slow speed and a short life-span to make them look light and airy.



    I’ve placed the Hello Mushroom in this cave here, and you can see a part of the cloud dissipating. I’ve essentially used a timer to create a period burst, and custom collision masks so that the spores cause damage as well as the mushroom itself. I used this little tutorial for help with a custom collision mask, as Game Maker doesn’t allow mask changes for objects that don’t change shapes themselves, and won’t allow collisions with particles.

    The Hanging Adversary
    The green thing that looks like an upside-down cannabis leaf in the screenshot above is my Hanging Adversary sprite, which currently swings like a pendulum and takes advantage of Game Maker’s abilities to draw connecting lines. This is another example where the darker green line isn’t part of a sprite which I have pre-made, but is constantly being drawn, refreshed and redrawn by the software. The clever part is, the swinging process isn’t based on a set movement, but is defined by settings such as mass and velocity…


    The drawn elements originally created looked a little like this. This was adapted from a code I found on the Game Maker Community forums, which creates randomly swinging circles on these very long lines! The grey lines demonstrate the boundaries of the swing, so it was really simple to get from this to a smaller, non-random swing motion.




    I think the sprite may need changing for this one… I made all of these sprites really quickly to get them into the game, so expect changes.

    Draw, Animate, Code & Play etc…

    Drawing
    Over the past couple of days I’ve tried to prioritise sorting out my environmental tiles, but still haven’t really come to a conclusion. I tried to test out my new idea for rocky tiles with real parts of the level design, but so far can’t seem to make them work well as they do on paper! To stop myself from ending up in a rut, I’ve discarded ALL rocky texture tiles for now and replaced them with a plain purple colour, which can easily be swapped for a textured tile when I decide what it will look like!


    I made a little progress with the rock pattern around cave entrances however. I considered using straight edges around rock outcrops so that straight edges around other level features wouldn’t stand out so much, but didn’t feel this worked as well as the more natural, uneven design which is closer to my previous trace design.


    I tried this design here with my previous rock texture, but decided that the rocks looked better against a more plain background. Even if I bring a heavily textured tileset back for platforms, I may stick with a plainer tile for cave walls.

    Whilst trying to ignore all the complications of seamless tiles etc, I’ve diverted my attention to creating more Japanese-looking objects for the level. I’ve started by taking objects I’ve already made and adapting them to suit various instances, which is great for level continuity.


    Amongst these smaller features I’ve been working on some large objects inspired by specific Japanese things, like this shrine gate:


    and this bridge:


    Although, the reason for the bridge’s funny shape is because it follows the shapes of my platform mask tiles. I may round this off later to make it look nicer and have the character follow the tiles rather than the shape of the bridge.

    And I finally got round it pixelising the small food stand that I designed about a week ago. You probably can’t tell even if you’re Japanese, but I attempted to write ramen “らめん” in hiragana on the sign!

    Without the ground texture tiles, the game definitely doesn’t look as “nice” as it did before, but the more empty spaces of the level are starting to fill up. (I haven’t built the lights in this screenshot either, which is why it looks so dark!)

    Animating
    In time for a proper working level prototype, I wanted to get many more character animations in. Before now, I’ve simply had one continuous running animation! I’ve only created the basics so far: running, stopping, jumping and climbing ladders.

    To make the character stop you could use a single frame of the character just stood still, but I like to keep the character moving to ensure the player that the game is still running! Before now, I’ve used a breathing motion by making the character move slightly up and down, but where Hana is made of so few pixels, any rearrangement of pixels results in something far from “subtle”. I think a breathing animation is out of the question, unless I find a clever way to do this. For now, I’ve created a couple of frames that make her look fidgety when stood still, and a blink frame that flashes up irregularly.




    For the jumping animation I’m currently only using one frame, although I would later like to add another to differentiate the character jumping up and coming back down.

    My climbing animation is currently universal, used for climbing up and down ladders. This particular animation works best for climbing down ladders, so I may later add another one which looks more like climbing up a ladder.

    Coding
    The main bulk of the coding I’ve done over the past couple of days has been in the character step function, which controls the way the character moves. With all the new sprite sequences, I’ve had to customise things like image-scrolling speeds for each individual animation and can no longer rely on one over-ruling command.

    I’ve split character movement into two separate “modes”-one fore running, jumping etc. and one for climbing. If the player is not on a ladder or in mid-air, the player is on_ground (this is a ready-made variable that comes with the Grandma Engine.) If the player is on_ground, the rules of horizontal movement apply, including sprite sequences and player input. If the player crosses a ladder but does not climb, ie. does not press up or down, then the rules of on_ground still apply.

    if on_ground && place_meeting(x,y,obj_ladder) && !keyboard_check( key_up ) && !keyboard_check( key_down ) {
    can_c = false; }

    But, if the player crosses a ladder and does press up or down, can_c (short for can climb) becomes true, and the rules of ladder climbing apply. This code is pretty similar to the code I wrote before for vertical movement, but I’ve added sprite sequences and image-scrolling speeds. As you can see, I’ve applied the climbing animation twice, once for each vertical direction, so if I wanted to I could use two animations that would represent each direction.

    else if (place_meeting(x,y,obj_ladder)) {

    vspd = 0;
    can_c = true; {

    if (keyboard_check( key_up ))
    vspd = -S_MAX_V /4;
    sprite_index=spr_hana_climb;
    image_speed=.1;

    if (keyboard_check( key_down ))
    vspd = S_MAX_V /4;
    sprite_index=spr_hana_climb;
    image_speed=.1;
    }

    I haven’t written much other than this, but I’ve added a few lines of code for more warp objects throughout the level. This has helped me create some clarity where caves are involved, as I have created two new rooms for caves that are joined to the main level by these warp points. Now you can see a definite distinction between the outside and inside of the cave parts!

    Outside:

    Inside:

    Playing

    Adding a lot of visual features doesn’t occur easily whilst play-testing, due to the fact that in Game Maker the platforms are made of these red-block objects that cover the background imagery. They need to do this so that I can see where I’ve put platforms! But at the same time, I can’t see if I’ve made a mistake with the imagery below. So when I’m editing tiles and want to see how they look in-game, I have to add these red blocks temporarily and delete them again afterwards. One major criticism of Game Maker is that it doesn’t allow bulk actions to be applied to all instances, so each block must be added and deleted individually, which is a looooong and tedious process. My main focus is still on visuals, but I’ll build the complete level for a play-test from volunteers next week.

    This concludes my lengthy summary or the past two days!

    I’m still having problems capturing videos of gameplay, so until I work out how to sort this out/find an alternative to Hypercam, I’ve strung together some screenshot highlights of my game so far.

    This week’s aim was to create a level which was playable from start to finish and included some of the functions that would be seen in the final game. The result is a playable place-holder graphic level with a basic placeholder HUD (“Heads Up Display”) containing level progression info. Below is a list of all the current features…

    Incorporation of the EasyLighting system

    So far I mainly have lights inside the first building, some of the lights can be seen in the image above. When the player moves into a light source, the light affects the brightness of the sprite’s colours. A comparison can be seen below, when the character moves into an unlit area.

    Ladders

    When the character comes into contact with a column of red lines such as this one, the custom variable “canc” is enabled which I’ve set up to allow for vertical movement. I’ve used some of the Grandma Engine’s custom variables such as “vspd” (vertical speed) and “S_JUMP_SPEED” (jump speed). The current climbing speed is half the value of the jump speed, which I’ve currently set to -5.25. This has actually resulted in climbing speed which is faster than the walking pace, but I’m keeping in for now for faster level testing!

    if (place_meeting(x,y,obj_ladder)) {

    vspd = 0;
    canc = true;

    if (keyboard_check( key_up ))
    vspd = S_JUMP_SPEED /2;
    if (keyboard_check( key_down ))
    vspd = (-S_JUMP_SPEED) /2;
    }

    Press up to warp function

    Previously, warping from room to room occurred on contact with the “warp” object (invisible in this screenshot!) In this instance, the warp object is placed in front of the door, so that when the character came into contact with the door, the character would be automatically transported outside the building. The X and Y coordinates for the door are the same in both rooms, so the character arrives in the new room in the same location.

    Since incorporating this feature, I’ve adjusted the mechanism to only warp when the “up” key is pressed. This was quite simply achieved by adding the line:

    if keyboard_check ( vk_up )

    to the code!

    Item Collection/Level Progression

    I’ve dotted some of my sakura objects around the level for player collection. On collision with the character, the blossoms disappear as they did before to avoid the player picking up the same flower twice.

    I’ve created a very basic HUD which tells the player how many flowers they’ve collected. Each time a blossom is collided with, the figure (starting at 0) goes up by one. This affects the global variable “gamescore”, controlled by a HUD object which always appears in the player’s view rather than on a fixed point in the level. The object contains draw commands which tell Game Maker to draw the figure “0” followed by a string of text saying “/30”. This is currently just a random figure as there aren’t even 30 collectable items in this level…

    Player Hit Points

    Underneath the level progression information is a figure representing player health. This needs the most work so far! I’ve currently set this figure to start at 5, and decrease by one every time a black blossom is collided with. These blossoms also disappear on contact, so you can only be hit by something once. The “enemy” objects probably won’t disappear in the final game, for now I have simply set it so that health cannot reach 0. I don’t currently know what will happen when this figure reaches 0! But it will probably re-locate the player to a designated re-spawn point.

    As for the rest of the level, I’ haven’t really made any changes but I’m hoping to work on some new tiles soon. Tracing the level design by hand has given me some really good ideas for environmental tiles and objects. Hopefully I’ll get a video up and running very soon!

    EDIT: My Devlog Video 1 is now online! And nearly works.

    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:

    Changes to level design

    New Design

    Parts of the level design simply just needed re-thinking. The second cave (Cave 2, as I have named it) took up a lot less space than it could have done, so I drew out an outline and tried filled in the gaps by hand, thinking about the level from a visual perspective more than a play perspective. This did mean I had to make changes to the design, marked by scribbles and notes, but this way I got thinking more about the aesthetics of the level. It gets very dull using black squares!

    I also started thinking about hazards whilst jotting down ideas, and have come up with three types of basic “enemy”.
    1. Sits motionless on the ground
    2. Swings from a ledge
    3. Moves along the ground/through the air.
    Details to follow!

    Test-Based Adjustments
    Where the level only needed adjusting rather than redesigning, it was easier to make changes in Game Maker’s room editor, where blocks could easily be moved and tested and quick succession! I used this technique at the end of the level to test jump distances and spread platforms apart:

    Game Maker Test

    Adjustments added to Level Mockup

    New Level Design
    The overall size of the level hasn’t changed, but I’ve managed to use more of the available space to create a more playable level:


    What I can do now is add the structure to a Game Maker project to create a playable level made of placeholder objects (in a similar way to before!) Only this time, I intend to use all the assets I have currently created, including tiles, characters and lights. More graphics can be added as I make them, so by the end of the week I’ll have something visually more finalised as well as in terms of gameplay. Today I started to block in the ryokan tiles and create platforms around them, making sure that all dimensions were perfect! I’ll be adding the character and some lighting tomorrow.