/kurve

Remake of the classic game "Achtung, die Kurve!" in C++ using OpenGL and GLFW

Primary LanguageC++MIT LicenseMIT

Github Actions mit license kurve

Kurve is a remake of the popular game "Achtung, die Kurve!" using C++ and OpenGL.

Table of contents

Getting Started

Install using snap

Kurve is available in the Snap Store under the name "kurve".

Get it from the Snap Store

$ sudo snap install kurve

To get kurve as a rolling release

$ sudo snap install kurve --edge

Install from the source

Clone this project

$ git clone https://github.com/h-valdes/kurve.git

Install all the dependencies:

In Ubuntu 20.04

$ sudo apt install libglfw3-dev libfreetype-dev nlohmann-json3-dev cmake

In archlinux or Manjaro

$ sudo pacman -Syu glfw-x11 freetype2 nlohmann-json 

In Fedora

$ sudo dnf install glfw-devel freetype-devel json-devel mesa-libGLw mesa-libGLU-devel

Build and install the project

Install from the bash script (default on /usr/local)

$ sudo sh scripts/install.sh

Build and install manually:

$ cd kurve
$ mkdir Release
$ cd Release
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ sudo make install

Enjoy

$ kurve

Debug

To play without installing the game in your computer (you still need to install the dependencies):

$ cd kurve
$ mkdir Debug
$ cd Debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
$ ./kurve

Or from the script:

$ sh scripts/debug.sh

Roadmap

  • v0.1-alpha
    • Minimal working implementation of "Achtung, die Kurve". It has all the features from the 1995 DOS version
    • Random start position of the players
    • Random length of lines (defined in a specific range)
    • Menu to select the players
    • Game Over screen
  • v0.2-alpha
    • Sort the name of the players in the Game Over screen depending on the number of points
    • Make the terminal output less verbose when the build type is release
    • Read the configuration of the players from a json file
    • Generate a snap package (.snap) with snapcraft
    • End the game when pressing Escape in the Menu
    • Full Screen support
    • Generate a debian package (.deb) with cmake
    • Migrate from the self built classes Point and Vector to GLM
  • v0.3-alpha
    • Use a constant or max. fps. In Manjaro was unplayable, because the fps were too high
    • Add a starting direction arrow in the transition zone (before starting)
    • Improve the scoring system and add a minimum differences to win
    • Reorganize the static files and structure of the repository
    • Improve the font rendering and the class Font in general. Add blinking text throught the class, different types of font (bold, italic, etc) and different sizes
    • Create an AI to play against
    • Add a new general Menu (to choose between different options: config, exit the game, etc)
    • Create an abstraction for the Scenes and a SceneManager replacing the changes in the class Game
    • Change the style to differ with the Flash Remake of "Achtung, die Kurve"
    • Generate an AppImage package
    • Generate a Flatpak package
    • Render textures (images) for example the logo of kurve in the main Menu

License and Authors

This Project started as a final project for the class Multimedia at the TU Bergakademie Freiberg by Simon Al Nomer and Hernán Valdés. The final version for the class corresponds the Release v0.1-alpha.

The class was taught by Jonas Treumer and Ben Lorenz and inside of the project are still traces of the C code programmed by them as an example of the functionality of OpenGL and GLFW.

Screenshots