Queen’s Crook. This is the game I have decided to write with my graphics library, as a sort of final project for my software rendering expeditions.
The game itself is going to be based around the idea that you’re a thief that works for the queen/king. The crown hires you to infiltrate the hideout of thieves who have stolen from the kingdom and your goal as the Queen’s Crook is to steal back what the thieves stole from the kingdom.
Art style is similar to Thief: The Dark Project and Dishonored. I want it to be a medieval steampunk game but leaning more on the medieval side.
I’m not expecting this project to be finished anytime soon but I thought I might as well post a thread on it so that in the future I have a place to post.
The game itself is written on top of a 3D BSP tree based world. Collision and culling are done in a similar fashion to Quake.
Big thanks to David Brackeen for his 2003 book Developing Games in Java and theagentd for generously helping me out and explaining concepts to me.
Here are some current screenshots of a little map I made using models that I made lol. The lightmaps look better without the textures so that’s why I have some pictures without textures.
The little white thing in the distance that you see in the outdoors pictures is the test entity. He’s currently a cute little ellipsoid.
Information about the code/layout
FFP (Fixed Function Pipeline) - the graphics engine
-supports most of the features in OpenGL 1.1 but implemented in software
-very fast and optimized quite well, and visual quality was still relatively maintained
-some features were added in extra. Like mixed texEnv, dithered filtering, and block filtering
-includes FFPAUX which is the equivalent to GLAUX and GLU combined
-FFPAUX has the equivalents to the GLU quadric functions, matrix functions, etc
-Multithreaded or single threaded rendering
— Engine specs/limits
----- Maximum textures - 32768
----- Maximum texture dimension - 1024
----- True color texturing unless using bilinear filtering, which only allows 256 colors (the engine quantizes the textures for you)
----- Max number of lights - 128
OSG (Old School Graphics) - this is the library that handles the Frame, Image, Input, and Game loop
-Keyboard and mouse input
-Fast basic 2D rendering (no Java2D)
-Native 64 bit/char font that doesn’t need to be loaded from external file
-Support for custom rasters (ex: 3R5G4B or whatever you’d like). Allocates byte, short, or int array depending on bit depths. Also has an option for using the best raster for the system
-Fixed-step and variable time game loops
-Fullscreen support using FSEM
FFPWLL (FFP Wrappers and Loaders Library) - the library that encapsulates the FFP structs with java objects and also includes loaders.
-Axis-Aligned Bounding Box
-Lights
-Materials
-3x3 and 4x4 matrices
-Models, including OBJ model loading
-Model Factory, for creating primitive shapes and storing them in objects
-3D Planes
-Polygons
-Vertices
-Quaternions
-Utility functions to draw polygons
-Texture loading and bitmap manipulations
-FFP Texture Memory handling, includes a key-value pair table with texture names and texture ids
-BMP image reading, including RLE8, Raw RGB, and bitfields
-TGA image reading/writing, including RLE and Raw RGB
Crook Engine (c3d) - The game engine for this game.
-BSP map
-BSP collision
-BSP map reader
-Lightmapping
-Entity Manager
-Skybox Manager
-Particle Manager
-World Light Manager