Skip to content

maciej-nowicki/simple-raycaster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple-raycaster

Java implementation of simple fpp engine using raycasting technique.

engine

This simple engine uses the same technique, which was used in famous Wolfenstein 3D, with some effects added by me. Raycasting is known to be very fast, so Wolf worked fine on 286/386 in 320 x 200.

My engine is written 100% in Java and uses software rendering, so the speed... Well, it is still 50 fps in 640 x 400 on my Core i7 ;) Well, with the lights effects turned off - lights are very slow, because they are actually calculated, not faked in any way.

engine features

  • textured walls
  • textured floor & ceiling
  • look up / down ability
  • multiple floors (platforms)
  • shading (fog) effect
  • simple lights effect
  • walking effect
  • static 2D sprites
  • texture bilinear filtering
  • different floor & ceiling textures
  • outside areas with different landsape projections
  • simple shaders concept with sample shaders
  • motion blur
  • rain effect in outside areas
  • storm lightnings in outside areas
  • image distort (sinus waving, randmom blur) - "drunk effect"
  • EXPERIMENTAL multithreaded concurrent frame rendering

plans (in order of priority)

  • animated sprites
  • moving sprites
  • opacity
  • mipmapping
  • thin walls
  • more than one texture on wall (like in DOOM)
  • configurable controls, display, etc.
  • clean code
  • optimizations

controls

  • arrow keys - movement
  • CTRL - shoot
  • Q - look up
  • Z - look down
  • A - center look
  • W - toggle wall rendering method
  • F - toggle floor/ceiling rendering method
  • L - lights on/off
  • E - shading on/off
  • H - toggle landsape rendering mode
  • S - walking effect on/off
  • X - sprites on/off
  • T - texture bilinear filtering on/off (warning: slow!)
  • G - weapon on/off
  • F1 - rain on/off
  • F2 - lightnings on/off
  • F3 - motion blur on/off
  • F4 - "drunk mode" on/off
  • D - debug info on screen and console on/off
  • ESC - quit
  • ENTER - toggle "fullscreen" mode

credits

During implementation, I used information from following sites:

copyright

Textures from Wolfenstein 3D and graphics from DOOM (shotgun) were used only for testing purposes. I do not own or claim any copyrights to these files.

About

Java implementation of simple fpp engine using raycasting technique

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages