Skip to content
/ pxlwolf Public

Seriously overengineered Wolfenstein-like raycast engine

License

Notifications You must be signed in to change notification settings

jacmoe/pxlwolf

Repository files navigation

# The
# ██████╗ ██╗  ██╗██╗     ██╗    ██╗ ██████╗ ██╗     ███████╗
# ██╔══██╗╚██╗██╔╝██║     ██║    ██║██╔═══██╗██║     ██╔════╝
# ██████╔╝ ╚███╔╝ ██║     ██║ █╗ ██║██║   ██║██║     █████╗  
# ██╔═══╝  ██╔██╗ ██║     ██║███╗██║██║   ██║██║     ██╔══╝  
# ██║     ██╔╝ ██╗███████╗╚███╔███╔╝╚██████╔╝███████╗██║     
# ╚═╝     ╚═╝  ╚═╝╚══════╝ ╚══╝╚══╝  ╚═════╝ ╚══════╝╚═╝     
# project
# https://github.com/jacmoe/pxlwolf
#
# (c) 2020 - 2021 Jacob Moena
#
# MIT License
#

pxlwolf

Seriously overengineered Wolfenstein-like raycast engine

TOC

Screenshots

PixelWolf

Clutter creates an atmosphere

Static sprites

Textured floor and ceiling

PixelWolf

Level Editing in LDtk

Pxlwolf uses the LDtk Level Designer Toolkit to create and edit levels. LDTK First four levels of Wolfenstein 3D. Wolfenstein Levels Taking care of the details. Static sprites and pickups

Goals

  • Explore raycasting, including height-mapping and animated tiles.
  • Learn how to use modern C++ features, and move from C++98 to C++17 and beyond.
  • Create a complete game, and not just a tech demo.
  • Use third-party code whenever possible, but keep things simple.

Features

Here I will write the features of PixelWolf down as I implement them.

Implemented

Planned

Dependencies

PixelWolf is being developed on Linux and Windows.

Compiled using MSVC 2019 on Windows, and GCC 9.3 on Linux.

Uses Visual Studio on Windows, and CMake on Linux.

External dependencies

Library Description License
Allegro 5.2 A game programming library Zlib license

Windows

The easiest way to get Allegro on Windows is via Nuget, which is why this project uses Visual Studio for Windows.

The PixelWolf solution references two projects, Lua and PhysicsFS, which should be generated using CMake before opening the project.

Use the CMake script in 3rdparty and choose 3rdparty/vsbuild as the "where to build the binaries" folder.

Make sure win32 is chosen as the architecture, otherwise CMake will choose x64 (and that is not going to work).

After having generated the two projects, you can now open the PixelWolf solution. Maybe in the future, there will be a better way.

Linux

Allegro should be available from your package manager. On Ubuntu, perform a simple sudo apt-get install liballegro5-dev

On Linux PixelWolf is fully CMake'd. Simply open the main CMake script using CMake or a CMake-aware program, like VSCode or KDevelop.

Bundled dependencies

Library Description License
cereal C++11 library for serialization BSD license
enTT C++ entity component system MIT license
Lua 5.4 Scripting language zlib License
PhysicsFS Archive support for games zlib license
PhysFS++ C++ wrapper for PhysicsFS zlib license
RapidJSON A fast JSON parser/generator for C++ MIT license
Sol A C++11 Lua wrapper MIT License
spdlog Logging library MIT license
stb_image Image loader Public domain

The bundled dependencies are all header-only, and doesn't require building, except for Lua, lgui, and PhysicsFS.

On Windows, you need to generate the projects simply by running the `` batch file from the 3rdparty directory. You need CMake, Doxygen and the Graphviz tools (dot) installed.

On Linux, the CMake script handles all this for you.

Credits

This project is using code from the c-raycaster project - the raycaster and a lot of the pixel related functionality is borrowed from the project. It also uses code from Herrecito's 2.5D Raycaster engine in C. And the overall structure of the project is lifted from Balantkissdev's Raycaster engine.

About

Seriously overengineered Wolfenstein-like raycast engine

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published