branchsbox-corewars/maincancel
687 Commits over 516 Days - 0.06cph!
Testing some stuff
Everything seems to be running with threaded tasks pretty well now. Don't allow the player to move if they're in a chunk that hasn't had collisions updated yet.
Merge pull request #3 from Facepunch/threads
Removed Block Slice Stuff / Perform Threaded Chunk Updates
Added support for sending many chunks at once compressed. Removed support to show back faces for now (need to solve z-fighting.)
Added BlockType.CullBackFaces and don't cull back faces for leaf blocks
Some UI tweaks and hotbar wrap fix
Automatically perform threaded full updates of chunks closest to the player first
Added Player.TryGiveBlock and automatically remove / cleanup orphaned items
Renamed HotbarSlot to a generic InventorySlot. Hooked Hotbar UI to inventory system. Fixed a bug where item ids started at 0.
Queue a threaded full update on neighbouring chunks when a new chunk is initialized
Added a simple dot crosshair
Added Map.ToSourceBBox and add parameter to Map.SetBlockInDirection to check for collisions. Players can no longer place blocks if it would collide with an entity
Changes to how maps are loaded. Prevent Source hang dialog by turning GeneratePerlin into a Task. Added Map.OnInitialized. Only send maps to players if the map is actually initialized / generated.
When holding Shift you won't fall off the block you're on
Added Voxel.GetBlockType()
Make Map.GetSourcePosition and Map.GetVoxelPosition static
Added Chunk.GetVoxel and Map.GetVoxel and Voxel struct. A slightly slower but nicer public API for dealing with blocks but heavy operations can still grab everything manually.
Fixed block slices not updating properly when an opaque block is removed next to a translucent one
Merge branch 'main' of sbox-corewars
Turn it into a PerlinGenerationConfig struct to pass in
Always ensure that there is some form of block at the bottom most level
Fixed grass and (temporarily) generate a list of suitable spawn positions
Update light maps immediately on chunk initial load + when refreshing. Grass blocks will not show their grass if there is no sunlight.
Increase world size Z by double. Mess around with generation a little for testing. Refactor UpdateNeighbours. Add Chunk.GetNeighbour.
Merge branch 'main' of sbox-corewars
Added FastNoiseLite and some additional generation
Fixed data being removed immediately after being set by the server 🙄
Run full torch update and sunlight propagation in a thread for connecting players initialization
When placing a block pass the direction the player placed in. Have all torch blocks extend BaseTorchBlock. Have TorchEntity use the direction data to determine which side to place against.
Only show debug info when map is valid
Removed ChunkDataMap and added superior block data system
Experiments
Update Block Slices in a worker thread (thanks @Metapyziks for pointing out I needed ThreadStatic)
Send a connecting player 8 chunks a time but still very quickly
Merge branch 'main' into tasks
Start fleshing out an Inventory API
Stashing work on Inventory API
Fixed RPC related issues
Added test_item and MainInventory population
Added ChunkDataMap (currently only storing block health). Moved some stuff out of Game and into Map. Modifying ChunkDataMap values will network them accordingly. Block health is reset to 100 whenever a new block is created.
Cleanup old logs
InventoryContainer.Serialize / Deserialize
Added NetInventory a convenience BaseNetworkable with custom INetworkSerializer that will perform an initial synchronization of an InventoryContainer
Make sure InventorySystem.ClientDisconnected is called to properly clean up InventoryContainer connections
Fixed item stacking when using custom data. Refer to item types by library name or generics. Add test stack code.
Use library identifier instead of name. Fixed default stack size. Fixed stack size overflow.
Merge pull request #1 from Facepunch/tasks
Tasks + Inventory + Health
BlockEntity.CenterOnBlock
Fixed north neighbour chunks not having light map updated + don't call UpdateAdjacents per opaque/translucent SO but instead do both at once (optimization)
Fixed grass side texture id being wrong is next to translucent blocks
Merge branch 'main' of sbox-corewars
Fixed torch light propagation order
Torch light level will be 6 instead of 14 for testing
Added BlockType.IsPassable and BlockType.HasTexture. Added block entity system. Automatically add/remove entities that blocks require. Use will place a random Red, Green or Blue torch for testing.
Add ServerEntity and ClientEntity support to BlockType to create entities for blocks if required
Merge branch 'main' of sbox-corewars
Added a real simple way of selecting blocks until something better is hooked up
Fixed Window block translucency and consolidate light dirtying
Don't cull faces if block is translucent
Fix remove queue not adding to right channel
Add light propagation code / seperate BFS passes for each color channel to support colored torches in theory
Avoid looping more than we need
Tidied up / refactored slightly. Translucent blocks are now their own scene object to allow for translucency pass. Now hand over to ogniK for shader magic.
Removed log
Fixed dirt not using correct texture ids in chunks other than chunk 0, 0, 0
An attempt to get sunlight working / propagating properly
Various fixes / optimizations for torchlight
Tidy up torchlight code and have it process BFS queue on tick