About Untitled Platformer

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.

House at night. Night

House at dawn. Dawn

House at day. Day

House at dusk. 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.

Tree #1. Seed: 13

Tree #2. Seed: 135

Tree #3. Seed: 436

Tree #4. 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.

Zone Generator Output

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.