385 Commits

Author SHA1 Message Date
IntegratedQuantum
2c33f3779d Switch to a self-made list data structure that doesn't return OutOfMemory errors. 2024-01-30 16:34:40 +01:00
IntegratedQuantum
de004841b7 Handle OutOfMemory errors centrally for the globalAllocator and derivatives.
To let the rest of the code know about this decision I implemented a wrapper over the Allocator interface which cannot fail.

This is just the first step in the upcoming refactoring attempt.
2024-01-29 17:22:20 +01:00
IntegratedQuantum
7565223260 Avoid anyerror in gui components by explicitly giving the error set. 2024-01-26 10:46:36 +01:00
IntegratedQuantum
d215755415 Fix undefined behavior when creating the item slot string.
Fixes #260
2024-01-26 10:10:32 +01:00
IntegratedQuantum
178489b044 Merge All ItemSlot types into one struct.
Fixes #240
2024-01-26 00:14:51 +01:00
IntegratedQuantum
3c6147dc6a Fix double free. 2024-01-25 22:22:35 +01:00
IntegratedQuantum
bcdca0bfdd Catch errors in the audio initialization and continue the game instead of panicing
Should fix #255
2024-01-25 22:13:07 +01:00
archbirdplus
fd332139d7
Progress on making compile errors easier to debug for new users: #241, #251, #252 (#254)
* Rename run_release scripts to run_OS (#241)

* Update README with new script names (#241)

* Fix run_windows infinite loop

* Make debug_linux more verbose.

* Make windows script errors match linux

* Automatically set working directory (#252)

* Remote quotes from echo commands in run_windows

* Replace zig run with zig build run

* Replace spaces with tabs in run scripts.

* Make 'Building Cubyz' message more accurate

* Have run scripts check the machine architecture.

* Add failsafe for unrecognized architecture; erase scratch work in debug_windows

* Replace more spaces with tabs in debug_linux

* Linux run script: don't pause if debug build or NO_PAUSE

* Windows run script: do not pause in debug builds or if NO_PAUSE

* Escape a paren

* Fix x64 typo

* Delete logs about failing to build

* Use `call` to call the batch script on windows

Without `call` windows won't execute the lines after calling the batch script.

---------

Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
2024-01-23 19:02:51 +01:00
IntegratedQuantum
6ce09c52cd
Update README.md, adding a guide to run Cubyz without using git 2024-01-21 13:54:28 +01:00
IntegratedQuantum
83f04993e8 Fix ReleaseSafe bug caused by undefined memory.
Fixes #169
2024-01-21 12:52:16 +01:00
IntegratedQuantum
08704ef4aa Don't load meshes until all surrounding (3×3×3) chunks finished light propagation.
This fixes a bunch of lighting bugs:
Fixes #219
Fixes #170
Fixes #163
2024-01-20 18:23:09 +01:00
IntegratedQuantum
62d4920869 Cleanup some code and fix a data race. Mesh generation should also be a bit faster now. 2024-01-17 19:21:22 +01:00
IntegratedQuantum
d37589397c Update the dependencies, fixing an issue with cross compilation to windows. 2024-01-16 21:32:34 +01:00
IntegratedQuantum
9b51d3e47d Add new stone texture
Co-Authored-By: careeoki <122191047+careeoki@users.noreply.github.com>
2024-01-15 19:59:08 +01:00
IntegratedQuantum
25e4ba6b84 Split up chunk.zig and renderer.zig
I'm getting tired of scrolling around in those large files.
2024-01-15 18:55:33 +01:00
IntegratedQuantum
5160f22e5c Don't break/place blocks while in the inventory. 2024-01-12 22:59:56 +01:00
IntegratedQuantum
a542fb73e4 Configure glass to correctly absorb light from the lighting system. 2024-01-12 21:55:47 +01:00
IntegratedQuantum
8fc7641d16 Quick and Dirty block breaking, and fixed a lighting bug when breaking blocks. 2024-01-12 21:45:23 +01:00
IntegratedQuantum
8a8af8e46f Update zig version 2024-01-12 20:58:58 +01:00
IntegratedQuantum
d3ad1b4d01 Use bitwise operations to extract data from gl_vertexID.
This seems to fix problems for some people, probably fixing some rare hardware bug here.
2023-12-30 23:22:47 +01:00
IntegratedQuantum
e8f62d5660 Fix #244 and improve performance of light updates. 2023-12-23 20:22:02 +01:00
IntegratedQuantum
4330f33d36 Improve priority calculation for light maps so it always generates the light maps before the contained terrain.
Fixes #243
2023-12-21 22:10:55 +01:00
IntegratedQuantum
f774ccf370 Remove lighting when breaking blocks.
fixes #221
2023-12-21 21:22:39 +01:00
IntegratedQuantum
89438a2e2a Fix problem with negative item colors, which mostly come from the java version. 2023-12-20 19:58:58 +01:00
IntegratedQuantum
3eb3e2b358 Add sunlight. 2023-12-20 14:25:56 +01:00
IntegratedQuantum
dcb76a77a8 Add void caverns. 2023-12-10 13:27:19 +01:00
IntegratedQuantum
05bc3720eb Improve log message when the download process is finished. 2023-12-09 19:55:00 +01:00
IntegratedQuantum
2728e053a5 Avoid loading meshes twice, when receiving a chunk twice from the server (which happens when going out of render distance of a chunk for a short period of time). This caused a ton of problems.
Fixes #208
Should fix #224
2023-12-07 21:11:13 +01:00
IntegratedQuantum
7c1ec82b03 Placing blocks is actually doable (no lagspikes)
Moving the mesh update at high priority into the threadpool, allows for faster and more efficient(previously meshes may have been updated multiple times in a row) updates.
fixes #223
2023-12-07 19:57:51 +01:00
IntegratedQuantum
451cac2923 Use a CircularBufferQueue for lighting instead of a PriorityQueue.
A CircularBufferQueue means that we might revisit some points, for example when there is a dim and a bright light source.
However in practice the performance impact of using a PriorityQueue is huge, so this edge case doesn't matter really.

This makes light propagation about 20 times faster and should help with #223, but it doesn't seem to actually make a difference. There is likely something else going on here.
2023-12-07 16:58:50 +01:00
IntegratedQuantum
048b48e5c7 Update lights when placing emissive blocks and fix ambient occlusion
The ground had no absorption. Fixes #222
Helps with #221
2023-12-05 20:09:52 +01:00
IntegratedQuantum
58b2a2627b Implement light propagation.
Fixes #61
2023-12-04 21:49:54 +01:00
IntegratedQuantum
77716b4679 Change how emission textures work. Also fixed a bug in block placing.
Emission now work as a base light, rather than adding to the ambient light.
This makes them produce the same light strength and bloom regardless of the environment.
2023-12-01 19:45:51 +01:00
IntegratedQuantum
91a52e6dae Add anisotropic filtering and make leaves transparent again. 2023-12-01 16:29:32 +01:00
IntegratedQuantum
7d23411a22 Goodbye voxel models 👋
Fixes #215
Closes #164
Closes #162
Closes #160
Closes #150
Closes #145
2023-12-01 15:50:31 +01:00
IntegratedQuantum
2a46592454 Fix integer overflows when the chunk mesh memory gets past 2 GiB.
This was causing corrupt and missing meshes.
2023-11-30 00:38:49 +01:00
IntegratedQuantum
8d561dfff2 Old meshes must be freed before creating new meshes.
Otherwise issues might happen on teleportation.
2023-11-29 17:20:35 +01:00
IntegratedQuantum
76384d1e4d Fix problems with transparency sorting and other data races.
Fixes #207
2023-11-29 15:44:10 +01:00
IntegratedQuantum
6dcfc5d3c9 Bypass the network for local connections when sending chunks.
Fixes #206
Fixes #189
2023-11-29 13:10:55 +01:00
IntegratedQuantum
6b1ba8bbe5 Write directly to the mapped buffer to avoid an extra copy of the mesh data. 2023-11-29 12:48:33 +01:00
IntegratedQuantum
f758ba4c2e Restructure the mesh so it doesn't need to recalculate lighting info in the render thread.
Fixes #204
2023-11-29 12:34:05 +01:00
IntegratedQuantum
4623df4af2 Cleanup some stuff that isn't needed anymore. 2023-11-28 21:49:56 +01:00
IntegratedQuantum
00f8b79ec4 Debug mode is now a slide show.
Mesh generation is much faster though, especially in release.
Additionally a few concurrency bugs, a deadlock and some other minor issues were fixed.
2023-11-28 21:30:58 +01:00
IntegratedQuantum
a61fe26fab Update zig: Andrew broke it all. 2023-11-28 00:04:01 +01:00
IntegratedQuantum
a028d22029 Calculate some available neighbor mesh borders outside the render thread.
While pretty insignificant on its own, this is an important step towards #168 and #61
2023-11-27 21:12:00 +01:00
IntegratedQuantum
e65928fd09 Make the log function work properly when logging in a defer that comes after the stackAllocator is freed. 2023-11-27 21:00:04 +01:00
IntegratedQuantum
d95b19c263 No longer use persistent mapping for the larger gpu buffer.
Apparently there is still some weird synchronization issue in there?
I tried many things to make it work, but ultimately I gave up.

I'm now using glMapBufferRange, which doesn't seem to have any issues.

Fixes #181
2023-11-26 22:55:46 +01:00
m-m-0-m
5a2c3936e5
Update README.md (#196)
* Update README.md

I fixed grammar, capitalization, formality and I altered the YouTube link at the end, so that it skips the intro (not the video will start at the 11 second mark).

* Update README.md

Changed "(AKA a Minecraft clone)" to "(inspired by Minecraft)," as this is more fitting.
2023-11-26 21:23:12 +01:00
IntegratedQuantum
d5dcc4d9be Fix calculation of used memory in LargeBuffer, which caused a crash in the debug window. 2023-11-26 20:41:27 +01:00
IntegratedQuantum
e0ac22668b Fix a stupid bug in the gpu allocator. It maximized fragmentation instead of minimizing it.
Fixes #175
2023-11-26 18:22:46 +01:00