This is a personal project I've been working on as a way to practice developing systems I usually don't get to work on in classes and to experiment with ideas that would usually be out of scope in that context.
The basic idea for this game is that a series of people have been trapped in a bizzar, otherworldy palace by a demon. You play the game through the eyes of each character, one at a time. Each character starts in a different part of the palace, but all locations are connected and the things you change as one character stay changed for the next characters, so your progress doesn't reset. If one of them dies, you move onto the next. If every character dies, game over. In order to escape, you have to solve a series of puzzles or other challenges and kill the demon that trapped you in this realm.
The first thing I did when making this project was create the GDD. I created several character concepts, a narrative overview, and a rough draft of the level design. However, I had no idea how I wanted the puzzles to look, so I took a break to start developing the basic system and see what kind of fun things I can do with them.
I'm currently in the process of developing the basic systems that the rest of the game will be built from. This include the movement and inventory systems, NPC dialogue managers, and a random maze generation system I've been experiementing with.
My top priority right now is the movement system. Players will use this constantly, and if it feels uncomfortable in any way, the game won't be fun to use. Currently, players can run, jump, and crouch. When on a slope of more than 45 degrees, they will slide down it.
The next system I designed was the inventory system. There are two key kinds of storage objects: storage units, and inventories. They function effectively the same way, except one is attached to an object and one is attached to a player. They each store a list of objects. The objects' positions in the list correspond to inventory slots.
This started off as a class assignment, but I decided to expand on it a bit.
First, a maze generator creates a grid of tiles of a given size. In this case, the tiles are 10m x 10m, with 1m thick and 10m tall walls. The number of rows, columns, and floors is variable and subject to change once I started testing levels. It then uses a Depth First Search to generate a random maze in the tileset.
The maze generator then assigns each tile a "type" based on what walls it does or does not have. Using this information, and can randomly select one of the premade tile designs for that type and assign it to the tile. It does the same for the walls based on whether or not they are enabled. This creates a fairly realistic looking maze that a player could run through.
As I continue to develop this system, I want to add more intentionally designed rooms for premade puzzles and challenges the players will have to face. I also want to consider exactly how these rooms will be spaced out and add a system to ensure they are always relatively fairly placed, even if they are random. That way, all the challenges aren't right next to the last chacaracter the player gets to use.