Just wanted to share with you people a 3D engine I'm working on using the libGDX framework, written in Java. It's really in it's beginning. Yes, I know there are plenty of 3D engines out there (even for free) including the wonderful Doom engine but I'm doing this mostly because I want to learn and improve my 3D skills and knowledge (also improve my coding and software architecture). I aim to build an engine which resemble the classic Doom, Duke Nukem 3D and all the 90's FPS engines:

On the left is the level editor I'm creating for it which is a regular Java project - only using the Java Swing (for drawing the GUI and the vertices, lines and sectors) and other geometry libs . On the right window you can see the engine which I develop using libGDX.
I've recently added textures to the ceiling and floor. That was a really difficult task. At the beginning I used the EarClipping algorithm to create the triangles that form the sector's shape (which represent the ceiling and floor). But later I realized a problem in situations where the sector has holes in it (like the one in the screenshot). For that EarClipping is not enough. So I looked up for another solution and found the Delauney Triangulation algorithm that can handle polygons with holes. The result can be seen in the image

I plan to make it modular (level editor, engine) and open-source for people to use it and create games. I also plan to make my own game with it.
Next task: add height element to sector's floor and ceiling in order to create structures such as stairways, holes, towers and etc...
Good day!
Update 6/10/18:
I've managed finally to add the height element in the engine. Each sector has a floor height value and a ceiling height value. Using these values you can create stairs, towers, windows and more... The result can be seen in the image


Next task: adding slopes!