I told jake, the game designer, think in more details and forget the fear of how long it will take to develop. I know that guy has a uber-creative mind, and I have felt this whole time he has been limiting his ideas to a crutch of how “hard” it might be to develop an idea in the game. I said “think of the absolute details, right down to what exactly happens when _____ ” . Up to this point, I was a bit worried of my abilities, but it is obvious now, that I seem to have no limits. I haven’t had a challenge become impossible, which has shocked even myself. But its time to really make this game exactly what it needs to be in order to have the best chance at becoming something super sweet and tasty.
Something that was added to the design was a depth-setting harvesting attribute of digging down ( and as well, placing upwards ) in the game. Oddly, we have a jump ability implemented, which could be part of the up/down. So maybe the player can dig down, and jump out, and trap some bad guys, build a hill, and place his house on top. Hell yeah, I am into it. So lets plan the first part…. digging.
I feel this is an important step in this game, because it adds to the virtual depth that it has when we gave the player the ability to jump. It is a 2D game, and the jump is still a 2D action. The player sprite never actually leaves the Zed axis it starts on when he jumps, we just add a shadow, turn on the unity gravity and remove the collider from the player ( currently ). This was a small challenge I had to virtualize, and I am still not sure if my solution was the best idea ( and it still isn’t perfected as you can see when we jump north or south – battling with the gravity engine in a virtual way ). When I read jakes design notes on harvesting/digging the base tile to reveal another, and eventually reaching a undiggiable continental plate, I got excited, even more so when I confirmed the logic with him on the phone. This made a even more cooler concept even more cooler than before. But, how are we going to record depth?
One idea, would be to simply have yet another list that remembers which tiles have been dug, and how far. At the moment, the entire map is just flat. Would only the player have the ability to change that, or should we generate some depth with the map? If so ( and I think so ), how would we show that depth? in other words, how do we show the edge of cliffs and the depth of pits?
The list of depths would make the most sense, and even though it seems archaic, it would make sense only because the player could place dirt or sand tiles on other tiles, thus making the depth positive versus negative. Creating another tile layer responsible for displaying these depths would be the next logical choice. So the only trivial part of this execution would be how do have the player collide with the edges going one direction but pass through ( walk off ) going the opposite direction? Maybe, utilizing the list? Lets just go through this one step at a time. First, we need to remove the rock aux tile, and then adjust the base tiles to have rock and continental plate.
A quick unity manual search yields a platform effector, which duh, in a side scroller game, a platform that the player can jump through but land on, is a thing! yay! This will be perfect for cliffs, but I have a feeling I will have to figure out a way to lay these down in the map. I think I said before, to display the depths, we could have another tile map to show the appropriate tile which would contain the graphic for depth on the top,bottom,left, or right. If I can place the platform effector on the graphic itself, we will be golden.
So the rock is removed and now we have a rock base tile and a plate tile. Lets do the digging part, add the items ( grass, dirt, sand, rock ). We should probably enforce a item use to get these items, but for now, we won’t worry about it since that part of the game is already done ( we just have to add the item required for harvesting in the item object inside the inspector ).
After a lot of consideration, I think I have come up with a perfect plan of attack. So, we will hold a list of depths in the map, which will more than likely come from another perlin generation, which will be rounded to the nearest integer, 0 representing sea level, negative being down and positive being up. We will clamp this number so it can’t get to crazy, but it can, just not for now. Each tile will have a corresponding bluff tile as well as an edge tile. The bluff would only be the ‘front’ facing tile, and the edge would be on the outside of the tile ( so the adjacent tile ) either top,left,right, or bottom, or a combination there in. The edge tile would be the platform collider itself. The one major trick is going to be adding the bluff tiles to the map as an addition to the tilemap outside of the actual map itself, and then showing a gravitable fall of the player when he goes off an edge.
So first we will find the height of the tile, the adjacent tiles, and render a bluff tile if the target tile is lower than the one above. This alone will look like crap and not function, obviously, but it will be the first step. The next step will be creating a new tilemap for edges, setting a platform collider in that tilemap and finding edges and setting the corresponding edge tile. We will have to check if it is a slope , so if there is more than one level of change, not to draw two or more edges. The next step will be gravity of the player being turned on when going off an edge, and then finally drawing the player behind and/or landing on the next level.
I have done so much searching for a solution for this, it seems I am trying to do something with tilemaps that it just isn’t set up for. Maybe isometric would have been a better solution, but that would force such a change at this point, it would have been overkill for a prototype, it also wasn’t part of Jake’s design and just makes the game quite different than the original idea.
So , for now, I have decided to shelf this feature of the game until either the end of prototype development, or after the prototype is published.