GithubHelp home page GithubHelp logo

hexdecimal / tcod-cpp-engine-2022 Goto Github PK

View Code? Open in Web Editor NEW
23.0 4.0 1.0 260 KB

A modern roguelike engine made while following the older libtcod tutorials.

Home Page: https://hexdecimal.itch.io/tcod-cpp-engine-2022

License: The Unlicense

CMake 2.53% C++ 96.60% HTML 0.87%
cpp game-engine gamedev libtcod roguelikedev cpp17 emscripten wasm

tcod-cpp-engine-2022's Introduction

Libtcod C++ engine 2022

A modern roguelike engine loosely following the Complete roguelike tutorial using C++ and libtcod. As part of the RoguelikeDev Does The Complete Roguelike Tutorial (2022) series.

How to setup

  • Make sure you have the correct tools ready.
  • Clone the repository.
  • Make sure to initialize the vcpkg and libtcod submodules. If either folder is empty then the build process will fail.
    • The command to do this is: git submodule update --init --recursive
  • Load this project in VS Code and install any recommended plugins. Most importantly: C/C++, C++ Intellisense, and CMake Tools.
  • Using the CMake Tools plugin you can now build and run this project. Dependencies will automatically be installed via Vcpkg.
    • On Windows, when CMake Tools asks for a toolkit you should select Visual Studio Community ... - amd64.
  • The project will now build and run with F5.

RoguelikeDev Does The Complete Roguelike Tutorial

tcod-cpp-engine-2022's People

Contributors

hexdecimal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

forsuin

tcod-cpp-engine-2022's Issues

More detailed map memory.

The current map memory only tracks terrain tiles. I want to update this to track everything. Tracking seen tiles by their graphic is probably the easiest way to do this.

Make items more generic.

Right now items are setup as an abstract class and use polymorphic subclasses to define behavior. I want to change this so that items are a generic mostly-static type which can point to the behaviors they use. This should make it easier to add and remove item behaviors since right now serialization is a real pain.

Data associated with items should be moved to a dictionary like type. Something like std::unordered_map<std::string, std::any> or something more strict.

Mouse support.

The mouse is supported in some menus but not others. In theory it shouldn't be too hard to have full mouse support like in Brogue.

  • Inventory mouse support.
  • Right click to dismiss menus.
  • Click away to dismiss menus.
  • In-game mouse menu for actions. As an always visible or right-click menu.
  • In-game mouse movement. Like in Brogue.

Add animations.

I'd like to add animations for the spells. This will involve some refactors to the state handling, but it should be too difficult to actually design the animations.

Throwable potions/items.

Things like the scroll of confusion might make more sense as a confusion potion which you can throw at enemies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.