About Untitled Platformer
Sections
I'm currently working on a roguelike-platformer game written in C++. Below I'll discuss some of the features the project has currently, and some features I plan to add.
Premise
The idea behind the game is that a player will be dropped into a storyline, and they then have to talk to other characters and fight monsters in order to complete a quest.
Following traditions of the roguelike genre, if the player dies they will have to start over from the beginning.
To keep the game interesting on multiple attempts to complete the same quest, many elements of the story will be procedually generated. This will include the layout of towns and regions, and the different side quests available to the player.
Dynamic Lighting
The lighting of the game world adjusts throughout the day to show the progression of time.
Rendering is done using OpenGL with custom-built shaders.
Night
Dawn
Day
Dusk
Procedurally Generated Decor
In order to support a proceudally generated world, plants and buildings need to be generated as well. This will keep different places looking unique.
Below is an example of one such item.
Seed: 13
Seed: 135
Seed: 436
Seed: 2318
Branching storylines
Interactions will be text based, with the player having choices when they reply to characters.
A simplified example of how this would look in game data files is below.
#npcGreeting: Hello, how can I help you today?
#choiceSet:
#choice: I need weapons, quick! There are orcs in the woods!
#reply: Ha, orcs? Ain't been orcs in these parts in over a hundred years!
#choiceSet:
#choice: Come see for yourself!
#reply: Go away, I have better things to do.
#choice: If you won't help me, at least prepare yourself. They'll be here soon!
#reply: If these orcs exist, I'll be ready.
#choice: Can I see your wares?
#openShop: $weaponShop
Zone Generation
In order to keep the game fresh for multiple playthroughs, the layout of the world the player explores is procedurally generated. This system is a work in progess, but some high-level sample output is below.
Technology Stack
I'm developing this game using minimal libraries in order to learn more about how lower-level parts of game development work.
The bulk of the project is written in C++. Rendering is done with OpenGL with custom shaders. I have custom data structures for storing and manipulating mesh data.
I'm using a small library called Allegro for cross-platform compatibility.