Giter Club home page Giter Club logo

godotos's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

godotos's Issues

Adding files that aren't local

Hello,

I hope this message finds you well. I apologize if this isn't the appropriate channel for communication, but I couldn't find any other means to contact you directly.

Firstly, I wanted to extend my sincere gratitude for providing your Godot project. It has been immensely helpful for a personal project of mine, particularly as I'm creating a birthday gift for my brother (April 7th).

I must admit, I'm not a professional when it comes to Godot, GitHub, or programming in general. However, I've been exploring your project and I had a question I was hoping you could assist me with.

Is there a way to ensure that specific files, ones I specify, are included with the game when it's downloaded and played on another computer? Specifically, I'm interested in ensuring that any pc who plays the game will have access to certain files. The code I'm referring to (i think) is desktop_file_manager.gd.

Any guidance or assistance you could provide would be immensely appreciated.

Thank you once again for your contribution and for any help you can offer.

Best regards,
Markus

Game window resolution is tied to screen scale

The resolution of game windows is currently tied to screen scale. Zooming in causes games to be rendered in a lower resolution, zooming out causes games to be rendered in a higher resolution. This isn't immediately noticeable but can cause fuzziness if you're using a screen scale of 1.25 or higher.

Pictured: Game gets rendered in comically small resolution after increasing the screen scale dramatically.

Screenshot_20240121_154028

This technically is working as intended since Viewport resolution is directly tied to its size. Scaling GodotOS up causes everything to be larger without changing the size of Control nodes. That means that you're technically just zooming in the viewport without changing the resolution.

Unfortunately I can't find a way to make resolution separate from the Viewport's size. I've tried increasing the size and scaling it back down but that causes all sorts of weird behavior and lag.

If anyone figures something out, do let me know.

Adding HTML/CSS/JS supporting

For full funny experience you may add HTML/CSS/JS supporting or create own Fron-ent dev language for more funny experience for users

Directory Traversal Exploit

Hello,

I was curious about the security of this since it interacts directly with the host filesystem.

I found that while I can't find a way to read arbitrary files due to you checking whether a file exists (at least as far as I found), I could still write to arbitrary file locations that don't exist already. This could be a problem if I could write a config file somewhere. In general, this program probably shouldn't be able to write outside of the files directory (at least from user actions).

Here's some proof.
image
image
image

Hope this helps you squash a security vulnerability!

If you wanted to read more about Directory Traversal exploits, OWASP has a pretty good article: https://owasp.org/www-community/attacks/Path_Traversal

Add 3d game supporting system(like game from Godot) and GodotOS updating

This project needs this issue for the reason of good oportunities of Indie Godot Game developers! Everyone can add own game to your Godot OS on the free or maybe not free licunse(on your choise) and after that others visitors will play that game and testing it!)

About Updates
For new changes and best perfomance fro users you can create updating system for updating GodotOS app like on windows or linux operating systems. It will be much comfortable for non-programmer users!)

wordwrap for text viewer

Hi. Nice work on GodotOS so far! May I suggest that you add a wordwrap option for long lines of text to wrap around and be visible without scrolling to the right?

Unfocused window responds to Input

Issue

All windows receive and handle (keyboard) input when more than one window is opened.

Plan

Create an InputEvent manager which register the windows (or other node) that is focused and pass InputEvent to it.

Draft

Below is some random copys of similar things form my project, please ignore diff.

extends Node
class_name InputManager


@export var camera:Camera3D

@export var initialObject:Node
var currentObject:Node = initialObject
var allObjects:Array = []


func registerObject(object:Node) -> void:	## Register and switch to the object that needs to receive input events
	if !allObjects.has(object):
		if getParentObject(object):
			getParentObject(object).exit()
		object.registerObject.connect(registerObject)
		object.removeObject.connect(removeObject)
		object.enter()
		allObjects.append(object)
		currentObject = object


func removeObject(object:Node) -> void:	## If a parent object exists, recursively unregister the object and its child nodes and switch to the parent object
	var parentObject := getParentObject(object)
	if allObjects.has(object) and parentObject:
		object.registerObject.disconnect(registerObject)
		object.removeObject.disconnect(removeObject)
		allObjects.erase(object)
		var childObject := getChildObject(object)
		if childObject:
			removeObject(childObject)
		parentObject.enter()
		currentObject = parentObject
		object.exit()


func getChildObject(object:Node) -> Node:
	if allObjects.size() > 1:
		if allObjects.has(object) and allObjects.find(object) < allObjects.size() - 1:
			return allObjects[allObjects.find(object) + 1]
	return null


func getParentObject(object:Node) -> Node:
	if allObjects.size() > 1:
		if allObjects.has(object) and allObjects.find(object) > 0:
			return allObjects[allObjects.find(object) - 1]
	return null


func _ready() -> void:
	# Initialize objects
	if initialObject:
		registerObject(initialObject)
	else:
		push_warning(self.name, ": Initial object not set")
	# Capture mouse pointer
	Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
	# Initialize camera settings
	camera.fov = Sett.field_of_view
	camera.current = true


func _input(event:InputEvent):
	if currentObject:
		currentObject.handleInputEvent(event)


func _unhandled_input(event:InputEvent) -> void:
	# Press "Back" to pause and release mouse capture.
	if Input.is_action_just_pressed("back") or Input.is_action_just_pressed("ui_cancel"):
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
		Global.getUIManager().openUI("PauseUI")
		Global.pause()
	if currentObject:
		currentObject.remainingInputEvent(event)

func _process(delta:float) -> void:
	if currentObject:
		camera.global_transform = currentObject.camera_position.global_transform
		currentObject.updateFrame(delta)


func _physics_process(delta:float):
	if currentObject:
		currentObject.physicsUpdate(delta)

Add Chromium as a browser (via CEF)?

Adding a browser to GodotOS is a long-term goal that might never happen.
This issue is just for tracking interest and giving some context about it, since it's a feature a ton of people requested.

Lecrapouille is porting the gdcef (Godot Chromium Embedded Framework) extension to Godot 4, which means it would be technically possible to run Chromium inside of GodotOS. It currently works but is incomplete and may contain issues.

When gdcef is stable, I may look into adding it to GodotOS. There are some things to consider though:

  • How big gdcef is: I tried making GodotOS as small as possible, the web version being 8mb and desktop versions being roughly 22mb compressed. Adding Chromium would make the file size many times bigger. This means adding gdcef to the web version will likely never happen.
  • How stable GDExtension is: GDExtension is relatively experimental. A major Godot update can introduce breaking changes to GDExtension which gdcef relies on. This could cause issues when upgrading to a newer version.

We could separate GodotOS to a version that includes Chromium and a version that doesn't, but that complicates things. GodotOS was also built in mind to keep things as simple as possible and make it easy to build upon and learn from. Can adding a big extension harm that goal?

Again, this issue is mostly wishful thinking. There aren't any immediate plans to include a browser but I hope this gives some answers before someone inevitably makes an issue asking for it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.