glua / gm_voxelate Goto Github PK
View Code? Open in Web Editor NEWA module for voxel support in Garry's Mod
Home Page: https://glua.io
License: Other
A module for voxel support in Garry's Mod
Home Page: https://glua.io
License: Other
did the shaders change anything and do I have to install extra dependencies?
It actually truncates the data!
This may or may not be the source of some crashes. Further investigation required.
Currently the Lua API is documented pretty well, but a lot of the module code is terrible.
Perlin noise?
what do bois
how are we going to handle biomes?
my branch is a mess rn guys
The old module did a lot of wonky shit. Which included testing the Lua state to see if it was running on the server or on the client. I'll get rid of this ASAP.
Wait until the current batch of shit is under control.
Probably do the same thing lua-side?
Should get more consistent lighting if it were controlled exclusively through lua.
The first step is to make a simplified world repeater that only wraps the world back on itself.
This functionality is for testing the more advanced system and will probably not be kept.
Options (4) (5) and (6) would allow greedy meshing. Honestly none of them really seem viable. Option (6) would probably still require some form of (2) and (3).
You have to specify a texture atlas, provide its dimensions, and use indices into the atlas whenever you want to use a texture. Attempts to use a combination of (2) and (3) above. You have to use my atlas generator if you want padded atlases with good mipmaps.
Let user code specify a base directory filled with pngs. Use the name of the png in place of an atlas index. Auto-magically generate the atlas with correct padding and mipmaps. Essentially this would probably just involve merging the texturing utility into the main codebase. The only problem I can forsee is that it could take a while to generate the atlas, so it might be a good idea to cache it.
Swad wanted to do a thing. Not sure if still wants to do thing, and I still have some shit on my plate, but here's a list potential features for UPDATE.
Possible Goals:
There's a lot of other crap that COULD BE useful later, but I think this is a good list to start with.
Non-Goals:
0xmagic header: 0xB00B1352
(boobies 2)
needs to be saved across a bunch of files and needs to be corruption resistant.
Ideas?
indexedVoxelWorldRegistry.insert(indexedVoxelWorldRegistry.begin() + index, new VoxelWorld(config));
https://github.com/jseward/enetpp
just a set of headers that does multithreaded dicksucking for us
This means that each block will occupy more than 2 bytes (when we implement this)
kind of like damage values to store extra data in blocks??? how do we implement this???
how do we implement chests, for example?
@SwadicalRag I've merged my changes into your branch. No clue if shit works, but it compiles.
In future can we try to coordinate large scale refactors better? In your defense, I had a lot of smaller renames, but the massive amount of changes in vox_voxelworld.cpp paired with the file rename made git angry.
If it's really fucked up I have most of tomorrow free, but I also really want to work on some of my other projects.
on my better_voxel_storage branch
😩
Compiled the voxelate shader and installed it properly, but it doesn't seem to be doing anything when I apply it to an object.
I had the same issue when I added my very own vertex shader to a pixel shader.
With the hiatus gone, and development well underway on voxelate, I feel that it is important that we talk about how to tackle an arbitrary, infinite world with gm_voxelate.
In the past, we've been avoiding this due to the sheer complexity of introducing an infinite or arbitrary world system into a game like Garry's Mod that uses a static, limited world size (which, frankly, is quite tiny!).
However, now that an infinite world is definitely on our to do list, it is time to open that can of worms. So, how do we do it?
In the past we’ve seen some pure Lua implementations (and I’ve made one before too, before shortly giving up on my efforts) that divide the world into chunks and repeat a central chunk serverside and create an illusion of an infinite world clientside. This was one of our considerations for gm_voxelate, but from personal experience I heavily disagree.
Now, now it seems like packaging our own physics engine and writing the logic to a world management system may be too hard, but I feel that this is the right way to go.
Firstly and importantly, we won’t have to go through the worry of figuring out how to interface with some of gmod’s shittiest libraries. Given that we’re already including a binary module both clientside AND serverside, I think that it’s only appropriate that we use the binary module’s capabilities to its fullest and include whatever libraries we need, rather than depending on or hacking a shitty one within gmod.
So, summarised:
So, what now? I believe that we shouldn’t rush into the implementation phase of this world management system just yet. Careful planning is key to pulling off such an engineering effort.
In the next few posts I’ll outline some concepts and ideas that we’ll have to take into account when designing this system.
-- SWAD OUT
Exception thrown at 0x503E1F87 (AcLayers.dll) in hl2.exe: 0xC0000374: A heap has been corrupted (parameters: 0x00000000).
Unhandled exception at 0x503E1F87 (AcLayers.dll) in hl2.exe: 0xC0000374: A heap has been corrupted (parameters: 0x00000000).
if (verts_remaining == BUILD_MAX_VERTS) {
CMatRenderContextPtr pRenderContext(IFACE_CL_MATERIALS);
pRenderContext->DestroyStaticMesh(current_mesh);
}
else {
meshes.push_back(current_mesh);
}
it appears to occur when pRenderContext->DestroyStaticMesh
is called
Guurgle tried this morning and had some mad issues with the sourcenet files. I can probably get shit set up on my server if nobody else wants to do this.
Terminology:
Process:
Compression lib doc says compression buffers need to be at least 5% larger than input. IIRC this is not the case right now. I vote for a good round 9000 byte static buffer but we're going to want to keep track of this in case the chunk size changes.
The exposed C++<->Lua api is fairly consistent, but the pure Lua API is messy as fuck.
Here's how I'm doing it:
gm_voxelate
Thoughts @birdbrainswagtrain ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.