Game concept

What’s this game about ?

Let’s put the tl;dr on top :

TL;DR : cooperative fps in procedurally generated maps, with persistent inventory between sessions.

Here’s a short video of the current state of the game

Now, for those who want details :

Basics

The player movement is classic FPS movement, no surprises there. Jump, move, aim, crouch, shoot. There might be some dodging or walljumping implemented later.

The game is purely cooperative, and the players fight their way through a generated map, picking up weapons on their way.

Generated maps

Each time a game is started, a new map is generated by the game, using several settings the hosting player will be able to tweak :

Map seed, which will initialize the map generator

Difficulty, affects the enemies (number/health/attacks) and rewards

Number of players, affects both the map size and enemy forces

Map size, ranging from Tiny (maybe 5 minutes of play if you’re fast) to Large (at least an hour)

Theme, modifying the graphical theme of the map/enemies, as well as its layout

The player number variable will be editable by the host, to allow 2 players to play a 4 player map if they want to.

Generated weapons

Weapons will be generated independently of the map. The map generator will ask “I want x weapons for these settings” and place them.

The seed for the weapon generator will not be controllable by the player, so if he replays the same map twice, the layout will be the same, but the weapons will change. Their average power will roughly be the same.

Each weapon has 2 independent fire modes : they can have different cooldowns and use different kinds of ammo.

Ammo

There are five types of ammo, which are universal between all types of weapons. Each fire mode of each weapon can potentially use any type of ammo, and even use multiple types (for example 5 of type 1 and 2 of type 4).

Upgrades

Some weapons will be upgradeable, by 1 or 2 upgrades. These upgrades come either from finding them in a map, or by destroying other weapons, which will yield an upgrade of a relevant type.

It will be possible to remove upgrades to place new ones, but doing so destroys the previous upgrade (this avoids the “what if I find a better upgrade?”). Destroying an upgraded weapon will result in getting back the upgrades (avoiding the “what if I find a better weapon?”)

Inventory system

A player has :

4 active weapons (temporary number, to determine through tests)

an inventory (“backpack”), which contains the items found during the current game, and exists only during a game

a storage, keeping items found in previous games.

Before the game is started, the player can select the 4 active weapons.

When not playing, the player can access the storage to upgrade/destroy weapons and create favorite weapon loadouts.

Trading

I would like to implement trading, but doing so while preventing abuse is difficult, at least without a global trading server.

Scoring

Scoring is a somewhat optional part of the game, but still present. Score will be based on statistics such as damage done, kills, deaths, damage taken, accuracy, time taken… It should reflect player skill (easier said than done though).

At the end of a game, a reward will be given to each player according to their score. Also, silly titles (like Crash Team Racing multiplayer, for those who played it).

Technical

C++, OpenGL, GLEW, GLFW. The code is still platform-independant, I hope it will stay that way.

I almost certainly forgot stuff in there, but that should give you an idea of the game. The next posts won’t be that long.