Skip to content

thijsrijkers/soup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Soup

Soup is a lightweight 3D engine written in Go with Ebiten. It lets you build simple first person 3D worlds, reminiscent of classic 90s shooters like “Wolfenstein” and “Doom.”

Map generation

In the program, the map is represented as a 2D array of integers. In this array, a 1 & 2 represents a walls, while a 0 represents a walkable area. For example, a simple map could be:


        {1, 1, 1, 1, 1, 1, 1, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 2, 2, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 1},
        {1, 1, 1, 1, 1, 1, 1, 1},
      
demo GIF

Player movement

  • W – Move forward
  • S – Move backward
  • A – Rotate left
  • D – Rotate right

Installation

Clone the repository:

git clone https://github.com/thijsrijkers/soup.git
cd soup
go mod tidy

Than launch the program by executing:

go run ./main.go

Requirements

  • Go 1.21+
  • Ebiten v2 (github.com/hajimehoshi/ebiten/v2)
  • Operating System:
    • Linux / Windows / macOS
  • Linux / WSL additional dependencies (for X11 / OpenGL support):
sudo apt update
sudo apt install -y \
  libx11-dev \
  libxrandr-dev \
  libxinerama-dev \
  libxcursor-dev \
  libxi-dev \
  libxxf86vm-dev \
  libgl1-mesa-dev \
  libglu1-mesa-dev

Releases

No releases published

Packages

 
 
 

Contributors

Languages