This is the current game project I am working on. It is a semi-open world roguelike game, where you extract everything from the planet you can, it will be gone if you fail afterall. You must run around a world brought to destruction by the big bad, jumping from island to island to kill him and his protectors. Each world is different though, and can be modified before they are entered, giving a whole new layer to gameplay.
Some Interesting Mechanics
Inspired by The Legend of Zelda, in the game there are dungeons, and not inspired by Zelda the dungeons are a series of fight rooms ending in a boss, and is procedurally generated.
The dungeon was generated by making an array of empty places, choosing a starting place and then "walking" in a direction placing fight rooms each step. But a straight line dungeon would be boring, so I made it so that the dungeon walker can turn occasionally.
Crafting is not unusual in top down exploration adventure open world games, however, the way I do it is what I think makes it interesting.
The player is greeted with a blueprint and some ingredients, and it then prompts them to place them on the blueprint. In the background, I then loop through all of them to calculate a shape and get the average angles between the points of the shape to decide what weapon gets made and given to the player.
Deeper Breakdown of One Mechanic
The world generation for Quackipelago has been through many different my stages, starting out with using wave function collapse until I realised it was too much for my skill level at the time (I plan to revisit it someday), moving to using pelin noise with thresholds to determine what layer of height it is.
But ultimately, the world is generated by creating perlin noise textures and taking the value of a pixel and making the height of the tile directly that value. The world is set up into different islands, so each island has their own perlin noise texture used.
But then I needed to add buildings and points of interest to the world without them clipping through the floor. There were 2 methods I could have taken:
Method one would have been to check for plateaus that would fit the structure.
Method two would be to change the height of all of the tiles that the structure would be on top of.
Method 2 was chosen. [Build upon]
One final interesting thing about the generation is that it is all done on a secondary thread, meaning that I can have things happen while it is generating in the background. And I use that to uhhh, tell the player what the generator is doing 😅
A couple interesting things about the game!
The world uses perlin noise to create natural and varied worlds. And it then uses multimesh batching to optimise the tiles.
Decorations and world structures are also added in the procedural generation
Ducks are my favorite animals by far, so it's good to finally be able to use one for a biggers project's protagonist. Above showcases some concept art for our protagonist.
Everything in this project is made to break me out of my comfort zone, including using 3D for a major project, having procedural generation and making use of more technical shaders to add some more life to the game.
Tools Used:
Trello
Google Docs
Godot Game Engine
Github Desktop
Aseprite
Krita
Pixel Composer
Blender
Afffinity Designer