Skip to content

Latest commit

 

History

History
150 lines (138 loc) · 7.31 KB

TODO.md

File metadata and controls

150 lines (138 loc) · 7.31 KB
  • Isolate client position, view box and dimension.

    • draw avatar based on dimension.
    • send dimension with avatar.
  • Distinguish between client camera position, observer position and avatar position.

  • Associate multiple clients with single view box.

  • Optimize ray tracing. Do two level tracing. Get chunk, trace, then get next chunk. Will save time on getting chunk. Can skip uniform chunks.

  • Add server options for autosave and autosave period.

  • Detach worker threads so GC does not stop them.

  • fix problem with dimension change when old position confuses server and box is not updated. (Use position key. Client sends key with current position. Server only accepts positions with current key. Client and server increment position key when position changes)

  • Add client view radius config option.

  • Fix WorldBox equality checking.

  • Generic Box type


UI

  • Autocomplete in console
  • Translation strings.
  • Launcher nick option/
  • Launcher menu for world conversion tool/

GRAPHICS

  • Add configurable meshing range.
  • Remove meshes outside of mesh range.
  • Implement command buffer for rendering. All rendering commands are recorded into buffer, then pipeline object renders everything. Possibly in another thread. RenderIR.
  • Implement chunk mesh preloading for all meshes.
  • Redo chunk block metadata. Metadata should simply state if chunk has internal geometry and side solidities.
  • Populate lookup chunk with block shape data before meshing.
  • Implement blockShapeHandler for block entities.
  • Fix side intersection table size.
  • Fix rendering of blocks adjacent to water.
  • Finish new rendering code.
  • [U] Upload meshes in worker threads. Avoid copy of mesh. / Undone. Rendering issues.
  • Implement per corner solidity.
  • Implement block side masks.
  • Implement block shapes.
  • Implement optimized mesh generation.
  • Implement ambient occlusion
  • Implement chunk mesh preloading. (Only meshes of current meshing pass is preloaded).
  • Replace arrays and Appenders with Buffers in Batch and meshing.
  • Use half-floats for chunk meshes.
  • Make generic vertex.

RAILROAD

  • Separate stub meshes and read adjacent rails for advanced meshing.
  • Use stone/gravel material for rail's bottom side and for slope's side.
  • Click-and-drag rail placement.
  • Improve rail solidity check. Use bitmaps to get solidity info for each rail segment.
  • Multiple rails per tile.
  • Add mesh rotation.
  • Add rail mesh based on rail type.
  • Store rail type in entity data.
  • Make rail bounding box fit to mesh.
  • Load and render rail mesh.

STORAGE

  • Improve calculation of modified chunks.
  • Fix component id sync
  • BUG: In chunk manager when layer has users, buffer allocated for uncompressed data is never freed.
  • BUG: In chunk manager returned pointer points inside hash table. If new write buffer is added hash table can reallocate. Do not use more than one write buffer at a time. Reallocation can prevent changes to buffers obtained earlier than reallocation to be invisible.
  • Use regions to store number of chunk users. This can help boost user add/removal, if chunks will store their user count in a region table.
  • Move metadata update on commit stage. Useful when multiple changes per frame occur to a chunk. Metadata update can be done in parallel.
  • Add storage for uncompressed layer data in chunk manager. Compressed data can be stored along with decompressed.
  • Remove BlockData. First ChunkLayerSnap needs custom (de)serizalizer due to union usage.
  • Do not uncompress unneeded chunks (non-visible). Decide by metadata.
  • Do not uncompress chunks on client until requested.
  • Implement heightmap caching in chunk gen.

BLOCK ENTITIES

  • Add block entity rendering.
  • Fix write buffer retrieval. Old snapshot was copied every time, not only when WB was created.
  • Use block entity mesh handlers for meshing.
  • Send block entity layer to mesh workers.
  • Multichunk block entity.
  • Add block entity removing.
  • Add block entity type registry.
  • Send block entity layer to client.
  • Add block entity code.
  • Add static entity layer code.

ENTITIES

  • Send only observed entities.

EDITING


OTHER

  • Use metadata in slope block.
  • Add block metadata layer.
  • Fill slope rail sides with faces when not occluded.
  • Move chunk debug info gui into clientworld.
  • Add block rotation handler.
  • Add extra slope side shapes.
  • Add ShapeMetaHandler.
  • Fix AO flipped quad meshing.
  • Fix non-existing chunk layers being sent to client (Chunk manager always returns empty snapshot when chunk is loaded).
  • Add ChunkLayerInfo.
  • Add hasSnapshot to chunk manager.
  • Fix chunk manager returning layers with wrong data length for uniform chunks.
  • Allow any vertex type being put in batch.
  • 2d rendering
  • Correctly handle clients with the same name.
  • Minecraft save import
  • Implement launcher server connection feature.
  • for each layer universal handlers for allocation, save, load, write buffer. Some layers may not have data even when chunk is loaded.
  • remove _saving states in chunk manager
  • Fix case in chunk manager when old snapshot was saved and current snapshot is added_loaded.
  • Toolbar.
  • Restore capture of per-block changes.
  • Add active chunk system.
  • Fix app not stopping when main thread crashes.
  • Implement generic solution for saving/loading data for use in plugins. (double buffering?)
    • Fix world save on game stop.
  • Complex write buffer with delayed allocation and uniform type support.
  • Big-scale editing. Send edit commands instead of per-block changes.
  • Fix mesh deletion when chunk does not produce mesh. Use special "delete mesh" tasks to queue mesh deletions. This allows to upload new chunk meshes together with deleting meshes of chunks that do not produce meshes anymore.
  • fix chunks not loading sometimes [Chunks were not added early enough, so first snapshots were loaded for not added chunks => holes]
  • remove old observer on client when (re)connecting
  • fix metadata usage in chunk mesh manager. [Bug in hasSingleSolidity]
  • fix crash on recieving data for already loaded chunks. [isLoaded was not checked. Now chunks are loaded through modification]
  • fix snapshot users not correctly added on commit. [snapshot was added to oldSnapshots with wrong timestamp (currentTime instead of snap.timestamp)]
  • change clientworld
  • remove chunkman
  • remove chunkstorage
  • chunkmanager usage of chunkProvider
  • rework chunkmeshman
  • mesh gen new queue
  • remove observer on stop in client
  • set received data in chunk manager on client
  • remove chunk changes from chunk manager
  • remove mesh when mesh is not generated on remesh
  • remove limit on message size in shared queue
  • remove chunk
  • add remesh button
  • fix memory leak. Meshes was iterated by value and was loaded each frame again. Fix: change foreach(mesh) to foreach(ref mesh)
  • fix transparent drawing
  • implement total number of snapshot users
  • fix excess addCurrentSnapshotUser call on save in onSnapshotLoaded (chunks were not unloaded earlier?)