-
-
Notifications
You must be signed in to change notification settings - Fork 251
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Voxel metadata #98
Comments
Closing as this feature is implemented |
"Access by VoxelStream Because such metadata is tied to voxels and blocks, it means it can be generated, loaded and saved by voxel streams. This is very handy when you want to include more than just voxels to the generating process, such as trees, storage chests or NPC locations. And of course, allows this data to be saved next to voxels when using a file-based stream." More information here: Zylann/voxelgame#103 (comment) |
I think it's just sent alongside voxels normally.
Not yet. Haven't got the time to make one.
Not to my knowledge.
Spend time on it, which personally I dont have because of many other things, I do this on my free time, so unless someone else figures things out themselves, it will be done when I get to do it, no ETA
Storage chests can be some metadata that's just an array of items, which you can recognize as being chest inventory if the type of the voxel is a certain value. NPC is more complicated. Currently there is no entity system, you have to build this yourself using regular nodes, signals and virtual methods exposed by terrain nodes so you can hook up to chunk load/unloads to know when they should spawn/despawn. I'm thinking of it but got nothing solid yet.
Not in the scope of this project |
Okay that is good to hear and get some confirmation for too. That should simplify things a lot by having everything already be together to work on. Multiplayer is key.
I'll try to make an example and share it as I work to prototype entities and storage systems.
I should work on getting this be a first then we can have things be in a better position for everyone with working multiplayer entities and storage system.
Okay I will start spending time on this and aiming to make incremental progress and I think when its in a highly working state share the multiplayer entities and storage systems with the community so everyone can benefit. Bit by bit.
That is perfectly good too. We already have working multiplayer player inventories. So it seems to be a matter of database and server work. We already have a great start to expand upon in the Blockygame demo's individual player inventories. This can be solved with conventional means and I think there are enough community resources and personal to solve this bit by bit as its own puzzle after this one in order of importance. So as to get the entities and storage systems working first. If we can get multiplayer chunk data to save chest / storage data we are 4/5 the way there and that is a massive success. In that case it would be like real life where everything is accessible in the open-world. So then it becomes a social matter. Yet even then we are at ~4/5 solved for player account data storage. So as long as the chunks / storage systems work and save with the multiplayer chunk data. Meaning that the storage data be saved and load and unload fine in the voxel server chunk data system and work good with the multiplayer and chunk streaming we have a massive success.
So with chests its a matter of of testing / prototyping / working with Voxel Metadata and in thoery it should eventually work with enough tinkering and testing with what is already there with what is there to work with Voxel metadata systems in the Blockygame demo? So for Chests to get working just tinker away with Voxel metadata values, add a modified inventory interface and when the chest block is destroyed it drops all blocks onto the ground as items to pick up type of thing? As in it should be possible to copy the minecraft style of chest in Blockygame demo with enough work with the voxelmetadata systems that are already there? There probably needs to a game mechanic system where as when a block breaks it drops an item that can be picked up. Also the chest when broken should drop all contained items like in Minecraft. Does Blockygame already support / have examples of when the blocks are broken they turn into items that can be collected by the player or must this be made too?
"Signals and virtual methods exposed by terrain nodes so you can hook up to chunk load/unloads to know when they should spawn/despawn." What are your thoughts and suggestions for getting the entities and storage systems to work in Blockygame? What should be done to test say the entity spawn block and chest voxel_metadata systems? I just need some guidance and I can spend a lot of time on working of these experimental examples of critical game making creative tools for the community. All feedback is welcome. This is my goal is to get something close to this patch added into Blockygame; for like 3/4 of Minecraft's progression and player trade and economy systems was added with this one update: Zylann/voxelgame#103 (comment) |
https://github.com/Zylann/voxelgame/blob/2147d8152ac860c616b764786f736e0cd7a4d844/project/blocky_game/blocks/blocks.gd#L43 This works: "path="res://blocky_game/blocks/planks/planks.obj" id="7"]"" regular people can use that but how on earth are people going to more more "uid://dm05scqbatw2v" parts? Also where are the textures? So we have: Like how do we add blocks step by step to test? Are those weird scrambled numbers and letter from a sort of 'easy' way of doing things or a compression system? I don't know what to do after reading the block documentation either? https://voxel-tools.readthedocs.io/en/latest/api/VoxelBlockyLibrary/ So this started with this: It was like my monkey emotion brain went like this: Ah piece of chest just needs new block find how to make new block and add metadata to new block. Add block to inventory in a test clone iteration of blockygame, test over and over be dumb until it works then pretend to be smart got it 1st try. So I'm lost lol how do we add the new blocks mate? Okay I will add the art for chest okay, it does not need animations its like mission 1 get new chest block and add meta data and test. How do we the add the blocks, my brain is not happy with the logic math parts because the documentation is lacking a guide for how to add blocks and I think the weird numbers and letters are strings that come spat out of a machine system to make big things small. I remember them from working on WoW databases and Baldur's Gate and Diablo and it needs a machine system / code to make it readable or like you process ew4ed54f56r45 and it says like 'line 6 column 4 crude shortsword'. I gotta think about this. |
Excuse me, @WithinAmnesia, but could you please stop reporting all of your progress here? Many people are watching this project and we are here to view progress on this project, not your own. It is best to only post inside issues when you actually NEED help and can't figure it out on your own, not to tell people about your unrelated project that has almost nothing to do with this one, as that is considered spamming, and is against GitHub ToS. There are better places to do that, and I'm tired of receiving random emails every 5 minutes because you want to talk about your project in a place that you shouldn't be. |
Okay @AimiIsFat maybe I should go and post more on the voxel_game / blockygame repo if I was in the wrong space to ask questions, of which I am not for this is on topic as much as it gets. I literally made chest assets today to help further this specific topic of voxel metadata. I disagree with your statement and opinion because I am asking legitimate questions that are in the right places and they need space and I need help at times too. Also just because its annoying you does not mean it is spamming for there's no malicious or excessive posting but rather the opposite in that I am genuinely trying to develop more on what is here. As in specifically a general case use examples of voxel_metadata for not just myself but the community to use to make more than just my game example but for everyone's game too. For there are a lack of working examples for storage and entities; this would greatly help not just myself but you and the author and everyone who uses this to make a working game. The author does not have time for random internet drama and this malarkey. This stuff is HARD okay, I don't ask willy nilly I test for hours and then when i am really stuck I ask for help mate. They are busy and said so consistently but I will not take any malarkey from the community without good reason of which this does not have any. This is a waste of time arguing and I wish I spent my time and other's time more productively reading my rebuttal but i will refute this charges and I will defend myself rightly. Comment 2 reply (from below comment): @AimiIsFat I appreciate the politeness. I have separate issues that if I make a giant post about crammed together, it gets confusing for many people; including myself. Yet it just gets out of hand a super mega post with 20+ different questions solved and unsolved across 1-3 months. As like imagine a kitchen but you only have 1 breadboard worth of counter-space for everything. Also I need to ask questions and speak. This can be a messy process and I'd like for it to be neat but it can be messy. Yes posting a lot can look excessive. Yet also I have a lot of work to report and when I spend I think its now at least 20+ hours in ~3 days on this; I will find issues and somethings are not easy to solve. I am sorry that the 68 other people are looking for other things but I'm not sure what to do about that and asking no questions is not a realistic answer either. I am trying to talk to the author of this project about technical details. I'm not trying to be a message spammer or an unpleasant person. I wish there was a better way to talk with the main authour and not bug the 68 other people. Even these messages I am uncomfortable with for it is drama and not work. I do re-edit things many times to add and to give new information. Also its natural to get new questions and puzzles when working a lot. For example I have made efforts to use the blockygame repo and ask specific questions to not be unnecessarily excessive or unpleasant on here. Zylann/voxelgame#104 . I do care about getting along with people and I am not immune to emotion either. There is a lot of work to be done still. I will try to not post any more un-work related comments. I have to focus on work and being productive. Take care mate. |
@WithinAmnesia, the entire issue was that you're using the issue tracker incorrectly. Please study GitHub etiquette, and I would suggest you try to understand people before immediately assuming that they're some evil villain whose mission is to make you sad because they disagree with you. 🙃 Also, it is spamming by your own definition, "excessive posting." 4 consecutive posts in under 6 hours is far too many, and you're misusing the platform as a whole. Don't post progress updates, just ask questions. When you finally finish, throw it into a pull request. The maintainer will tell you if something's wrong. If you have another question and you haven't yet received an answer to your previous one, just edit your previous message. Every message you send is another email sent to sixty eight different people. Many of which, including myself, aren't watching this project just to see you post about some texture you made which might not even be added. Also, just a tip: It's best to spell properly and not use slang in a formal environment. To summarize: open one issue, ask all questions there, and make sure the project maintainer wants this stuff added. Don't post progress updates, just finish it and make a pull request. The project maintainer will tell you if anything is wrong. |
@WithinAmnesia, I do get how you feel, but there is a bit you should know so I'll just elaborate on that one last time since you don't seem to understand it all the way. Also, it is fine to make another post when someone replies to you, just not making several posts when it is unnecessary. Anyone else reading this, feel free to skip it, unless you just want some general tips on GitHub usage.
There are 2 different solutions here. The first being to take it to the project's Discord, which is linked in the README. Not entirely sure what they do there since I'm not in it but typically project Discords are good for that if you are serious about helping. The second being to read over your posts before sending them. You can use that to see which information isn't important to send, how to format the post better, and ways to make it easier to read. If both fail, it might be a good idea to rewrite it from scratch. If you have that many questions, you may want to also get better at programming before trying to contribute, as messy or inefficient code will likely not be accepted into a project. Also, if you write a big post with a lot of questions and they go unanswered, the issue is likely not the post. The issue is most likely that the project maintainer does not have time to answer them. In this case, you should probably give up. I do the same if I don't receive a reply. Posting in other places might annoy them enough to make them respond to you, but they likely won't be happy about it, even if they don't show it.
You can, just keep it in one issue. People can unsubscribe from specific issues if they aren't interested, but posting on other issues means that people will have to go and manually unsubscribe from all of them, even if they might be otherwise interested in that issue. I would really have no problem if you just did that.
It typically can be neat. You don't need to report your work until you send in a pull request. I recommend you view other issues and study how they're written.
Discord. Otherwise, just keep it in one issue and follow the other tips.
Though the writing is a bit messy, I think it is good that you tried that. However, you should've kept it in one issue. If the project maintainer doesn't respond then they likely don't have time for it or don't want to respond for some other reason. It is best to respect the project maintainer and let them answer when they want to, rather than trying to get their attention by posting elsewhere, even if this means that your questions never get answered, otherwise it is disrespectful. Project maintainers are (usually) volunteers, and are not obligated to answer everything you ask. Anyways, that is all. I will refrain from further replies to avoid bothering the others watching this repository. Just keep the posts in one issue, thanks. |
How to add new blocks in the Blockygame demo that work in multiplayer solved: Zylann/voxelgame#104 (comment) @nonchip That is not very productive. This community has polite people too and I'd rather not have random drama in the comment section that is not productive. This issue is still ongoing for chests have not been implemented for the public. I have a working example for other people to learn from and use open source forever free after I solved a lot of not documented critical parts that are required to do technically difficult tasks such as to add blocks to the community blockygame demo that work in a previously undocumented section. I am growing weary of this increasing toxicity from a few people, yet I remember from the community voxel_game discord there are more positive people. Who are doing their own productive thing rather than feel the best action they can do is complain unproductively about new tested working community examples in a closing statement update. Why is it so seemingly hard for so many people so often to be polite to strangers and at least judge themselves before they judge others when talking anonymously? Treat people well if you want to be treated well too. Also your actions undo your justifications. As in for why ping the very busy author over random unproductive toxic drama too? As like this is just unfortunate for others to read at this point and I feel it is an unfortunately embarrassing part of the community. I am not proud of these kinds of overly negative comments where I author them or not; I care still about the well-being of people in general. I know there are really good mannered polite people here who do a lot of community good. Additionally if keenly noted one would see I did learn and listened indeed and found my way to the community discord and I am not here excessively pontificating anymore being occasionally repugnant nor excessively tiring. As this comment section is unfortunately beginning to feel as if it is spiraling slowly down the proverbial drain into wanton negatively. Yet unfortunately in spite of my best efforts at diplomacy and taking the higher road and choosing to be even more responsibly minded towards incredibly delicate souls. Also I can report that I am not of the best spirits after my efforts towards positive conversation have been seemingly misunderstood. I put effort towards fostering a more positive and polite area of conversation and discussion of ideas for creative productive people. This is not trivial nor primordial nor instinctual and far from simple and automatic in nature but rather this effort to do well for the community requires consistent thought, evaluation and diligence and a value of the community past ones own passing sensitivities. As for to my points I'm already predominately on the blockygame repo too and the community discord. There my feelings and thoughts are shared in part, no one can accuse me of not trying to do community good now for I have done so in near exhaustive detail and very late in the evening for myself might I add. Please everyone just strive to be more positive, life goes better being more positive and its a lot more productive and fulfilling. Everyone take care. |
…ability). How To Add New Blocks That Work In Multiplayer. Version 000.006.1 (Stability). https://gist.github.com/WithinAmnesia/fd2ef44f29da3d334c4444a2fb2f403c + Zylann/voxelgame#104 + Zylann/godot_voxel#98
@WithinAmnesia so you learned nothing, great. since @Zylann didn't do the right thing and lock this issue yet, can you at least stop spamming everyone else with offtopic BOOKS? this is a 2020 issue about implementing voxel metadata that's been closed because it's NOT an issue anymore. AND has less than nothing to do with anything you said after Zylann answered your first round of almost related questions. |
Voxels alone can store a very limited set of data. Even if we have up to 8 channels available with soon an option to choose how many bits they have each (between 1 and 64), they are not fit for more complex data such as strings, arrays or data dictionaries. Also, channels are fit for frequently used data. If they get used for rare data, it would waste memory.
Such metadata would largely be unused by the module, but more up to your game to interpret and use.
Voxel metadata
This allows, for specific voxels, to store aribtrary data (most of what can fit in
Variant
) for individual voxels. It could be accessed the same way, only with a different function, like so:Of course, this may be used sparingly, as this metadata is often much heavier than voxels. It would be stored in the block as a dictionary, mapping voxel position to the piece of data.
Block metadata
While it would probably have less uses, I would also add per-block metadata. This would allow to store even more aribtrary data, tied to a block, not a particular voxel. Such data could be things like "visit count", "average temperature", biomes, cached fluid states or an array with tree positions.
Doing this one may need to have a block access API though.
Access by VoxelStream
Because such metadata is tied to voxels and blocks, it means it can be generated, loaded and saved by voxel streams. This is very handy when you want to include more than just voxels to the generating process, such as trees, storage chests or NPC locations. And of course, allows this data to be saved next to voxels when using a file-based stream.
The text was updated successfully, but these errors were encountered: