summary refs log tree commit diff
path: root/doc/modules.md
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2024-06-16 10:35:45 +0300
committerWlodekM <[email protected]>2024-06-16 10:35:45 +0300
commitabef6da56913f1c55528103e60a50451a39628b1 (patch)
treeb3c8092471ecbb73e568cd0d336efa0e7871ee8d /doc/modules.md
initial commit
Diffstat (limited to 'doc/modules.md')
-rw-r--r--doc/modules.md124
1 files changed, 124 insertions, 0 deletions
diff --git a/doc/modules.md b/doc/modules.md
new file mode 100644
index 0000000..812b909
--- /dev/null
+++ b/doc/modules.md
@@ -0,0 +1,124 @@
+The overall source code is structured where each .c represents a particular module. These modules are:
+
+TODO: explain multiple backends for some Modules
+
+## 2D modules
+|Module|Functionality|
+|--------|-------|
+|Bitmap|Represents a 2D array of pixels (and encoding/decoding to PNG)
+|Drawer2D|Contains a variety of drawing operations on bitmaps (including text and fonts)
+|PackedCol|32 bit RGBA color in a format suitable for using as color component of a vertex
+|SystemFonts|Drawing, measuring, and retrieving the list of platform/system specific fonts
+
+## Audio modules
+|Module|Functionality|
+|--------|-------|
+|Audio|Playing music and dig/place/step sounds, and abstracts a PCM audio playing API
+|Vorbis| Decodes [ogg vorbis](https://xiph.org/vorbis/) audio into PCM audio samples
+
+## Entity modules
+|Module|Functionality|
+|--------|-------|
+|Entity|Represents an in-game entity, and manages updating and rendering all entities
+|EntityComponents|Various components that can be used by entities (e.g. tilt, animation, hacks state)
+|Model|Contains the list of entity models, and provides relevant methods for entity models
+|Particle|Represents particle effects, and manages rendering and spawning particles
+
+## Game modules
+|File|Functionality|
+|--------|-------|
+|Block|Stores properties and data for blocks (e.g. collide type, draw type, sound type)
+|BlockPhysics|Implements simple block physics for singleplayer
+|Camera|Represents a camera (can be first or third person)
+|Chat|Manages sending, adding, logging and handling chat
+|Game|Manages the overall game loop, state, and variables (e.g. renders a frame, runs scheduled tasks)
+|Input|Manages keyboard, mouse, and touch state and events, and implements base handlers for them
+|Inventory|Manages inventory hotbar, and ordering of blocks in the inventory menu
+
+## Game gui modules
+|File|Functionality|
+|--------|-------|
+|Gui|Describes and manages the 2D GUI elements on screen
+|IsometricDrawer|Draws 2D isometric blocks for the hotbar and inventory UIs
+|Menus|Contains all 2D non-menu screens (e.g. inventory, HUD, loading, chat)
+|Screens|Contains all 2D menu screens (e.g. pause menu, keys list menu, font list menu)
+|Widgets|Contains individual GUI widgets (e.g. button, label)
+
+## Graphics modules
+|Module|Functionality|
+|--------|-------|
+|Builder|Converts a 16x16x16 chunk into a mesh of vertices
+|Drawer|Draws the vertices for a cuboid region
+|Graphics|Abstracts a 3D graphics rendering API
+
+## I/O modules
+|Module|Functionality|
+|--------|-------|
+|Deflate|Decodes and encodes data compressed using DEFLATE (in addition to GZIP/ZLIB headers)
+|Stream|Abstract reading and writing data to/from various sources in a streaming manner
+
+## Launcher modules 
+|Module|Functionality|
+|--------|-------|
+|Launcher|Manages the overall launcher loop, state, and variables (e.g. resets pixels in areas, marks areas as needing to be redrawn)
+|LBackend|Handles the rendering of widgets and forwarding input events to screens/menus
+|LScreens|Contains all the menus in the launcher (e.g. servers list, updates menu, main menu)
+|LWeb|Responsible for launcher related web requests (e.g. signing in, fetching servers list)
+|LWidgets|Contains individual launcher GUI widgets (e.g. button, label, input textbox)
+|Resources|Responsible for checking, downloading, and creating the default assets (e.g. default.zip, sounds)
+
+## Map modules 
+|Module|Description|
+|--------|-------|
+|Formats|Imports/exports a world from/to several map file formats (e.g. .cw, .dat, .lvl)
+|Generator|Generates a new world in either a flatgrass or Minecraft Classic style
+|Lighting|Gets lighting colors at coordinates in the world
+|World|Manages fixed size 3D array of blocks and associated environment metadata
+
+## Math/Physics modules 
+|Module|Description|
+|--------|-------|
+|ExtMath|Math functions, math constants, and a Random Number Generator
+|Physics|AABBs and geometry intersection
+|Picking|Performs raytracing to e.g. determine the picked/selected block in the world
+|Vectors|Contains vector,matrix,and frustum culling
+
+## Network modules 
+|Module|Description|
+|--------|-------|
+|Http|Performs GET and POST requests in the background
+|Protocol|Implements Minecraft Classic, CPE, and WoM environment protocols
+|Server|Manages a connection to a singleplayer or multiplayer server
+|SSL|Performs SSL/TLS encryption and decryption
+
+## Platform modules
+|Module|Description|
+|--------|-------|
+|Logger|Manages logging to client.log, and dumping state in both intentional and unhandled crashes
+|Platform|Abstracts platform specific functionality. (e.g. opening a file, allocating memory, starting a thread)
+|Program|Parses command line arguments, and then starts either the Game or Launcher
+|Window|Abstracts creating and managing a window (e.g. setting titlebar text, entering fullscreen)
+
+## Rendering modules
+|Module|Description|
+|--------|-------|
+|AxisLinesRenderer|Renders 3 lines showing direction of each axis
+|EnvRenderer|Renders environment of the world (clouds, sky, skybox, world sides/edges, etc)
+|HeldBlockRenderer|Renders the block currently being held in bottom right corner
+|MapRenderer|Renders the blocks of the world by diving it into chunks, and manages sorting/updating these chunks
+|SelOutlineRenderer|Renders an outline around the block currently being looked at
+|SelectionBox|Renders and stores selection boxes
+
+## Texture pack modules
+|Module|Functionality|
+|--------|-------|
+|Animations|Everything relating to texture animations (including default water/lava ones)
+|TexturePack|Everything relating to texture packs (e.g. extracting .zip, terrain atlas, etc)
+
+## Utility modules
+|Module|Functionality|
+|--------|-------|
+|Event|Contains all events and provies helper methods for using events
+|Options|Retrieves options from and sets options in options.txt
+|String|Implements operations for a string with a buffer, length, and capacity
+|Utils|Various general utility functions