News:

IDE : Questions & Progress  (2026-02-26)

Main Menu

PolyWolf - Yet Another Wolfenstein 3D Demo (Texture Mapped Floors & Ceiling)

Member

PolyWolf - V000 - Yet Another Wolfenstein 3D Demo (Texture Mapped Floors & Ceiling)

Ever wondered how classic Wolfenstein 3D-style games create a 3D world using simple 2D techniques? In this video, we break down a PlayBASIC demo that simulates a first-person perspective using a grid-based rendering system. 

You'll see how the demo separates floor and wall rendering to create depth, and we'll discuss performance challenges, including overdraw and frame rate drops. We also explore potential optimizations, such as flood filling techniques and visibility checks, to improve efficiency. 

Whether you're new to PlayBASIC or just curious about how early 3D engines worked, this video offers a fun and educational look into classic game development techniques! 



Code Review Video



Download Source Code


Member

It's easy to start a program, but harder to finish it...

I think that means i am getting old and get side tracked too easy.

Member


🚀 Wolfenstein 3D Tech Demo – Now with Fully Textured 3D Objects, Floors & Ceilings! 🎮🔥 

The **latest update** to our **Wolfenstein 3D-style engine in PlayBASIC** takes things to the next level! Now featuring: 

✅ **Fully Texture-Mapped 3D Objects** – Bring your world to life with interactive, textured objects! 
✅ **Texture-Mapped Floors & Ceilings** – No more empty spaces—every surface is now fully detailed. 
✅ **Dynamic Lighting & Shading** – Create anything from a bright, classic FPS look to a **Doom-style depth effect**. 
✅ **Optimized for PlayBASIC Programmers** – A perfect **starting point for 3D game development** in a 2D engine! 


   


#Wolfenstein3D #PlayBASIC #GameDev #RetroGaming #DoomStyleGraphics #IndieGameDev #3DRendering

Member

  Wolfenstein 3D Tech Demo – Now with Fully Textured 3D Objects, Floors & Ceilings!  (Source Code)

  This edition of the libraries (sort of) adds support for loading directX models and sizing them in the Wolf 3D scene.  While this is the same demo as the one shown in the two teasers (the video in the post before this one), it has various extra tweaks to help the object rendering, namely object level clipping to the camera and back face culling.   


  The demo has a few key controls to toggle various rendering modes for the Walls / Floors and Object separately. 

  There's 4 rendering modes

  mode 0 = Flat shaded
  mode 1 = Texture Mapped 
  mode 2 = Gouraud Shaded
  mode 3 = Texture Mapped  + Gouraud Shaded to create light mapping


  Read ME:

        Key Controls:

        Arrow Keys    = Move Camera
        A,D            = strafe Left / Right

        W                = Toggle Wall Rendering Mode (0-3)
        F                = Toggle Floor Rendering Mode (0-3)
        O                = Toggle Object Rendering Mode (0-3)
      F1             = reset default depth queue colours
      F2             = Randomly set near depth colour
      F3             = Randomly set far depth colour
      F4             = Scale near colour down
      F5             = Scale far colour down
        Enter            = Toggle Walls (on/off)

      SPACE            = Exit demo
     
      NOTE: Assumes your PC has updated DirectDraw drives
            as this code blends directly to 'video' surface. Which
            are emulated in most modern DD drivers.. FINALLY!
 
      NOTE: Built using PlayBASIC lastest V1.65, but can run
            in V1.64LE also
 


 



Related Articles

  -->  2D portals Conversation




Download Source Code

    Source Code is attached to the post, link bellow

Member

PlayBASIC PolyWOLF - V0.05

    This project has been re-titled PolyWOLF.    In short this project is a bare bones framework for building a Wolf 3D styled game in PlayBASIC.  I wouldn't call this an engine more a starting point for those wanting to explore 3d programming in PlayBASIC.






Download

    Attached bellow

Member

PlayBASIC PolyWOLF - V0.07d

    This version expand the libraries adding support to load WaveForm based meshes as well as improvement to the Objects function API.  Adding obvious omissions from DeleteObject, through to a CloneObject to aid in load/object creation performance. 


 


Download

    Attached bellow

Member

PolyWolf V0.08 - Billboarding / Sprites

This update introduces *billboarding*, allowing 2D sprites to always face the camera within a 3D environment — a key step toward blending 2D visuals with a pseudo-3D rendering system.

This release includes the updated source code, giving you direct access to the latest additions and rendering experiments.

What's new in Rev.8:

- ✅ Basic **billboarding support** using textured quads 
- ✅ Integration of simple **sprite-based characters** into 3D space (e.g., mech and Mario) 
- ✅ Preliminary discussion around **MD2 mesh model support** 
- ✅ Experiments with draw modes — **alpha blending, additive, subtractive** 
- ✅ A look at **dynamic sprite rendering** and distance-based tinting techniques 
- ✅ Overview of **rendering without Z-buffering** using **painter's sort** 
- ✅ Notes on rendering limitations and ideas for **future optimizations** (e.g., pointer-based vertex access)




Download


Member

PolyWolf V0.10 - MD2 - Vertex Animation


  This build makes a major step forward for the engine, namely by introducing frame based animations to the 3D object system.  This means you can load MD2 styled objects and calls the PlayOBJECT() function found in Objects.pba to establish an animated that gets refreshed each frame.   


PolyWOLF V0.10 – Animation Support and Structural Improvements

  In this update, we explore the major addition to *PolyWOLF V0.10*:  *animation support* for 3D models. The demo showcases various characters—including classic dragons, Mario, and mech units—all rendered using **software-based 2D polygon rendering**, without hardware acceleration or Z-buffering.

The update introduces **vertex animation** support through changes to the object structure and loading system. While previous versions supported a single vertex and face buffer, this version expands the object library to handle *multiple animation frames*, each with its own vertex buffer. This enables *pre-baked animation* (as seen in MD2 models), similar to frame-based 2D animation.

The internal system now tracks a **current frame** and supports dynamic allocation of vertex buffers per frame. A simple frame playback system is included, allowing animations to cycle based on naming conventions (e.g., `run1`, `run2`, ..., `run10`).

Key highlights:

  * Added frame buffer support to each object.
  * New array-like dynamic frame structure within objects. 
  * Simple vertex poke system for editing vertex data.
  * Trivial animation sequencer based on frame naming.
  * Example characters perform different actions in a perspective-correct 2.5D scene.

  This update lays the foundation for further improvements such as collision detection and more advanced animation control, all while keeping things efficient and lightweight for PlayBASIC's runtime environment.






Download

    Attached bellow.

Member

#8
PolyWolf V0.12 - SaveObject and LerpObject Animations


  This build adds a simple binary object format with Load & save support as well as the lerp object function to expand vertex animations. 


Download

    Attached bellow.