Skip to content

WelfzTwingoFurs/WegTek3D

Repository files navigation

NOTE: Low color & FPS recording (game runs Real Smoof™!)


https://github.com/WelfzTwingoFurs/WegTek3D
###################################################################################
########### Godot raycaster-like engine!! . . . . WEGTEK-3D, Version 14 ###########
###################### written by Welfz Twingo Furs, aka Weg ######################
###################################################################################
 [created using Godot Engine v3.3.2-stable Win64, at https://www.godotengine.org/]

FEATURES:
-Moving up & down, looking up & down;
-Polygon world with height;
-Field of view (FOV), draw distance options;
-Clipping (vertices behind camera don't distort);
-Z_Index sorting (Polygons in front of polygons behind);
-One-sided polygon option;
-Depth-shading, adjustable;
-Polygons are colorable, 'darkable', texturable as unmoving-plaid or UV;
-Mono sound system;
-WIP Whole-polygon culling (if entirely outside screen, don't render) option;
-Sprite objects with height, & any amount of rotation frames;
-Sprite ground-shadows/reflections;
-Basic 'dynamic' darkness system for sprites, darken as floor is;
-Flat floor, triangular diagonal floor, & flat wall collision;
-Mouse & keyboard control;
-Viewbobbing, viewrolling options;
-Screen resizable to any size without stretching;
-Scrolling sky sprite & stretch options, floor sprite;
-Animated weapon & feet sprites;
-All changeable textures support any resolution;
-Map using draw_line, 2D & 3D options, zoom option;
-Convenient map-making options;
-Basic weapon inventory;
-Driveable cars, dynamic suspension, manual gears, customizeable base;
-Third and first person camera, with dashboard, steering wheel, Km/h and RPM gauges;
-Basic pedestrians that wander, get hurt, fight back or run away, and die.

IMPERFECTIONS:
-No diagonal wall collision;
-No shared vertices;
-Heavy texture distortion up-close;
-Clipping intervenes with UV-texturing;
-No camera-edge clipping (polys pieces outside screen still render);
-No screen clipping (polygons pieces behind others still render);
-Cull on + "Both bad neighbours" deletes polygon if the OK Vertex's index is over 0
(comparing to resized instead of original?);
-Draw distance innacurate to value depending on Angles FOV;
-Floor-sprite position slightly innacurate to aspect ratio;
-Mouselook different sensitivity for X and Y;
-No in-game options (all settings in editor);
-The car is infinitely tall for walls and other cars;
-Cars' polygons distort when clipping;
-NPCs can't dodge things, only follow targets.


###################################################################################

CONTROL KEYS:
-WASD / Arrows:   Move, rotate;
- Shift (hold):         Strafe;
-PGup & PGdown: Look up & down;
- Space & Ctrl:  Fly up & down;
-            L:   Mouse toggle;
-     [/], O/P:  Weapon select;
-     Mouse1/2:   Shoot weapon;
-            F: Enter/exit car;
-            C:  Change camera:
-          Q/E:   Look, in car;
-             M: Radio, in car;
-Shift (+Move):    Change gear;
-   Alt (hold):       View map;
-    Alt & +/-:       Zoom map;
-            X:  Noclip toggle.


DEBUG KEYS:
- Quote ('):    Console toggle;
- Scroll-lock (+Move):   Angle;
- Home:            Look center;
-  End:             Fly center;
-   F1:         /2 screen-size;
-   F2:         *2 screen-size;
-   F3:      Reset/Fill screen;
-   F4:        Pixelize screen;
-    +:                Zoom in;
-    -:               Zoom out;
-   F5:            Reset scene;
-   F8:             Close game;
-   F9 (hold):    Time-scale -;
-  F10 (hold):    Time-scale +;
-  F11:          Time-scale =1;
-  F12:          Time-scale =0.

###################################################################################

SPECIAL THANKS:
-JJoeyay, for teaching me Godot and inspiring me to make games;
-3DSage's 'Make Your Own Raycaster' series on YouTube;
-Kofybrek's 'Writing my First Ray Casting Game using C++ and SFML - SFML Tutorial';
-javidx9's 'Code-It-Yourself! 3D Graphics Engine' series on YouTube;
-Nic from college, for helping understand the polygon processing logic;
-Theraot from Stackoverflow, for making the slope collision for me.

8)

Old raycaster versions, & others
available at "older-versions".