IntelligenceModding / AdvancedPeripherals

Advanced Peripherals adds many new features to the computercraft modification
https://advancedperipherals.netlify.app/
Apache License 2.0
100 stars 70 forks source link

The future of the smart glasses. #515

Open SirEndii opened 11 months ago

SirEndii commented 11 months ago

Describe your idea

The upcoming 0.8 update is set to bring a significant transformation to our AR Glasses, to the extent that I've entirely replaced the old system with a new one and rebranded them as Smart Glasses.

I'm initiating this issue request to establish a centralized place for discussing the forthcoming developments and desired features for these glasses.

Furthermore, to enhance the centralization of our Smart Glasses' future, I will compile a list of all presently open issues related to Smart Glasses/AR Goggles:

Features:

Bugs (Since the old system is gone, these bugs should also be gone):

Features marked with (?) are just ideas which will not be 100% added to the game

When I finished a specific feature, I will post pictures and upload jars to test them

The progress for the 0.8 update is also "documented" via the commits on GitHub →Branch 0.8

PABessero commented 11 months ago

About the coordinates system:

Will it be absolute (in world / MC coords) or relative (either to the block the goggles are linked to, or the player that has the goggles)

Same question for the dimensions, at least for the AR part

SirEndii commented 11 months ago

About the coordinates system:

Will it be absolute (in world / MC coords) or relative (either to the block the goggles are linked to, or the player that has the goggles)

Same question for the dimensions, at least for the AR part

Discussable

To retrieve player coords? Absolute and relative, the dimension would be an extra property you can retrieve from the glasses. To retrieve coords from blocks/objects in the world? Also, probably both, but I would make it configurable to disable absolute coordinates

Note that there isn't a block anymore. So all coordinates would be relative to the player's eye position I am gonna post some pictures in a minute

SirEndii commented 11 months ago

small preview

The glasses with three peripherals and the overlay module:

image

image

zyxkad commented 11 months ago

I want the glasses can render 3D blocks if possible, so we can use computer to make 3D games. It maybe have to create another dimension. If the works are to heavy for you then nvm.

SirEndii commented 11 months ago

That's a thing I will 99,9% add to the glasses. 🙂

PalTheTaur commented 11 months ago

For the 3D rendering, we would definitely need some way of rendering mass blocks instead of 1 by 1, though, the mention of 3D games by the person above, could maybe have a “VR mode” where it just is a whole different world and the computer is free to overwrite blocks and stuff, but that is definitely excessive.

SirEndii commented 11 months ago

Yeah, that's such a thing I want to discuss when I start making the feature How players think the endpoint should look like

zyxkad commented 11 months ago

I opened an issue for it https://github.com/SirEndii/Advanced-Peripherals-Features/issues/3

PalTheTaur commented 11 months ago

hey for the GUI peripheral idea, even without letting a whole custom GUI maker exist, A preset GUI based on some common vanilla and modded GUIs with some button events, and something like the inventory API would be a good way to atleast have a basic version, but a custom GUI would be killer.

Would also save me from having this janky thing I currently have set up in my world with ender chests mod.

bmartin127 commented 10 months ago

will 1.18.2 have this new system?

SirEndii commented 10 months ago

@bmartin127 If I have the motivation and time to backport this, yeah I guess I will backport this, but I need to see how much work this acutally is.

getkirill commented 9 months ago

can't wait for smart glasses to be added :)

SirEndii commented 1 month ago

Finally got some time to work on the glasses Got object syncing to the client done and basic rendering

(This is a YouTube video, you can click on it)

Watch the video

SirEndii commented 1 month ago

This is my current test script It deletes the objects that were created before(from another script) Creates two with some different sizes and colors Waits a second and then changes the color and size of the objects for testing

The objects are always in sync with the client. If one was updated via a function, it syncs the changes to the client and displays the change without deleting the old object and creating a new one. Essentially preventing flickering.

test = peripheral.wrap("back")

test.clear()
sleep(1)
panelOne = test.createPanel("one", {maxX = 160, maxY = 160})
panelTwo = test.createPanel("two", {opacity = 0.3, x = 500, y = 500, maxY = 40, maxX = 40, color = 0xFF8448})

sleep(1)
panelOne.setColor(0x003c9c)
panelTwo.setMaxX(300)