V1.0: Inception
I don't like writing these :)
🌟 Welcome to World
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Step into a persistent sandbox where your creations become part of an ever-evolving shared universe. World introduces a unique take on collaborative building, where every player\u0027s contribution lives on for others to discover and appreciate. \n\n\nIt\u0027s basically Pixels but 3D\n\n\nThis game was whipped up in a few hours as an experiment, let\u0027s see how it goes.\n\n\nI don\u0027t want to spend too much time developing on s\u0026box because I got ",
"attachment": {}
},
{
"type": "string",
"attributes": {
"bold": true
},
"string": "permanently banned ",
"attachment": {}
},
{
"type": "string",
"attributes": {},
"string": "from the discord without any context (but I presume it was because toxicity). This leaves a sour taste in my mouth, I love the s\u0026box community \u0026 the engine but alas I am alien now.\n\n\nIf you have any feedbacks or suggestions, please leave a comment :)",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
}
]
Pocketbase
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "\nThe persistence system utilizes Pocketbase with a streamlined single-table architecture. \n\nCurrently using PocketHost.io for free hosting but might move to the a VPS in future due to reliability concerns.\n",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Table: world\n{\n // System Fields\n \u0022id\u0022: \u0022string (auto-generated)\u0022,\n \u0022created\u0022: \u0022timestamp\u0022,\n \u0022updated\u0022: \u0022timestamp\u0022,\n \n // Position Fields (Integer)\n \u0022x\u0022: \u0022integer\u0022,\n \u0022y\u0022: \u0022integer\u0022,\n \u0022z\u0022: \u0022integer\u0022,\n \n // Rotation Fields (Float)\n \u0022rotX\u0022: \u0022float\u0022,\n \u0022rotY\u0022: \u0022float\u0022,\n \u0022rotZ\u0022: \u0022float\u0022,\n \u0022rotW\u0022: \u0022float\u0022,\n \n // Metadata Fields\n \u0022owner\u0022: \u0022string (required)\u0022,\n \u0022cloudModel\u0022: \u0022string\u0022\n}\n\nIndexes:\n- Unique composite index on (x, y)\n- Index on owner field",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"code"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "\nThis could be any other database but I wanted to give Pocketbase a try since it\u0027s pretty niffy, it comes with a HTTP API which plays very nice with s\u0026box. You can set rules for CRUD operations and much more.\n\n\nIn future, it might be worthwhile looking into the live-streaming functionality so when a player persists props, you can see it instantly.\n",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
}
]
Loading Props
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Every second, once you\u0027ve moved X amount, you query pocketbase for props near your X,Y location. It returns all those props.\n\n\nAny prop already in the scene (which is in your radius) is ignored, any new props are spawned in a belated order (so you don\u0027t load 100\u002B cloud assets at once, at an attempt to smooth out fps spikes). Any outdated props are removed.\n\n\nPersisted props are a dumbed down version without physics or intractability (Basically static).",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
}
]
Saving Props
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Once you press MMB (persist keybind), your local props are bundled up and inserted into the master table. \n\nThey then become globally available for every user (simple right?)",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
}
]
Sandbox
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "The sandbox aspect in World is just Scenebox 2 (amazing), which has been cut down to its core and only the fundamental building remains.",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
}
]
Showcase
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "World has only been out for about 12 hours and this is what some players have built so far :)\n",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
},
{
"text": [
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2599016,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/7f1337bb/9528/4b98/ac1d/8ad1ac2ac286.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/7f1337bb/9528/4b98/ac1d/8ad1ac2ac286.png",
"width": 1738
}
},
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2786815,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/62cb7357/1495/4626/b8be/9a92507c228b.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/62cb7357/1495/4626/b8be/9a92507c228b.png",
"width": 1738
}
},
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2711996,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/16409028/8bc4/4258/a445/120b384655ec.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/16409028/8bc4/4258/a445/120b384655ec.png",
"width": 1738
}
},
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2818993,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/5d74dcc5/eebd/4d94/8ea3/e67e8f32d229.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/5d74dcc5/eebd/4d94/8ea3/e67e8f32d229.png",
"width": 1738
}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"attachmentGallery"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "\nPlus the general brain rot",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
},
{
"text": [
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2224464,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/bb280716/408d/4ccb/9114/48263f0f62f0.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/bb280716/408d/4ccb/9114/48263f0f62f0.png",
"width": 1738
}
},
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 2907359,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/1df014bd/af18/4ea5/8217/4801387ae1e1.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/1df014bd/af18/4ea5/8217/4801387ae1e1.png",
"width": 1738
}
},
{
"type": "attachment",
"attributes": {
"presentation": "gallery"
},
"attachment": {
"contentType": "image/png",
"filename": "image.png",
"filesize": 3419116,
"height": 929,
"href": "https://cdn.sbox.game/upload/b/30d5708d/6f6f/4c97/bedd/e1703674c6e9.png",
"uploader": 76561198047807800,
"url": "https://cdn.sbox.game/upload/b/30d5708d/6f6f/4c97/bedd/e1703674c6e9.png",
"width": 1738
}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"attachmentGallery"
],
"htmlAttributes": {}
}
]
Future
[
{
"text": [
{
"type": "string",
"attributes": {},
"string": "I have a few ideas, we\u0027ll see how it goes.\n",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Prop streaming (See instantly when someone persist props globally) - Currently you have to unload/load the area, unless you\u0027re in the same game.",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Ability to see timestamp/creator (we store this but has no use at the moment)",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Ability to curate props so we can remove random trash (community voting?)",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Ability to claim areas for building - Although this is another game idea I have, basically Plots from Minecraft.",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Leave messages around the map for others to discover",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Ability to delete/edit your persisted props - This is difficult because auth tokens aren\u0027t guaranteed, but maybe it\u0027s good enough?",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
},
{
"text": [
{
"type": "string",
"attributes": {},
"string": "Better loading/view distance - You can load the entire map at the moment but it\u0027s laggy initially, I might expose some settings in the Q menu for you to play around with.",
"attachment": {}
},
{
"type": "string",
"attributes": {
"blockBreak": true
},
"string": "\n",
"attachment": {}
}
],
"attributes": [
"bulletList",
"bullet"
],
"htmlAttributes": {}
}
]